我们有
std::vector <std::vector <unsigned short int>> face;
face.resize(nElm);
第一维可以resize()
。但是,我也希望reserve()
记忆面部元素;我的意思是第二个维度。 (我知道resize()
和reserve()
)
答案 0 :(得分:4)
只做
face.resize(nElm);
for(auto &i : face) i.resize(nDim2);
或者如果你不使用c ++ 11:
face.resize(nElm);
for(std::vector < std::vector < unsigned short int> >::iterator it
=face.begin();it!=face.end();++it) {
it->resize(dim2);
}
如果您只想reserve
获得第二维,那么就这样做而不是resize
答案 1 :(得分:2)
如果你想调整,那么你需要
for(auto i=face.begin(),ie=face.end();i!=ie;++i) i->resize(nElm);
(因为两个结束尖括号之间没有空格,我假设你正在使用c++11
)。
另一方面,如果你想保留内存,你必须在实际拥有一个向量时这样做,即 - 第一维上的一个元素。
答案 2 :(得分:1)
你必须遍历第一个维度并使用迭代器或简单的方法调整第二个维度;
for (int i=0; i<nElm; i++) {
face[i].resize(nElm2ndDimension);
}