【发布时间】:2012-03-14 20:20:54
【问题描述】:
可能重复:
C++ STL set update is tedious: I can't change an element in place
为什么这段代码抱怨我的参数是一个 const_iterator,但它没有这样声明?
void foo(std::set<int>::iterator it)
{
*it=2;
}
我收到错误:分配只读位置'it.std::_Rb_tree_const_iterator<_tp>::operator* with _Tp = int'
【问题讨论】:
-
看了链接,明白了。我不喜欢它,但它是有道理的。
-
他们这样做是因为否则他们无法维护“不变量”(他们不能保证它仍然是排序的),这将使
set无法工作。