1
1
STD:键值是按键排序的,很容易用比某个值更小或更大的键来表示值,即使是for循环(如果你不想使用或学习使用STL算法)。对于一些低于
对于大于值的键的平均值,请使用
编辑:STL算法可能会缩短代码的长度(在使用它的地方,也就是说)。例如,计算以下键的平均值
|
3
3
编辑:一通图累加器-
旧版本:
这对我有用。使用
|
4
2
|
5
1
在这种情况下,谓词是最适合使用的映射的比较函数
如果谓词可能更改为其他内容,则可以使用
你需要
|
6
1
假设您正在使用一个映射,最简单的解决方案是利用键的排序性质,就像其他人一样。浏览列表的第一部分,更新累加器和计数。然后浏览列表的第二部分,做同样的事情。两个循环,一个接一个,您可以从第一部分的长度推断第二部分的长度。 非常简单的代码,乍一看应该很清楚,并且不会创建临时容器。出于这些原因,我个人更喜欢这种方法。事实上,如果我自己使用这个数据结构来做的话,这几乎就是我要写的代码。
我看不到在第一节中使用
(当然,我不得不说,如果你想确定的话,你应该测量这个,因为你应该。这只是我对优化构建行为的有根据的猜测。) |
7
1
好吧,这是我的提纲,给那些喜欢用积攒来减轻痛苦的人。让我们创建一个名为StatsCollector的类。我不在乎它到底包含了什么,除非我们假定这是一个类,您将在代码的不同位置使用它来收集数字集合并向您提供信息。让我们粗略地定义一下。我假设它的值为double,但您可以在value_类型上对其进行模板化。
上述目的是根据输入的数据计算统计力矩。它是一个旨在有用的类,而不仅仅是一个适合于避免使用循环的算法的黑客,并且希望您可以在代码中的许多地方使用它。 现在我将为我们的特定循环编写一个自定义函数(您可以使用函数)。我将用一个指针指向上面的其中一个。一个参考的问题是:STD::累积分配给它,这样它将复制不是我们想要的对象。实际上,它将是一个自分配,但自分配指针几乎是一个无操作)
上面的内容适用于任何映射类型,不管键类型如何,也适用于任何自动转换为double的值类型,即使它实际上不是double。 现在假设我们在地图中有迭代器范围,我们可以这样使用accumulate:
统计数据将准备分析。请注意,您可以自定义统计信息以供以后在其构造函数中使用,因此,如果您不希望将标志设置为不计算多维数据集/四次幂,则可以将其设置为计算偏度和峰度(如果不关心方差,甚至不计算平方)。 |
8
0
大致上:
它在范围内运行两次(不能很好地缩放)。对于优化:
它可以通过累计一次收集计数和和。 [编辑] 根据评论,以下是优化的基本原理:
在这种情况下,内存访问不再保证有缓存备份,因此与每个元素的操作相比,成本可能会变得很高(甚至超过这一点)。重复两次将使内存访问成本增加一倍。 讨论中的“变量”仅取决于数据集和客户机配置,而不是算法。
比起自定义的“累计”,我更喜欢这个解决方案,因为它很容易扩展或修改其他操作,而“累计”细节仍然是孤立的。它也可以用于假设
噢,常量正确性留给读者作为练习:) |
lagivan · 如何使用map参数测试XQuery函数 10 年前 |
sagar · 我们可以在其他映射中使用嵌套映射作为键吗? 10 年前 |
user2906420 · 创建传单自定义复选框控件 10 年前 |
Ali-Alrabi · 要根据对象键对地图进行排序 10 年前 |
SimplGy · javascript中按对象引用哈希 10 年前 |
city · 如何在C++映射中提取具有相同前缀的记录? 10 年前 |
alvas · 使用带有附加参数的map-python 10 年前 |
Bapho · ArrayList还是Map?还有关于如何存放孩子的帮助 10 年前 |