问题标签 [filter-iterator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
263 浏览

php - FilterIterator 位掩码(或位域)

我正在为位掩码(或者它是位域?)而苦苦挣扎。我不知道该怎么做了。

我想创建一个接受过滤内容标志的 DirectoryFilterIterator。我想我会使用这些位:

因为 aDOT也被认为是 aDIR我也希望能够区分这两者。如果我是正确的,我认为这样的事情应该是可能的:

换句话说,这应该过滤掉,DIR除非它是一个DOT. 但我完全坚持如何让过滤工作(在accept方法中):

...尤其是因为我一直在否定,我有点迷路了。我怎样才能让它正常工作?

0 投票
1 回答
1191 浏览

c++ - boost::filter_iterator 也为 end() 调用谓词?

我正在努力使用 boost::filter_iterator。我用它来创建一个跳过一些元素的自定义迭代器。这些元素是一些粒子之间的接触,一些接触定义了它们的几何形状(Contact::geom);我想跳过那些没有定义它的(即!Contact::geom)。一个缩短的版本看起来像这样(我可能无法让它更短):

我不断从调试器中得到这个:

如果我没看错的话,filter_iterator 也会在 ContactContainer::end() 上调用谓词,这实际上是 ContactContainer::data.end()。这是预期的行为吗?不幸的是,文档只显示了数字过滤,我不知道如何进行。

有人可以启发我吗?

干杯,

瓦茨拉夫

0 投票
2 回答
330 浏览

php - Php、Spl、FilterIterator 行为

我试图理解 FilterIterator 在This Code的行为,我试图理解动作序列,我不明白为什么如果你尝试打印current()值它不会工作,除非你使用next()rewind()例如之前:

现在我不知道我必须“刷新”“指针”才能打印元素,如果有人可以向我解释一下动作序列,它会变得更清晰,谢谢大家,祝你有美好的一天。

0 投票
1 回答
396 浏览

php - 如何获取未从 FilterIterator 传递的值

我正在使用 FilterIterator 过滤掉值并成功实现了accept()方法。但是我想知道如何在单次迭代中从我的接受方法中获取返回 false 的值。我们以下面的代码为例(取自php.net);

在上面的代码中,它直接过滤掉了值,并返回了从 filteriterator 传递过来的值。实施为;

它将仅包含名称为Jonathan的数组。但是我想知道是否可以使用相同的过滤器将名称为Abdul的对象存储在另一个变量中,并稍加添加,而不是重新实现整个过滤器来做相反的事情?我想的一种方法是完全复制粘贴 FilterIterator 并基本上更改truefalse的值。但是,有什么巧妙的方法可以做到这一点,因为它需要在列表上进行另一次遍历。

0 投票
1 回答
215 浏览

php - RecursiveFilterIterator:如何不接受对象,但仍然访问他们的孩子?

我很难去RecursiveFilterIterator拜访我不想接受的对象的孩子,而不返回不可接受的对象。

我有两种类型的Node对象:NodeTypeA并且NodeTypeA,它们都扩展了抽象类型Node

...我为此定义了这个RecursiveFilterIterator

然后,当我运行此代码段时:

我希望得到这个结果:

...但得到:

换句话说,在迭代时,它也会NodeTypeB在有子对象时返回对象。这是有道理的,因为在RecursiveNodeFilterIterator::accept()我已经定义return $this->hasChildren() || ...了 ,以便过滤器访问所有可能的子节点。

有没有办法RecursiveNodeFilterIterator访问子节点NodeTypeB而不实际返回NodeTypeB节点本身?

0 投票
1 回答
545 浏览

c++ - 没有 edge_predicate 的 BOOST filtered_graph 中的 out_edges() 实现

我有一个 boost::filtered_graph< Graph_t, boost::keep_all, vertex_predicate >

假设FG是我的过滤图。v1是我想使用 out_edge_iterators 找出所有边的任何节点

edge_predicate 这里是“keep_all” 顶点谓词是一些用于修改图节点属性的谓词。

在文档中,给出了:

现在,当我定义 out_edge_iterators 时:

我期望的是以下内容: 1. 它应该考虑提供的 edge_predicate 并据此过滤边缘。基本上,开始结束迭代器应该是基于边缘谓词的 filter_iterators。2. 我认为不应该在边的其他节点上调用 vertex_predicate。例如,假设v1有 3 个出边 (v1, v2), (v1, v4), (v1, v6)。

我的观察是:在查找 v1 的 out_edges 的过程中,在v1的第一个相对节点上调用了 vertex_predicate。在上述情况下,

为什么会这样?是因为执行 out_edges() 函数会涉及查找相邻节点并返回找到的第一个节点吗?

我在调用相邻顶点()时观察到的情况相同。文档说它建模为 out_edge_iterator < edge_predicate , ... > 。

我得到了我的预期结果。但我想知道我的猜测是否正确?我没有为过滤图提供任何 edge_predicate 。

请建议。

0 投票
2 回答
727 浏览

c++ - 为什么 GCC -O3 在 std::deque 上使用过滤器迭代器导致无限的 std::distance?

在经历了很多痛苦和痛苦之后,我发现了一些非常奇怪的行为,当给定s 超过 astd::distance的范围时,这些行为永远不会返回。看来这个问题是 GCC (6.1+) 所独有的,并进行了优化。这是一个演示违规行为的示例:boost::filter_iteratorstd::deque-O3

一些观察:

  • GCC 具有优化-O2或预期更少的回报。
  • Clang (3.8) 以任何优化级别返回正确答案。
  • 更改std::dequestd::vectorstd::list导致预期的行为。
  • 14很关键;少一点,问题就消失了。
  • sizeof(Foo)很重要;消除sa使问题消失。
  • 通过引用捕获test或仅与常量表达式(例如foo.bar == " ")进行比较会导致正常行为。
  • 没有编译器警告(带有-Wall -Wextra -pedantic)。
  • Valgrind 没有报告错误。
  • 使用fsanitize=undefined,问题就消失了。

这是怎么回事?

0 投票
1 回答
107 浏览

php - 致命错误:无法声明类 ProductFilterIterator,因为该名称已在

借助 ProductFilterIterator 类想要获取数据

我收到一个错误 - 致命错误:无法声明类 ProductFilterIterator,因为该名称已在

0 投票
0 回答
16 浏览

php - 希望php分页迭代器在外部迭代器中过滤项目,而内部迭代器任务将不断传递数据

我正在尝试使用 Owl Carousel 上一个下一个按钮实现分页,其中分页器应该有一个内部迭代器,负责传递具有偏移和限制的数据。outerIterator 负责将数据传递给客户端(浏览器),在这里我想实现一个过滤器来决定数据是否可呈现。如果无法呈现,则 InnerIterator 将获取下一组数据。实际上,如果我需要实现多个过滤器,我也不知道将来应该在哪里实现过滤器。请赐教。这是我目前的实现。

在带有ajax请求的客户端我会打电话