找到满足条件的第n个元素?

文森特

是否有几个std::algorithm/lambda function访问nth满足给定条件元素。因为std::find_if将访问第一个,所以是否有一个等价的找到那个nth

大卫·罗德里格斯(DavidRodríguez)-德里贝斯

您需要创建一个有状态的谓词,该谓词将对实例的数量进行计数,然后在达到预期数量时完成。现在的问题是,在评估算法期间无法保证谓词将被复制多少次,因此您需要将该状态保持在谓词本身之外,这有点丑陋,但是您可以这样做:

iterator which;
{  // block to limit the scope of the otherwise unneeded count variable
   int count = 0;
   which = std::find_if(c.begin(), c.end(), [&count](T const & x) {
        return (condition(x) && ++count == 6)
   });
};

如果经常出现这种情况,并且您不关心性能,则可以编写一个谓词适配器,该适配器在内部为该计数创建一个shared_ptr并对其进行更新。同一适配器的多个副本将共享同一实际计数对象。

另一个选择是实施find_nth_if,这可能会更简单。

#include <iterator>
#include <algorithm>

template<typename Iterator, typename Pred, typename Counter>
Iterator find_if_nth( Iterator first, Iterator last, Pred closure, Counter n ) {
  typedef typename std::iterator_traits<Iterator>::reference Tref;
  return std::find_if(first, last, [&](Tref x) {
    return closure(x) && !(--n);
  });
}

http://ideone.com/EZLLdL

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在满足某些条件的列表中找到第n个顺序值的索引?

来自分类Dev

快速访问满足条件的第n个元素的数据结构

来自分类Dev

从Java列表中获取具有满足流条件的第n个元素的子列表

来自分类Dev

查找列表的前N个元素,直到满足条件

来自分类Dev

在O(log n)中找到第k个最小元素

来自分类Dev

如何在Prolog中找到列表的第N个元素

来自分类Dev

在SQL中找到第N个最大元素

来自分类Dev

jquery如何从元素变量中找到第n个孩子

来自分类Dev

如何在C ++中找到向量的第m个和第n个元素之间的max元素?

来自分类Dev

从数组中找到匹配条件的前n个元素

来自分类Dev

从数组中找到匹配条件的前n个元素

来自分类Dev

如何找到满足条件的3D矩阵的N个值

来自分类Dev

STL或范围算法有效地找到满足谓词的n个连续元素

来自分类Dev

停在第n个元素?

来自分类Dev

列表的第n个元素

来自分类Dev

Grep 第 n 个元素

来自分类Dev

在列表中找到需要完全满足条件的元素

来自分类Dev

在Scala中遍历Seq并找到满足条件的元素

来自分类Dev

如何找到满足条件的矩阵元素-并将它们存储在另一个数组中

来自分类Dev

Clojure手动找到序列中的第n个元素

来自分类Dev

是否可以通过引用第n + 1个元素来找到数组末尾的地址?

来自分类Dev

PHP:存在简单的Dom解析器,找到第N个元素类

来自分类Dev

让 Python 找到两个满足条件的整数

来自分类Dev

如何找到第n个奇怪的素数?

来自分类Dev

如何找到值的第n个根?

来自分类Dev

算法找到第n个车厢

来自分类Dev

Python:找到第n个质数

来自分类Dev

在 hive 中找到第 n 个值

来自分类Dev

找到第n个素数的更好算法?

Related 相关文章

热门标签

归档