📅  最后修改于: 2023-12-03 15:29:54.681000             🧑  作者: Mango
在C++中,迭代器是一种通用的机制,用于循环访问容器中的元素。输出迭代器是一种特殊的迭代器,用于向容器中输出元素。
输出迭代器是一种可写迭代器,支持赋值操作。它可以在容器的尾部添加元素,或者将元素插入到容器中。
定义一个输出迭代器非常简单,只需要定义一个能够赋值的类型即可。例如,以下代码定义了一个输出迭代器,它可以输出整数值到容器中:
class MyOutputIterator {
public:
using value_type = int;
MyOutputIterator& operator=(const int& item) {
my_container.push_back(item);
return *this;
}
private:
std::vector<int> my_container;
};
在这个输出迭代器中,我们定义了一个value_type类型,它表示这个输出迭代器所输出的元素的类型。我们还定义了一个赋值操作符,当我们使用这个迭代器输出元素的时候,就会调用这个操作符,将元素添加到my_container中。
使用输出迭代器向容器中添加元素非常简单。我们只需要创建一个输出迭代器,并用它来循环输出元素即可。例如,以下代码创建一个输出迭代器,并使用它输出一些整数到std::vector中:
std::vector<int> vec;
MyOutputIterator output_iterator;
for (int i = 0; i < 10; i++) {
*output_iterator = i;
}
// vec should now contain {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
在这个例子中,我们创建了一个std::vector
除了在for循环中使用输出迭代器,我们还可以使用标准库中的算法来输出元素。例如,以下代码使用std::generate_n算法,将5个随机整数添加到std::vector中:
std::vector<int> vec;
MyOutputIterator output_iterator;
std::generate_n(output_iterator, 5, [](){ return rand() % 100; });
// vec should now contain 5 random integers
在这个例子中,我们调用了std::generate_n算法,生成了5个随机整数并将它们添加到了std::vector中。输出迭代器在这里作为std::generate_n算法的第一个参数传递给了这个函数。
C++中的输出迭代器是一种非常有用的机制。它可以让我们使用很简单的方式向容器中添加元素,使得代码更加简洁、易读。总的来说,我们只需要定义一个能够赋值的类型即可,然后就可以像使用普通迭代器一样使用输出迭代器了。