问题标签 [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.
php - FilterIterator 位掩码(或位域)
我正在为位掩码(或者它是位域?)而苦苦挣扎。我不知道该怎么做了。
我想创建一个接受过滤内容标志的 DirectoryFilterIterator。我想我会使用这些位:
因为 aDOT
也被认为是 aDIR
我也希望能够区分这两者。如果我是正确的,我认为这样的事情应该是可能的:
换句话说,这应该过滤掉,DIR
除非它是一个DOT
. 但我完全坚持如何让过滤工作(在accept
方法中):
...尤其是因为我一直在否定,我有点迷路了。我怎样才能让它正常工作?
c++ - boost::filter_iterator 也为 end() 调用谓词?
我正在努力使用 boost::filter_iterator。我用它来创建一个跳过一些元素的自定义迭代器。这些元素是一些粒子之间的接触,一些接触定义了它们的几何形状(Contact::geom);我想跳过那些没有定义它的(即!Contact::geom)。一个缩短的版本看起来像这样(我可能无法让它更短):
我不断从调试器中得到这个:
如果我没看错的话,filter_iterator 也会在 ContactContainer::end() 上调用谓词,这实际上是 ContactContainer::data.end()。这是预期的行为吗?不幸的是,文档只显示了数字过滤,我不知道如何进行。
有人可以启发我吗?
干杯,
瓦茨拉夫
php - Php、Spl、FilterIterator 行为
我试图理解 FilterIterator 在This Code的行为,我试图理解动作序列,我不明白为什么如果你尝试打印current()值它不会工作,除非你使用next()或rewind()例如之前:
现在我不知道我必须“刷新”“指针”才能打印元素,如果有人可以向我解释一下动作序列,它会变得更清晰,谢谢大家,祝你有美好的一天。
php - 如何获取未从 FilterIterator 传递的值
我正在使用 FilterIterator 过滤掉值并成功实现了accept()方法。但是我想知道如何在单次迭代中从我的接受方法中获取返回 false 的值。我们以下面的代码为例(取自php.net);
在上面的代码中,它直接过滤掉了值,并返回了从 filteriterator 传递过来的值。实施为;
它将仅包含名称为Jonathan的数组。但是我想知道是否可以使用相同的过滤器将名称为Abdul的对象存储在另一个变量中,并稍加添加,而不是重新实现整个过滤器来做相反的事情?我想的一种方法是完全复制粘贴 FilterIterator 并基本上更改true和false的值。但是,有什么巧妙的方法可以做到这一点,因为它需要在列表上进行另一次遍历。
php - RecursiveFilterIterator:如何不接受对象,但仍然访问他们的孩子?
我很难去RecursiveFilterIterator
拜访我不想接受的对象的孩子,而不返回不可接受的对象。
我有两种类型的Node
对象:NodeTypeA
并且NodeTypeA
,它们都扩展了抽象类型Node
:
...我为此定义了这个RecursiveFilterIterator
:
然后,当我运行此代码段时:
我希望得到这个结果:
...但得到:
换句话说,在迭代时,它也会NodeTypeB
在有子对象时返回对象。这是有道理的,因为在RecursiveNodeFilterIterator::accept()
我已经定义return $this->hasChildren() || ...
了 ,以便过滤器访问所有可能的子节点。
有没有办法RecursiveNodeFilterIterator
访问子节点NodeTypeB
而不实际返回NodeTypeB
节点本身?
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 。
请建议。
c++ - 为什么 GCC -O3 在 std::deque 上使用过滤器迭代器导致无限的 std::distance?
在经历了很多痛苦和痛苦之后,我发现了一些非常奇怪的行为,当给定s 超过 astd::distance
的范围时,这些行为永远不会返回。看来这个问题是 GCC (6.1+) 所独有的,并进行了优化。这是一个演示违规行为的示例:boost::filter_iterator
std::deque
-O3
一些观察:
- GCC 具有优化
-O2
或预期更少的回报。 - Clang (3.8) 以任何优化级别返回正确答案。
- 更改
std::deque
为std::vector
或std::list
导致预期的行为。 14
很关键;少一点,问题就消失了。sizeof(Foo)
很重要;消除s
或a
使问题消失。- 通过引用捕获
test
或仅与常量表达式(例如foo.bar == " "
)进行比较会导致正常行为。 - 没有编译器警告(带有
-Wall -Wextra -pedantic
)。 - Valgrind 没有报告错误。
- 使用
fsanitize=undefined
,问题就消失了。
这是怎么回事?
php - 致命错误:无法声明类 ProductFilterIterator,因为该名称已在
借助 ProductFilterIterator 类想要获取数据
我收到一个错误 - 致命错误:无法声明类 ProductFilterIterator,因为该名称已在
php - 希望php分页迭代器在外部迭代器中过滤项目,而内部迭代器任务将不断传递数据
我正在尝试使用 Owl Carousel 上一个下一个按钮实现分页,其中分页器应该有一个内部迭代器,负责传递具有偏移和限制的数据。outerIterator 负责将数据传递给客户端(浏览器),在这里我想实现一个过滤器来决定数据是否可呈现。如果无法呈现,则 InnerIterator 将获取下一组数据。实际上,如果我需要实现多个过滤器,我也不知道将来应该在哪里实现过滤器。请赐教。这是我目前的实现。
在带有ajax请求的客户端我会打电话