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

时间:2014-02-11 03:45:45

标签: c++ loops c++11 vector auto

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

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

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

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

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

for(auto element = container.begin(); element != container.end(); element++)
{
    //Read through values
}

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

这个问题最重要的是好奇心,我认为这是现实生活场景中适用问题的唯一原因是,如果你需要传达的话,你不能改变另一个人的价值观。代码。

1 个答案:

答案 0 :(得分:5)

1)使用cbegincend来明确使用const迭代器。

当方法声明为begin()

时,

2)end()const_iterator返回const