私はこのように定義された地図を持っています
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バイトで問題ありません。
したがって、問題はイテレータの紛失を回避する方法ではなく、とにかくそれらを格納するのは愚かな考えでしたが、文字列の先頭にイテレータを格納しようとすると失敗し、最後のイテレータでも同じことがうまくいくのはなぜですか?それらの違いは何ですか?