我正在尝试创建一个 vector ,该 vector 包含指向字符串 vector 的 vector 中第一个字符串中的每一个的指针。我将把 first_words_in_subvecs
传递给 \bin\sort
程序来排序/打印它们。我认为创建一个新的实际字符串 vector 会浪费 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];
}
}
最佳答案
可能没有必要在 vector 中存储指向字符串的指针。 std::string
类非常高效,使用写时复制等技术来避免不必要的实际字符串数据拷贝。如果 first_words_in_subvecs
,您可能不会遇到效率问题是常规 vector<string>
(您的代码也将更易于理解和更可靠)。
很难说为什么您当前的代码会出现段错误。你确定 sorted_subsets_vec
的每个子 vector 是非空的吗?
关于c++ - 如何制作指向另一个子 vector 中项目的指针 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9255366/