2009-12-06 36 views
0

我想知道什麼是要完成這樣的事情最好的辦法......傳遞一個迭代到另一個功能

// Iterating through a list 
if (foo) { 
    RemoveBar(it); 
} 

void RemoveBar(std::list<Type>::iterator it) { 
    it = listName.erase(it); 
    ...// Other stuff related to cleaning up the removed iterator 
} 

我不認爲按值傳遞將在這裏工作。顯然,當我調用RemoveBar時,我想要做的就是保持正確的迭代器位置。是通過參考最好的選擇?

回答

5

迭代器通常按值傳遞。我會讓RemoveBar()返回新的迭代器。

+0

這是最初的意圖,但我更喜歡當函數名稱揭示他們的意圖是什麼,RemoveX並沒有透露它將返回一個迭代器,而RemoveXAndGetX是meh,但由於它是一個私有函數,我想我可以稍微彎曲可讀性規則。 – Anonymous 2009-12-06 20:56:17

+3

意味着你認爲printf()應該真的被稱爲print_and_return_number_of_characters_output()的Dores--沒有多少人會同意,我認爲:-) – 2009-12-06 21:00:32

相關問題