从c+;中的多个地图获取信息+;比较 我试图用C++中的一组地图做一些奇怪的事情。(如果我称之为字典,我很抱歉。我习惯于使用Python 2.7。)

从c+;中的多个地图获取信息+;比较 我试图用C++中的一组地图做一些奇怪的事情。(如果我称之为字典,我很抱歉。我习惯于使用Python 2.7。),c++,c++11,maps,C++,C++11,Maps,我有五十张地图,每一张都代表一个州五大发展中的城市。关键是城市名称、映射值及其增长率。(例如阿拉斯加州:{anchorage:112.55;boonies:106.22;…}每个州增长最快的五个城市。)我想做的是比较所有这些映射值,找到最高的五个,并打印出它们所属城市的名称 除此之外,我一开始会比较250个数字,直到程序运行,我才知道映射的值或键。它从超过19000行的大量txt文件中获取数据,找出每个州最高的五行,然后为每个州创建一个字典 我不知道如何访问所有这些值,而不知道它们的键是什么,甚

我有五十张地图,每一张都代表一个州五大发展中的城市。关键是城市名称、映射值及其增长率。(例如阿拉斯加州:{anchorage:112.55;boonies:106.22;…}每个州增长最快的五个城市。)我想做的是比较所有这些映射值,找到最高的五个,并打印出它们所属城市的名称

除此之外,我一开始会比较250个数字,直到程序运行,我才知道映射的值或键。它从超过19000行的大量txt文件中获取数据,找出每个州最高的五行,然后为每个州创建一个字典

我不知道如何访问所有这些值,而不知道它们的键是什么,甚至不知道如何一次比较所有这些数字。前者比后者我需要更多的帮助,但一切都会有帮助的

编辑:

尝试回答所有问题:

我是如何从我编写的自定义类中获得这50张地图的。包含数据的txt文件太大,无法一次全部读取,因此我编写了一个类,该类将读取文件的某一部分,查找该部分前五位的名称和值,并将其作为地图返回,共有五对:城市名称及其值。每个状态都是一个部分,它将返回50个映射,每个映射包含五对。阿拉斯加地图将有{city:growth value;city2:growth value2…}然后会有亚利桑那地图、阿拉巴马地图等等。现在,我调用函数50次,用不同的部分来阅读。每次调用该函数时,它都返回前五对的映射。我希望这更清楚


我需要数据作为地图,因为我需要在最后打印出名称,以及用于比较和找到最佳结果的增长值。但是,现在我想的更多了,我正在考虑在类中添加一个函数,该函数保留所有城市名称的向量和一个增长值。我可以取速率向量进行比较,然后在另一个向量中用某种计数器变量找到它对应的名称。不确定这样做是否会更好或更容易,但我想到了一种可能性。

如果每个城市的地图只有五个元素可以开始,你为什么需要知道他们的钥匙?(至少我是这样读你的解密的)。迭代器在地图中的
std::pair
s上迭代,在
first
中保持键,在
second
中保持值。我想到的一个有趣的问题是,为什么要将中间结果存储在按城市名称索引的
map
中。。。您可以将它们存储在向量中,或存储在按增长索引的
地图中。。。这是一个很难的要求吗?我的意思是,使用你所拥有的东西并不太复杂,但如果不是这样,它可能会更简单。例如,在计算这些地图时,您还可以跟踪总体上最好的五个…(您甚至需要跟踪每个州的5个吗?)。那是一个
向量吗?@DavidRodríguez dribeas OP说“我有50张地图”,因此他没有
向量
地图。作者还声明“打印出城市名称”,因此他无法将信息存储在简单的
向量中。除非他将其存储在两个向量中,当他可以使用
地图时,这是毫无意义的。@PawełStawarz:我有50张地图,怎么会?这并不是说他是否保留了50个变量,一个映射向量或一个
map
,外部映射值是状态。问题依然存在。关于另一个注释,您可以在向量中保留所需的复杂数据结构。事实上,我会创建一个类型来保存城市、州和增长,然后对其进行操作,最有可能的是向量。@DavidRodríguez dribeas“50个地图”的意思是“50个类型的变量
map
”AFAIK。但让我们等待作者澄清。引用“EX.Alaska:{anchorage:112.55;boonies:106.22;…”会暗示我的版本,因为它暗示有一张叫做“阿拉斯加”的地图。