当前位置:  开发笔记 > 编程语言 > 正文

使用迭代器执行对象操作的函数

如何解决《使用迭代器执行对象操作的函数》经验,为你挑选了1个好方法。

假设我有一个std::array并且我想调用一个函数,它使用迭代器来处理对象,std::array但不知道容器是什么std::array.

SomeType是一个具有公共成员函数doSomething()的类

例如,函数可能是:

template
void action(Iterator &beg, Iterator &end) {
  for (; beg != end; ++beg)
    beg->doSomething();
}

通过以下方式调用此功能:

int main() {
  std::array a;

  action::iterator>(a.begin(), a.end());
}

但我想知道这是不是这样做的?特别是因为模板可以用于每个类.有没有办法限制功能,SomeType而不让功能知道容器是一个std::array



1> Kerrek SB..:

    修复你的代码:你不应该要求左值参数.事实上,迭代器应该是有效复制的.

    template
    void action(Iterator beg, Iterator end)
    //          ^^^^^^^^^^^^  ^^^^^^^^^^^^
    

    让模板参数推导完成它的工作:

    action(a.begin(), a.end());
    

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有