2009-12-06 65 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

相关问题