首先,如果您觉得这个问题不合适,我深表歉意
我偶然发现了一份包含以下详细信息的简历
我几乎总是想做一些足够简单和具体的事情,而不是保证一个全新的功能,但每次都手动进行迭代是困惑和容易出错的,所以我构建了一个谓词迭代器,使我能够保留传统 for 循环的结构:
for (/* loop control */)
{
/* operation */
}
Specifically, it allows things like:
for (tree_iterator i (root, SomePredicate); i; ++i)
{
i->SomeOperation();
i->AnotherOperation();
}
“通过这种方式,迭代机制被分解并保持在一起,循环体专门用于操作。我发现在处理我的对象层次结构时这是一个有用的工具。它允许非常复杂的用抽象的所有适当部分清楚地表示迭代。”
谁能阐明谓词迭代器是什么,或者它的实现方式和工作原理的任何细节?
感谢您抽出时间,如果这是一个错误的问题,我们深表歉意。
最佳答案
A filter_iterator
是一个迭代器,它将迭代器包装在项目上,并跳过不需要的项目。
std::vector<ShoppingItem> list = ...
auto veggies = make_filter_iterator(isVegitable, list.begin(), list.end());
while(veggies != veggies.end()) {
buy(*veggies);
}
关键部分很简单,当您推进 filter_iterator
时,它会推进内部迭代器,并检查是否应保留下一项。如果没有,它会继续推进内部迭代器,直到到达末尾,或者找到要保留的项目。
这个在实践中其实很少用到,因为filtered
ranges几乎总是更好。
关于c++ - 预测迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39669151/