#include <iostream>
#include <vector>
int main()
{
std::vector<std::vector<int>> a;
a[0] = {1,2,3,4,5};
a.push_back({12,123,123,1,3,1,23});
size_t size = a.size();
std::cout << size << std::endl;
}
g ++编译器传递了这个程序,但是当我运行它时会出现这个错误
分段错误(核心转储)
如何解决?如何计算这个2D矢量中的所有元素?
答案 0 :(得分:6)
在a[0] = { 1, 2, 3, 4, 5 };
std::vector
您可以访问索引0
的{{1}},但索引std::vector
没有0
,因此您可以访问内存,而不是{39}} ; t拥有,这会导致分段错误!您必须先分配空间(使用resize
),或使用push_back
,如下一行。
答案 1 :(得分:0)
您可以在创建矢量时指定第一行:
#include <iostream>
#include <vector>
int main()
{
std::vector<std::vector<int>> a{{1,2,3,4,5}};
a.push_back({12,123,123,1,3,1,23});
size_t size = a.size();
std::cout << size << std::endl;
}