c++ - 如何动态调整二维 vector 的大小?

标签 c++ visual-c++ stl

我需要按如下方式调整二维 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/

相关文章:

c++ - 使用 fprintf 打印字符串

c++ - 什么时候使用新关键字?

c++ - 运算符(operator)的 MSVC 错误 |

c++ - "template<>"vs "template"没有括号 - 有什么区别?

c++ - 使用 vc2010 和 msbuild 的多个构建规则

c++ - 创建新指针循环时,输出取消引用的指针不会增加内存使用量

c++ - 对 unordered_map 使用 const 键

c++ - 求STL-aware c++filt

c++ - 有符号算术

c++ - 如何在解构函数中正确释放变量