【发布时间】:2010-10-04 12:47:00
【问题描述】:
我正在将一个中型 C++ 项目从 Visual Studio 2005 移植到 MacOS、XCode / GCC 4.0。
我刚刚偶然发现的差异之一与从地图中删除元素有关。在 Visual Studio 中,我可以擦除由迭代器指定的元素并将返回值分配给迭代器以获取下一个元素的位置。这样迭代器在擦除后不会指向某个无效地址。
换句话说,在 Visual Studio 中我可以这样做:
itor=m_ResourceMap.erase(itor);
在 GCC 4.0 中,擦除函数返回 void,所以我不能这样做。这是否意味着以下地图元素向后移动,因此迭代器自动指向下一个元素,或者这是否意味着我必须在之后增加迭代器? online STL Documentation 在这个主题上不是很简洁,XCode 似乎也没有。
感谢您的帮助,
阿德里安
【问题讨论】: