【问题标题】:Passing an iterator to another function将迭代器传递给另一个函数
【发布时间】:2009-12-06 20:51:06
【问题描述】:

我想知道完成这样的事情的最佳方法是什么......

// 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 时,我想要做的是保持在正确的迭代器位置。通过引用传递是最好的选择吗?

【问题讨论】:

    标签: c++ iterator


    【解决方案1】:

    迭代器通常按值传递。我会让 RemoveBar() 返回新的迭代器。

    【讨论】:

    • 这是最初的意图,但是我更喜欢函数名称显示它们的意图是什么,并且 RemoveX 没有显示它将返回一个迭代器,并且 RemoveXAndGetX 是meh,但因为它是一个私有函数我想我可以稍微改变一下可读性规则。
    • Dores 这意味着您认为 printf() 真的应该被称为 print_and_return_number_of_characters_output() - 我认为没有多少人会同意:-)
    猜你喜欢
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 2014-06-26
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    • 1970-01-01
    相关资源
    最近更新 更多