【问题标题】:To print a list of words (vector<string>) using pointers使用指针打印单词列表 (vector<string>)
【发布时间】:2021-07-24 07:55:46
【问题描述】:

我正在尝试从字符串向量 (query_list) 打印单词列表,但我无法让它工作。我知道当前代码打印地址。

        vector<string>* query_list_ptr;
        query_list_ptr = &query_list;

        for (i = 0; i < num_words; i++) {
            cout << query_list_ptr << " ";
            query_list_ptr++;
        }

我尝试了以下方法:

  1. 当我尝试使用“*query_list_ptr”在“cout
  2. 当我尝试“vector* query_list_ptr”到“vector query_list_ptr”的变体时,我也遇到了错误。
  3. 另一个错误是“query_list_ptr = query_list”,这就是我最终将 & 符号添加到“query_list_ptr = &query_list;”的原因。

感谢所有帮助。我可以不用指针,但这是针对我的 CS 类的指针。

【问题讨论】:

  • 为什么不简单地从向量中打印单词,例如for(const auto&amp; word : query_list) cout &lt;&lt; word &lt;&lt; ' ';
  • 你有一个字符串集合,而不是向量集合。所以你需要一个指向字符串的指针,而不是指向向量的指针,来遍历那个集合(如果你坚持使用指针的话)。
  • query_list_ptr 是一个指向向量的指针。 *query_list_ptr 是一个向量。 究竟你应该做的任务是什么?我强烈怀疑 vector&lt;string&gt;* 是否是它的答案。
  • @MikeCAT 我浏览了我的教科书,您的解决方案甚至与我所遵循的都不接近。我认为常量是在编译之前初始化和声明的。 (我感到很失落,但我会继续努力)谢谢你的帮助。

标签: c++ string pointers vector


【解决方案1】:

std::vector的第一个元素的指针可以通过data()成员函数获得。

const string* query_list_ptr; // you want to print words, so I guess the pointer should point to string
query_list_ptr = query_list.data(); // get the pointer to the first element

for (i = 0; i < num_words; i++) {
    cout << *query_list_ptr << " "; // dereference the pointer to get the word to print
    query_list_ptr++;
}

【讨论】:

    猜你喜欢
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多