为什么此 2D 向量会导致段错误(核心已转储)
Why this 2D vector cause the segment fault(core dumped)
#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++ 编译器通过了这个程序,但是当我 运行 它
分段错误(核心已转储)
如何解决?如何统计这个二维向量中的所有元素?
这里 a[0] = { 1, 2, 3, 4, 5 };
你访问索引 0
处的 std::vector
,但是索引 0
处没有 std::vector
,所以你访问的内存你没有' own,这会导致分段错误!您必须先分配 space(使用 resize
),或使用 push_back
,如下一行。
您可以在创建向量时分配第一行:
#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;
}
#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++ 编译器通过了这个程序,但是当我 运行 它
分段错误(核心已转储)
如何解决?如何统计这个二维向量中的所有元素?
这里 a[0] = { 1, 2, 3, 4, 5 };
你访问索引 0
处的 std::vector
,但是索引 0
处没有 std::vector
,所以你访问的内存你没有' own,这会导致分段错误!您必须先分配 space(使用 resize
),或使用 push_back
,如下一行。
您可以在创建向量时分配第一行:
#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;
}