我剛剛完成在C++中實現通用跳過列表,我想爲它帶來一個 STL類似於map的迭代器。 重載「 - >」運算符時出現問題:需要將引用返回到iterator :: value_type,在我的情況下是std :: pair,其中K是鍵類型,V是我的值類型類似地圖的容器。 代碼如下:在C++中實現類似地圖的迭代器時的問題
value_type& operator->() { return value_type(inner->key, inner->value); }
編譯器返回我一些仇恨消息關於臨時對象的引用,我 完全同意他的觀點;我的問題是:我應該如何將參考 返回給一對,而不必在我的迭代器類中放置一對成員?
好的,我錯過了這一點,我認爲這是需要返回一個參考。我還有一個與地圖迭代器有關的問題,它從我最初的問題中離題一點:爲什麼STL迭代器(如地圖一)具有std :: pair的value_type而不是std :: pair 。爲什麼要多做一個鍵和值的副本,而不是僅僅返回對這些的引用呢? –
fokenrute
2010-11-16 19:41:20
由於像這樣強制執行僅供參考的合約通常比執行僅限價值的合約更復雜,更脆弱或更昂貴。 – 2010-11-16 19:48:12
但是使用引用而不是值被認爲是不好的做法?一些STL算法會停止工作嗎? – fokenrute 2010-11-16 19:55:57