for (Something something : setOfSomething) // OK
for (Something const& something : setOfSomething) // OK
for (Something& something : setOfSomething) // ERROR
error: invalid initialization of reference of type 'Something&'
from expression of type 'const Something'
从什么时候迭代器返回const Something
?它应返回Something&
或Something const&
。由于基于范围的'for'循环被解释为that,我对正在发生的事情没有合理的解释。
修改:我说的是unordered_set
而不是set
,对此感到抱歉。
答案 0 :(得分:13)
您无法改变set
的成员,因为这可能会违反set
不变量。因此,编译器会限制您获取const引用或副本。