c++ - 如何制作指向另一个子 vector 中项目的指针 vector ?

标签 c++ string pointers vector

我正在尝试创建一个 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/

相关文章:

string - MSN 天气服务的 Lua string.match 模式

javascript - 字符串到数组然后删除最后一个元素

.net - 为什么我的多线程 C++ .NET 应用程序只有在 visual studio 之外执行时才会崩溃?

c++ - 从std::cout了解运算符<<()

c++ - 从C++中的对象中获取数组

字符串匹配算法设计

PHP 指针行为异常

c++ - C2248 - 将 QScopedPointer 传递给函数时无法访问私有(private)成员

c - 当指向结构的双指针是函数的参数时,为什么我们使用 "&(*"语句?

c++ - 在鼠标位置抖动移动 Sprite