我想创建一个嵌套数组(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];
}
}
答案 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;
}