我想创建一个嵌套数组,其中包含另一个数组中的所有元素,但分为两个

时间:2019-11-08 07:06:52

标签: c++

我想创建一个嵌套数组(v2),该数组由另一个数组(arr)中的所有元素组成,但分为两个。

std::vector<std::vector<int> > v2;
int arr[8] = {0, 1, 2, 3, 4, 5, 6, 7};
//I want the v2 to be: {{0,1}, {2,3}, {4,5}, {6,7}}
std::cout << "v2.size = "<< v2.size() << '\n';
for (int i = 0; i < 4; i++) {
    for (int j = 0; j < 1; j++){
    //I want the v2 to be: {{0,1}, {2,3}, {4,5}, {6,7}}
        v2[i][j] = arr[2*i];
        v2[i][j+1] = arr[2*i+1];
    }
}
//No output...
for (int i = 0; i < 4; i++) {
    for (int j = 0; j < 2; j++) {
        std::cout<<v2[i][j];
    }
}

2 个答案:

答案 0 :(得分:2)

在使用operator[]分配向量之前,您需要在向量中保留空间。

更改

std::vector<std::vector<int>> v2;

std::vector<std::vector<int>> v2(4, std::vector<int>(2));

答案 1 :(得分:1)

  std::vector<std::pair<int, int> > v2;
  int arr[8] = {0, 1, 2, 3, 4, 5, 6, 7};
  //I want the v2 to be: {{0,1}, {2,3}, {4,5}, {6,7}}
  std::cout << "v2.size = "<< v2.size() << '\n';
  for (int i = 0; i < 4; i++) {
        v2.push_back( std::pair<int, int>( arr[2*i], arr[2*i+1]) );
  }

  for (int i = 0; i < 4; i++) {
        std::cout << v2[i].first << v2[i].second << std::endl;
  }