如何更改设置元素?

Eri*_*c.Q 7 c++ set const-iterator

我想改变a中的元素set,所以我使用了set<T>::iterator.但是,编译器认为"元素是const".然后我意识到那set<T>::iteratorconst_iterator......

那么,我怎么能改变这个元素呢?删除它然后插入一个新的?

Nav*_*een 21

set将按排序顺序排列元素.如果允许修改元素,则无法维护此排序顺序.因此,您无法修改该项目.您需要擦除现有元素并插入新元素.

  • 但应该提到的是,元素的某些更改不会影响它的排序方式.如果你想做一个你确定不会影响排序顺序的改变,总会有`const_cast`作为最后的手段.风险并不美丽,但仍然如此. (7认同)
  • 由于`erase`不会抛出,除非它调用的用户代码抛出,最好插入新元素然后删除旧元素.这使您有机会获得强大的异常保证. (2认同)