相关疑难解决方法(0)

为什么g ++ 4.0版本的map <T> :: erase(map :: <T> iterator)不返回迭代器?

我正在将一个中型C++项目从Visual Studio 2005移植到MacOS,XCode/GCC 4.0.

我偶然发现的一个差异与从地图中删除元素有关.在Visual Studio中,我可以擦除迭代器指定的元素,并将返回值赋给迭代器以获取下一个元素的位置.这样,迭代器在擦除后不会指向某个无效地址.

换句话说,在Visual Studio中我可以这样做:

itor = m_ResourceMap.erase(itor);

在GCC 4.0中,擦除函数返回void,所以我不能这样做.这是否意味着以下映射元素向后移动,因此迭代器自动指向下一个元素,或者这是否意味着我必须在之后增加迭代器?该 在线文档STL是不是关于这个问题的非常简洁的XCode似乎并没有什么.

谢谢你的帮助,

阿德里安

c++ gcc stl

3
推荐指数
1
解决办法
1909
查看次数

标签 统计

c++ ×1

gcc ×1

stl ×1