这是我的代码:
std::vector< std::vector<int> > v;
v.push_back(std::vector<int>(2));
v[0].push_back(10);
std::cout<<(v[0])[0];
但它打印&#34; 0&#34;而不是10。
我正在尝试制作一个包含固定大小矢量的动态矢量。
有人可以帮我看看发生了什么吗?
答案 0 :(得分:3)
代码是错误的:
std::vector<int>(2)
使用deault构造的int
(为零)初始化大小为2的向量,因此推送10
只会在末尾创建一个大小为3 w / 10
的向量(索引) 2)。
答案 1 :(得分:0)
在阅读了更多关于push_back的内容后,这是我到目前为止所理解的以及我如何修复它
std::vector< std::vector<int> > vo; //empty vector of vectors
v.push_back(std::vector<int>(2)); //insert element
v.push_back(std::vector<int>(2)); //insert element
v[0][0] = 1;
v[0][1] = 2; //allocated so it's alright to add elements
v[1][0] = 3;
v[1][1] = 4;
std::cout<<v[1][1]; //4