在函数模板中创建一个包含迭代器的类,可以使用C++的迭代器模板库。迭代器是一种可以遍历容器中元素的对象,它可以指向容器中的一个元素,并且可以通过操作符重载来实现对元素的访问和操作。
以下是一个简单的示例代码,演示如何在函数模板中创建一个包含迭代器的类:
#include<iostream>
#include<iterator>
template<typename T>
class MyContainer {
public:
MyContainer(T* data, size_t size) : data_(data), size_(size) {}
class iterator : public std::iterator<std::input_iterator_tag, T> {
public:
iterator(T* ptr) : ptr_(ptr) {}
iterator& operator++() {
++ptr_;
return *this;
}
bool operator==(const iterator& other) const {
return ptr_ == other.ptr_;
}
bool operator!=(const iterator& other) const {
return ptr_ != other.ptr_;
}
T& operator*() {
return *ptr_;
}
private:
T* ptr_;
};
iterator begin() {
return iterator(data_);
}
iterator end() {
return iterator(data_ + size_);
}
private:
T* data_;
size_t size_;
};
int main() {
int data[] = {1, 2, 3, 4, 5};
MyContainer<int> container(data, 5);
for (auto it = container.begin(); it != container.end(); ++it) {
std::cout << *it << " ";
}
return 0;
}
在这个示例代码中,我们定义了一个名为MyContainer
的模板类,它包含一个迭代器类iterator
。iterator
类继承自std::iterator
模板类,并且实现了operator++
、operator==
、operator!=
和operator*
等操作符重载,以实现对容器中元素的访问和操作。
MyContainer
类的begin
和end
成员函数返回迭代器对象,可以用于遍历容器中的元素。在main
函数中,我们创建了一个MyContainer
对象,并使用迭代器遍历其中的元素。
领取专属 10元无门槛券
手把手带您无忧上云