矢量(char)矢量:核心倾销

时间:2014-01-05 21:25:18

标签: c++ vector g++

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

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

有人可能会解释为什么这不起作用?

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

2 个答案:

答案 0 :(得分:8)

您的矢量为空,因此您无法访问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的更多信息,请参阅this reference

答案 1 :(得分:1)

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