我认为这个问题足够清楚。会auto关键字自动检测const-或始终返回非const类型,即使存在。两个函数的两个版本(一个返回const另一个没有)。

只是为了记录,我确实使用const auto end = some_container.end()在我的前横路之前,但我不知道这是必要的,甚至与正常人有所不同auto

答案

也许你很困惑const_iteratorconst iterator。第一个迭代在const元素上迭代,第二个完全无法迭代,因为您无法使用operators++和 - 在上面。

请注意,您很少从container.end()。通常您会使用:

const auto end = container.end();
for (auto i = container.begin(); i != end; ++i) { ... }

来自: stackoverflow.com