c++ - 在处理 std::initializer_list 的元素的范围内使用 "const auto&"是否是一个好习惯

标签 c++ c++11

我正在阅读 C++ Primer 5th (6.2.6. Functions with Varying Parameters) 中的代码:

void error_msg(ErrCode e, initializer_list<string> il)
{
    cout << e.msg() << ": ";
    for (const auto &elem : il)
        cout << elem << " ";
    cout << endl;
}

我总是用 auto直接在一个范围内 for .像这样:
for (auto &elem : il)

但我从来没见过const auto&之前。我知道 initializer_list 中的元素总是 const 值 .是不是用的原因const auto& ?
  • 这种方式和我以前的方式有什么区别?
  • 在这种情况下使用“const auto&”是一个好习惯吗?
  • 最佳答案

    由于 std::initializer_list 的元素是 const ,迭代 auto& elemconst auto& elem具有相同的语义。写的优势const是它让任何阅读代码的人都清楚内容不会被修改(即使无论如何都不可能修改内容)。

    关于c++ - 在处理 std::initializer_list 的元素的范围内使用 "const auto&"是否是一个好习惯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26541920/

    相关文章:

    c++ - 如何打印我在 map 中使用的数组?

    c++ - std::thread,在线程中引发异常会导致 Visual C++ 中出现异常中止错误

    c++ - 使用 CMake 构建项目,包括使用不同构建系统的其他库

    python - Pip 安装失败,faSTLz 模块上出现退出代码 2/错误代码 1

    c++ - 使用派生类实例作为默认参数值

    c++ - 使用 std::tie 的一个类轮交换

    c++ - NULL、0、nullptr 的解释

    c++ - 关闭 session 后 Tensorflow 1.8 内存仍保留在 GPU 上

    c++ - 是否可以从格式字符串中检索 "width"

    c++ - 为什么将函数参数声明为 "X* const"