返回一般pair<iterator,bool>
實現插入功能時,STL庫 我實現STL式的類。可我在對返回一個迭代的局部變量,即迭代器實現
itartor it;//init it
return pair<iterator,bool>(it,true);
,或者我應該動態分配迭代器即:
itartor it = new iterator;
return pair<iterator,bool>(*it,true);
返回一般pair<iterator,bool>
實現插入功能時,STL庫 我實現STL式的類。可我在對返回一個迭代的局部變量,即迭代器實現
itartor it;//init it
return pair<iterator,bool>(it,true);
,或者我應該動態分配迭代器即:
itartor it = new iterator;
return pair<iterator,bool>(*it,true);
你應該使用第一個選項。第二,沒有任何理由,因爲無論如何你都在反引用指針。並泄漏內存:
iterator it = new iterator;
return pair<iterator,bool>(*it,true);
^dereference here -> memory leak.
標準庫迭代器被設計爲按值傳遞。你應該確保你的迭代器複製很便宜,並且避免所有動態內存管理缺陷。
我認爲「prefer」在這裏完全不適用。 「無條件地必須」更接近事實。 –
按值返回迭代器。迭代器被設計爲輕量級和可複製的。
永遠不要返回動態分配的內容,除非你知道你在做什麼(你能妥善處理)。因此,與第一個一起去。
鑑於你甚至不能在這裏返回一個指針的事實,這是不行的(在你的代碼示例,你還是會創建分配的對象/內存的複印件)。
事實上,一個版本包含單詞'new'應該會提示你哪一個是錯的:-) –
在第二次閱讀時,第二個版本完全瘋了:你只是最終制作一個動態拷貝*分配迭代器並按值返回該副本。瘋狂。 (並且它實際上並沒有編譯。) –