相关疑难解决方法(0)

基于C++ 11范围的循环:按值获取项目或引用const

读取基于范围环的一些例子他们建议两种主要方式1,2,3,4

std::vector<MyClass> vec;

for (auto &x : vec)
{
  // x is a reference to an item of vec
  // We can change vec's items by changing x 
}
Run Code Online (Sandbox Code Playgroud)

要么

for (auto x : vec)
{
  // Value of x is copied from an item of vec
  // We can not change vec's items by changing x
}
Run Code Online (Sandbox Code Playgroud)

好.

当我们不需要更改vec项目时,IMO,示例建议使用第二个版本(按值).为什么他们不提出const引用的内容(至少我没有找到任何直接的建议):

for (auto const &x : vec) // <-- see …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

199
推荐指数
3
解决办法
8万
查看次数

C++ auto&vs auto

创建局部变量时,使用(const) auto&或是正确的auto吗?

例如:

SomeClass object;
const auto result = object.SomeMethod();
Run Code Online (Sandbox Code Playgroud)

要么 const auto& result = object.SomeMethod();

SomeMethod()返回非原始值 - 可能是另一个用户定义的类型.我的理解是const auto& result正确的,因为SomeMethod()返回的结果将为返回的类型调用复制构造函数.如果我错了,请纠正我.

原始类型怎么样?我认为const auto sum = 1 + 2;是正确的.

这是否也适用于基于范围的循环?

for(const auto& object : objects)
Run Code Online (Sandbox Code Playgroud)

c++ auto

58
推荐指数
3
解决办法
4万
查看次数

标签 统计

c++ ×2

auto ×1

c++11 ×1