2012-12-10 40 views
1

我有一個map對象,我想插入一個新元素。這樣做後,我想確保這個新插入的元素被插入末尾。要做到這一點,我設計了以下方法:兩個映射迭代器是否指向相同的項目保證相等?

map<T1,T2> m; 
//populate m 
auto ret_pair = m.insert({o1,o2}); //o1,o2 objects of types T1,T2 

auto end = m.cend(); 
--end; 
if (ret_pair.first != end) //<-- this worries me 
    throw runtime_error("boom"); 

行,我比較兩個迭代器我擔心,因爲我不知道我是否能夠依靠這些不同的迭代器是一樣的,即使指向同樣的事情。

您認爲如何?爲什麼這(不)工作?

+4

我很驚訝丹尼斯里奇不知道這個答案。 – 2012-12-10 19:26:58

+0

我不明白這個問題的關鍵。如果你要堅持按照地圖放置的順序插入元素,爲什麼你需要讓地圖對元素進行排序的開銷?只需將這些元素填充到「vector」或「deque」中即可。 –

+1

@ 0A0D無論如何,他更像一個C傢伙 –

回答

3

指向相同元素的迭代器比較相等。如果他們不這樣做,標準庫中的每個算法都會中斷。

所以是的,你的代碼很好。

相關問題