向量(字符):核心转储

Vector of vectors (char): core dumped

本文关键字:核心 转储 字符 向量      更新时间:2023-10-16
这可能是

一个愚蠢的问题,但我根本无法弄清楚为什么这会引发分段错误(核心转储):

#include <vector>
using namespace std;
vector< vector<char> > samplevct;
int main(void)
{
    samplevct[0].push_back('a');
    return 0;
}

有人可以解释为什么这不起作用吗?

我使用 g++,Fedora 20,如果这是一个重要的信息。提前致谢

您的向量为空,因此您无法访问samplevct[0] .您需要使用至少一个元素填充向量。例如

#include <vector>
int main()
{
    using std::vector;
    vector< vector<char> > samplevct(1); // size 1 vector
    samplevct[0].push_back('a');         // OK
    return 0;
}

有关如何使用std::vector的更多信息,请参阅此参考。

它是一个

空向量,所以samplevct[0]不存在。修改它是未定义的行为 - 幸运的是,在您的情况下,它会以明显的方式崩溃。