如何创建向量的向量

How to create a vector of vectors?

本文关键字:向量 创建 何创建      更新时间:2023-10-16

到目前为止,我有这段代码: #include "std_lib_facilities_4.h"

void numbers()
{
    vector<int> first;
    vector<int> second;
    vector<int> third;
    vector<int> fourth;
    vector< <vector<data> > all;
    for (int i = 0; i <= 9; ++i)
    {
            first.push_back(i);
            second.push_back(i);
            third.push_back(i);
            fourth.push_back(i);
    }
    all.push_back(first);
    all.push_back(second);
    all.push_back(third);
    all.push_back(fourth);
    cout << all[0] << 'n';
    cout << all[1] << 'n';
    cout << all[2] << 'n';
    cout << all[3] << 'n';
}
int main()
{
    numbers();
}

如何创建由向量"第一"、"第二"、"第三"和"第四"组成的向量"全部"?

你实际上有一个向量向量,你的all向量有什么问题?您的代码还有其他问题:

我假设您的数据是这样的:

typedef int data;

你这里有一个小错别字:

vector< <vector<data> > all;
        ^---- remove it!

这是错误的:

cout << all[0] << 'n';
cout << all[1] << 'n';
cout << all[2] << 'n';
cout << all[3] << 'n';

您应该像这样迭代每个子向量以输出所有元素:

for (auto t : all[0])
  cout << t << ',';

简单。只需执行以下操作:

vector <vector <int> > group

或者出于可读性目的,您可以按如下方式typedef vector <vector <int> > BigVector然后初始化:

BigVector group

可以使用 push_back() 成员函数,但提供vector <int>作为参数。

不清楚你想要什么。是要定义向量的向量,还是将所有四个向量的所有元素放在一个向量中。

如果你想做第一个任务,那么可以通过以下方式完成

void numbers()
{
    vector<int> first;
    vector<int> second;
    vector<int> third;
    vector<int> fourth;
    for ( int i = 0; i <= 9; ++i )
    {
            first.push_back(i);
            second.push_back(i);
            third.push_back(i);
            fourth.push_back(i);
    }
    std::vector<std::vector<int>> all( { first, second, third, fourth } );
    for ( const std::vector<int> &v : all )
    {
        for ( int x : v ) std::cout << x << ' ';
        std::cout << std::endl;
    }
}

如果要从其他四个向量的所有元素创建一个向量,则该函数可以如下所示

void numbers()
{
    vector<int> first;
    vector<int> second;
    vector<int> third;
    vector<int> fourth;
    for ( int i = 0; i <= 9; ++i )
    {
            first.push_back(i);
            second.push_back(i);
            third.push_back(i);
            fourth.push_back(i);
    }
    std::vector<int> all = first;
    all.insert( all.back(), second.begin(), second.end() );
    all.insert( all.back(), third.begin(), third.end() );
    all.insert( all.back(), fourth.begin(), fourth.end() );
    for ( int x : all ) std::cout << x << ' ';
    std::cout << std::endl;
}