'auto'关键字是否知道何时使用const迭代器?

Nic*_*age 2 c++ loops vector auto c++11

如果您正在循环通过容器:

typedef std::vector<std::unique_ptr<BaseClass>> Container;
Container container;

for(Container::const_iterator element = container.begin(); element != container.end(); element++)
{
    //Read through values
}
Run Code Online (Sandbox Code Playgroud)

而不是使用typedef你决定使用auto:

std::vector<std::unique_ptr<BaseClass>> container;

for(auto element = container.begin(); element != container.end(); element++)
{
    //Read through values
}
Run Code Online (Sandbox Code Playgroud)

假设你不改变这些值,auto关键字是否使用const迭代器而非const const?

这个问题最重要的是好奇心,我唯一可以看到这是现实生活场景中适用的问题的唯一原因是,如果你需要传达的话,那就是你不要将价值观改变为另一个从事代码工作的人.

seg*_*ult 5

1)使用cbegincend明确使用const迭代器.

2)begin()并在声明方法时end()返回const_iteratorconst

  • 或者使用基于范围的for,并使用const引用绑定值:`for(const auto&element:container){...}` (2认同)