标准 C++ 中不存在这样的迭代器,据我所知,没有 Boost 迭代器具有这种确切的功能。不过,您可以通过多种方法使用这些库来完成此操作,而无需自行构建。例如,使用 Boost function_output_iterator,您可以构建一个如下所示的计数器:
struct Counter {
size_t* out;
explicit Counter(size_t* where) : out(where) {
// Handled in initializer list
}
/* Either make this a template, or make the class itself a template. */
template <typename T> void operator()(T& value) {
++ *out;
}
};
Run Code Online (Sandbox Code Playgroud)
该仿函数类型接受一个指向计数器变量的指针,然后每当operator()调用它时都会递增计数器。如果您随后将其包装在 a 中function_output_iterator,如下所示:
size_t count;
your_algorithm(begin, end,
boost::make_function_output_iterator(Counter(&count)));
Run Code Online (Sandbox Code Playgroud)
然后,每当写入创建的迭代器时,您的operator()将被调用并且计数器将增加。
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
1135 次 |
| 最近记录: |