我正在阅读来自C++ Primer 5th (6.2.6.带有可变参数的函数)的一段代码:
void error_msg(ErrCode e, initializer_list<string> il)
{
cout << e.msg() << ": ";
for (const auto &elem : il)
cout << elem << " ";
cout << endl;
}
我总是直接在范围 for
中使用 auto
,像这样:
for (auto &elem : il)
但我以前从未见过 const auto&
。我知道一个 initializer_list
中的元素始终是常量值。这是使用 const auto&
的原因吗?
- 这种方式和我的旧方式有什么区别?
- 在这种情况下使用 "const auto&" 是一个好习惯吗?
for (elem : il)
的语法。这是我的首选,因为它易于编写且功能强大(某些编译器已经支持此语法)。 - oblitumfor (auto elem : il)
会不必要地创建每个元素的临时副本。 - Siyuan Ren