У меня есть карта, определенная так
std::map<some_key_type, std::string::iterator> mIteratorMap;
И огромная строка с именем "mHugeString". Затем я иду через строку, собирая итераторы, как это:
std::string::iterator It=mHugeString.begin();
std::string::iterator EndIt=mHugeString.end();
for(;It!=EndIt;++It){
...defining a key element...
if(need_to_store_an_iterator)mIteratorMap[key_of_a_right_type]=It;
}
В конце я должен получить карту, где итератор связан с каким-то ключом. Но итератор каким-то образом теряет себя при соединении с ключом с помощью make_pair, если только он не указывает на место где-то в конце строки. Трудно сказать, но, может быть, последние 256 байтов в порядке.
Так что вопрос не в том, как избежать потери итераторов, глупо было хранить их в любом случае, но почему попытка сохранить итератор в начале строки не удалась, и почему то же самое с итераторами в конце работает штраф? В чем разница между ними?