我正在尝试制作一个向量,该向量包含指向字符串向量向量中每个第一个字符串的指针。我将把first_words_in_subvecs
传递给\bin\sort
程序来排序/打印它们。我认为制作一个新的实际字符串向量是浪费cpu时间/空间,因为我只是要传递它们。我是否认为只是指向我想要发送的字符串会更快?为什么这段代码不起作用?我没有收到任何警告或错误,但是当我运行它时会出现故障。
int print_sorted_subvectors(vector< vector<string> > &sorted_subsets_vec)
{
vector<string*> first_words_in_subvecs;
for(int i = 0; i < sorted_subsets_vec.size(); i++)
{
first_words_in_subvecs[i] = &sorted_subsets_vec[i][0];
}
}
答案 0 :(得分:1)
可能不需要在向量中存储指向字符串的指针。 std::string
类非常有效,使用诸如写时复制之类的技术来避免实际字符串数据的不必要副本。如果first_words_in_subvecs
是常规vector<string>
(并且您的代码更易于理解且更可靠),则可能没有效率问题。
很难说为什么你当前的代码是segfaulting。您确定sorted_subsets_vec
的每个子向量都是非空的吗?