两个迭代器之间有多少个元素

发布于 2024-12-09 01:27:06 字数 424 浏览 0 评论 0原文

计算迭代器中所有元素的最佳方法是什么?

我想要与此等效的代码

template<typename T,typename S,S val>
struct ConstantFunctor : unary_function<T,S>
{S operator()(const T&) const {return val;}};
template<typename T>
struct TrueFunctor : ConstantFunctor<T,bool,true>{};
...
count_if(c.begin(),c.end(),TrueFunctor());

最好的方法是什么?

我可以使用 boost::lambda::constant(true) ,但也许有更清楚的东西。

What's the best way to count all elements in an iterator?

I want code equivalent to this

template<typename T,typename S,S val>
struct ConstantFunctor : unary_function<T,S>
{S operator()(const T&) const {return val;}};
template<typename T>
struct TrueFunctor : ConstantFunctor<T,bool,true>{};
...
count_if(c.begin(),c.end(),TrueFunctor());

What's the best way to do that?

I can use boost::lambda::constant(true), but maybe there's something clearer.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

染火枫林 2024-12-16 01:27:07

如果你想计算一个范围内的所有元素。那么你可以使用 std::distance,来自标头,如下所示

int count = std::distance(begin(c), end(c));

:就足够了。

在线文档介绍了std::distance

计算第一个和最后一个之间的元素数量。

If you want to count all elements in a range. then you can use std::distance, from the <iterator> header, like so:

int count = std::distance(begin(c), end(c));

It should be enough.

The online doc says about std::distance:

Calculates the number of elements between first and last.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文