首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >目标C:有没有一种内置的方法来计算2d /nested NSArray中的项目总数?

目标C:有没有一种内置的方法来计算2d /nested NSArray中的项目总数?
EN

Stack Overflow用户
提问于 2014-02-09 14:26:13
回答 1查看 561关注 0票数 2

我在目标C中有一个二维NSArray。

我想知道数组中项目的总数。在不使用嵌套for循环的情况下,有没有更快的方法来获得项目的总数?

谢谢!

EN

Stack Overflow用户

发布于 2014-02-09 14:34:09

是的,你可以做这个键值编码和the collection operators

代码语言:javascript
运行
复制
NSArray *nested = @[@[@1, @2, @3],    @[@4, @5, @6],    @[@7, @8, @9],
                    @[@10, @11, @12], @[@13, @14, @15], @[@16, @17, @18],
                    @[@19, @20, @21], @[@22, @23, @24]];
NSLog(@"%@", [nested valueForKeyPath:@"@sum.@count"]); // logs 24 (as an NSNumber)

下面是几条评论:

键路径@sum.@count的工作方式是首先创建一个计数数组(所以是@[@3, @3, @3, @3, @3, @3, @3, @3]),然后对该数组求和(得到@24)。

然而,这只是在你写的代码更少的意义上是“更快”。从根本上说,它仍然在做你自己会做的事情。而且它的效率可能较低,因为它处理的是NSNumbers的添加,这不如添加原语(您可能会使用)的效率高。

要做到这一点真的困难得多:

代码语言:javascript
运行
复制
NSUInteger total = 0;
for (NSArray *array in nested) {
  total += array.count;
}
票数 11
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21656119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档