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

How to make vector of pointers to items in another subvector?

本文关键字:向量 项目 指针 何制作 另一个      更新时间:2023-10-16

我正在尝试制作一个向量,该向量包含指向字符串向量中的每个第一个字符串的指针。我将把first_words_in_subvecs传递给binsort程序来对它们进行排序/打印。我认为制作一个新的实际字符串向量是浪费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];
    }
}

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

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