我有vector< vector<string> >
并希望使用push_back()
向内部向量添加字符串。这就是我试过的:
vector< vector<string> > sorted_word_vecs;
char word_read[MAX_WORD_LENGTH];
for(int i = 0; i < num_of_pipes; i++)
{
while (fgets(word_read, MAX_WORD_LENGTH, pipe_read_from_sort[i]) != NULL)
{
word = word_read;
sorted_word_vecs[i].push_back(word);
}
}
但我总是遇到一个seg错误(我已经把它缩小到了与cout的push_back行)。这是错误的做法吗?
答案 0 :(得分:3)
您需要在外部矢量中创建空间:
vector< vector<string> > sorted_word_vecs;
char word_read[MAX_WORD_LENGTH];
sorted_word_vecs.resize(num_of_pipes);
不执行此操作意味着您要求sorted_words_vecs[i
]不存在的元素。
答案 1 :(得分:1)
您必须先将矢量推入主矢量。
for(int i = 0; i < num_of_pipes; i++)
{
sorted_word_vecs.push_back(vector<string>());
while (fgets(word_read, MAX_WORD_LENGTH, pipe_read_from_sort[i]) != NULL)
{
word = word_read;
sorted_word_vecs[i].push_back(word);
}
}
(我已经将它缩小到与cout的push_back行)。
您应该学习如何使用调试器。
答案 2 :(得分:1)
在sorted_word_vecs[i]
之前,您需要在位置vector<string>
添加i
。您可以通过调整矢量(首选)或调用sorted_word_vecs.push_back(vector<string>());