Vin*_*rta 1 c++ iterator const map
长话短说是有效的:
map<int,int>m;
m.insert( make_pair( 1, 40 ) );
for( map<int,int>::iterator it = m.begin(); it != m.end(); ++it )
{
const_cast<int&>( it->first ) = 2;
}
Run Code Online (Sandbox Code Playgroud)
它有效,我在这个问题中遇到过自己,在实际情况下,地图是两个类的地图,map<classA,classB>并且为了访问我必须的类的非const成员const_cast<classA&>(it->first).NonConstFunction(),这是我的第一个想法介意,这样做还可以,还是有更好的东西?
这是不允许的.当您像这样就地修改密钥时,映射将不会"意识到"该值已更改,因此可能需要将该节点移动到其内部维护的树中的新位置以存储数据.如果树不再排序,树上几乎任何其他操作都可能崩溃并烧毁.
要正确执行此操作,您需要获取键/值对的副本,从地图中删除旧节点,在地图外修改副本,然后将修改后的副本插回到地图中.
| 归档时间: |
|
| 查看次数: |
375 次 |
| 最近记录: |