【发布时间】:2021-07-30 11:36:25
【问题描述】:
我试图了解为什么地图将第一个元素位置更改为第四个。当我打印地图时,第一个添加的位置转到第四个。
#include <stdio.h>
#include <stdlib.h>
#include <map>
#include <iostream>
typedef std::map<double, unsigned int> A;
double fRand(double fMin, double fMax)
{
double f = (double)rand() / RAND_MAX;
return fMin + f * (fMax - fMin);
}
这里是主要功能:
int main ()
{
int i, number;
double c;
number = 5;
A a;
for( i = 0 ; i < number ; i++ )
{
c = fRand(1, 9);
a[c];
std::cout << c<<"\n";
}
for(std::map<double, unsigned int>::const_iterator it = a.begin();
it != a.end(); ++it)
{
std::cout << it->first << " -> "<< it->second <<"\n";
}
return(0);
}
答案:第一个元素到了第四个位置
**7.7215** first
4.15506
7.26479
7.38752
8.29318
4.15506 -> 0
7.26479 -> 0
7.38752 -> 0
**7.7215 -> 0** fourth
8.29318 -> 0
【问题讨论】:
-
在调试的痛苦中很容易忽略一些事情,但请注意地图的输出中的键是按数字递增的顺序排列的。这不是巧合。