gpt4 book ai didi

c++ - 声明一个模板函数,它接收两个通用迭代器作为参数

转载 作者:太空狗 更新时间:2023-10-29 23:49:01 25 4
gpt4 key购买 nike

我需要创建一个函数,它从一个容器的开头和结尾接收迭代器。然后它应该在控制台中显示内容。

我的问题是我不知道如何声明迭代器以便它可以与任何类型的容器一起工作

这是我做的:

template <class T>
void print(typename iterator<T> &beg, typename iterator<T> &end) {
while (beg != end) {
cout << *beg << endl;
beg++;
}
}

最佳答案

std::iterator上课真的只是一种方便;标准中没有任何内容要求所有迭代器都从它继承。此外,std::iterator没有虚拟方法,所以这与使用 Iterator<T> 几乎不是一回事在 Java 中调用 next()方法将调用适当的 next() .你想要一个通用类型 T ,不只是一个 std::iterator ,以便编译器解析为 operator++ 的正确重载和 operator*在编译时。

template <typename T>
void print(T iter, const T& end) {
// Taking the first argument by value ensures that
// we don't modify the caller's variables
while (iter != end) {
cout << *iter << endl;
++iter;
}
}

这将适用于任何前向迭代器,这是您 99% 的时间要处理的。

关于c++ - 声明一个模板函数,它接收两个通用迭代器作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48045021/

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