我需要按如下方式调整二维 vector (大小未知)的大小:
//Creating the vector of vectors:
vector< vector< long > > v;
//Resizing the vectors:
/*Needing help here:
my current assumption is:
v.resize(1);
v[0].resize(1);
*/
//Adding elements:
v[0][0].push_back(0);
v[0][1].push_back(-1);
编译器在应用 push_back 时报告错误。我想我在调整 vector 大小时遇到了问题。
目标是创建一个二维 vector ,根据添加的值动态分配内存。
预先感谢您的帮助
最佳答案
您关于调整二维大小的假设是正确的,但您在 push_back 上收到错误,因为 v[0][0]
的类型是long &
, 不是 vector<long> &
.
我想你想要:
v.resize(1);
//Don't resize the second dimension because you want it to grow dynamically
//v[0].resize(1);
v[0].push_back(0);
v[0].push_back(-1);
请记住,push_back 只会调整特定行/列的大小。如果您不一致地向 v[0]
添加相同数量的元素, v[1]
等等,你最终会得到一个“锯齿状”的数组。您可能希望将整个事情包装在一个类中以加强这种一致性。
关于c++ - 如何动态调整二维 vector 的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5807471/