这可能是一个愚蠢的问题,但我根本无法弄清楚为什么会引发分段错误(核心转储):
#include <vector>
using namespace std;
vector< vector<char> > samplevct;
int main(void)
{
samplevct[0].push_back('a');
return 0;
}
有人可能会解释为什么这不起作用?
我使用g ++,Fedora 20,如果这是一个重要的信息。 提前致谢
答案 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]
不存在。修改它是未定义的行为 - 幸运的是,在你的情况下,它以明显的方式崩溃。