gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:08:42 27 4
gpt4 key购买 nike

假设我有一个 std::array<SomeType, N>我想调用一个函数,它使用迭代器来处理 std::array 中的对象但不知道容器是 std::array .

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

例如一个函数可能是:

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

可以通过以下方式调用此函数:

int main() {
std::array<SomeType, 10> a;

action<std::array<SomeType, 10>::iterator>(a.begin(), a.end());
}

但我想知道这是不是这样做的方法?特别是因为模板可以用于每个类(class)。有没有办法将函数限制为 SomeType不让函数知道容器是 std::array

最佳答案

  1. 修正你的代码:你不应该需要左值参数。事实上,迭代器旨在高效复制。

    template<typename Iterator>
    void action(Iterator beg, Iterator end)
    // ^^^^^^^^^^^^ ^^^^^^^^^^^^
  2. 让模板参数推导完成它的工作:

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

关于c++ - 使用迭代器执行对象操作的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41634954/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com