如何制作指向另一个子向量中的项的指针?

时间:2012-02-13 03:50:23

标签: c++ string pointers vector

我正在尝试制作一个向量,该向量包含指向字符串向量向量中每个第一个字符串的指针。我将把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];
    }
}

1 个答案:

答案 0 :(得分:1)

可能不需要在向量中存储指向字符串的指针。 std::string类非常有效,使用诸如写时复制之类的技术来避免实际字符串数据的不必要副本。如果first_words_in_subvecs是常规vector<string>(并且您的代码更易于理解且更可靠),则可能没有效率问题。

很难说为什么你当前的代码是segfaulting。您确定sorted_subsets_vec的每个子向量都是非空的吗?