我想知道如何有效地完成以下操作。给定整数括号,相应地创建一个stl向量?
e.g。给定
[[-9],[-8,0],[-3,2,5],[6,3,0,-4],[-2,-9,-5,-8,6],[0,-5,0,-2,-1,5],[0,6,-1,-5,-8,6,-5],[-8,-5,-9,-8,-4,-3,-5,7]]
然后,从中构建一个二维矢量。
vector<vector <int> > vv;
修改
我没有最新的c ++ 11编译器,所以直接构建的方式就像
std :: vector v({1,2,3,4,5});
不是我想要的。
我目前的想法如下:
int x1 [1] = { - 9};
int x2 [2] = { - 8,0}; ...
std :: vector v1(x1,x1 + sizeof x1 / sizeof x1 [0]);
std :: vector v2(x2,x2 + sizeof x2 / sizeof x2 [0]); ...
vv.push_back(V1);
vv.push_back(V2); ...
但这太繁琐了,我有很多括号。
答案 0 :(得分:1)
你的意思是:
#include <vector>
int main()
{
std::vector<std::vector<int>> vv = {{-9},{-8,0},{-3,2,5},{6,3,0,-4},{-2,-9,-5,-8,6},{0,-5,0,-2,-1,5},{0,6,-1,-5,-8,6,-5},{-8,-5,-9,-8,-4,-3,-5,7}};
}
Live example(C ++ 11模式下的gcc / clang)。