我有這樣爲什麼我不能在地圖中放置迭代器?
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個字節也可以。
所以問題不在於如何避免丟失迭代器,反正存儲它們是一個愚蠢的想法,但爲什麼試圖在字符串開始時存儲迭代器失敗,以及爲什麼與迭代器相同工作正常?他們有什麼區別?
如何存儲迭代器?它是`mIteratorMap.insert(Map :: value_type(key_of_a_right_type,It));`或`mIteratorMap [key_of_a_right_type] =它;`? – jfs 2009-02-05 16:41:57
你能否更新你的僞代碼來闡明你如何插入地圖?這使得它看起來像是構建一個臨時的,但它不是一個有效的ctor調用: if(need_to_store_an_iterator)mIteratorMap(key_of_a_right_type,It); – 2009-02-05 16:42:04
我的不好,修好了。但插入工作的保存方式。即使只是試圖讓一對失敗。 – akalenuk 2009-02-05 16:47:50