在C++中,返回一个“任何类型的输入迭代器”的方法是使用模板和迭代器适配器。首先,我们需要一个模板函数,它接受一个迭代器作为参数。然后,我们可以使用std::iterator_traits
来获取迭代器的类型,并使用std::make_move_iterator
来创建一个新的迭代器,该迭代器可以适应任何输入迭代器。
以下是一个示例代码:
#include<iostream>
#include<vector>
#include <list>
#include<iterator>
template<typename InputIterator>
auto any_input_iterator(InputIterator begin, InputIterator end) {
auto iter = std::make_move_iterator(begin);
return iter;
}
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
std::list<int> lst = {1, 2, 3, 4, 5};
auto vec_iter = any_input_iterator(vec.begin(), vec.end());
auto lst_iter = any_input_iterator(lst.begin(), lst.end());
std::cout << "Vector iterator: " << *vec_iter<< std::endl;
std::cout << "List iterator: " << *lst_iter<< std::endl;
return 0;
}
在这个示例中,我们定义了一个名为any_input_iterator
的模板函数,它接受一个输入迭代器作为参数,并返回一个新的迭代器,该迭代器可以适应任何输入迭代器。我们使用std::make_move_iterator
来创建这个新的迭代器,并在main
函数中测试了std::vector
和std::list
的迭代器。
需要注意的是,这个函数只是一个示例,实际上并不需要创建一个新的迭代器来适应任何输入迭代器。在实际编程中,我们通常会直接使用模板来处理不同类型的迭代器。
领取专属 10元无门槛券
手把手带您无忧上云