C++ vector 迭代 : const vs. const auto 与 no const

标签 c++ string vector

我有一个 vector <string> v{"First sentence.", "Second sentence.", "Third sentence."};我想在插入行尾定界符时连接起来。

我不明白这三种迭代方式的区别:

string build()
{
    string ret;

    for (string s: v) {
        ret += (s + "\n");
    }
    return ret;
}

string build()
{
    string ret;

    for (const string s: v) {
        ret += (s + "\n");
    }
    return ret;
}

string build()
{
    string ret;

    for (const auto &s: v) {
        ret += (s + "\n");
    }
    return ret;
}

我应该使用或不使用什么,取决于什么?

最佳答案

  • auto x 当您想要处理拷贝时。
  • auto &x 当您想使用原始项目并且可能要修改它们时。
  • auto const &x 当您想使用原始项目并且不会修改它们时。

关于C++ vector 迭代 : const vs. const auto 与 no const,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49231305/

相关文章:

javascript - 不允许连续出现多个相同的字符

java - 更改字符串(将文件名放在方括号中并获得两个反斜杠)

c++ - 在指向 vector 的智能指针上使用 push_back() 时出现运行时错误

c++ - 指向类数据成员 "::*"的指针

c++ - 表达式必须具有整数或枚举类型

c++ - 在 C 中,如何在执行另一个功能时不断获取用户输入?

php - 如何用php检查字符串是否在数组中?

c++ - std::vector no instance of overloaded function matches the argument list

c++ - 我应该总是处理引用返回 vector 吗?

c++ - MFC PostMessage 从主项目到 UI 线程