Я портирую проект C ++ среднего размера из Visual Studio 2005 на MacOS, XCode / GCC 4.0.
Одно из различий, с которыми я только что наткнулся, связано со стиранием элемента с карты. В Visual Studio я мог стереть элемент, указанный итератором, и назначить возвращаемое значение итератору, чтобы получить позицию следующего элемента. Таким образом, итератор не будет указывать на недопустимый адрес после удаления.
Другими словами, в Visual Studio я мог бы сделать это:
itor = m_ResourceMap.erase (itor);
В GCC 4.0 функция стирания возвращает void, поэтому я не могу этого сделать. Означает ли это, что следующие элементы карты смещены на один назад, поэтому итератор автоматически указывает на следующий элемент, или это означает, что я должен увеличивать итератор впоследствии? онлайновая документация STL не очень лаконична по этому вопросу, и XCode, похоже, не имеет ее.
Спасибо за вашу помощь,
Адриан