почему есть нарушения в печати ключа и значения неупорядоченной карты и карты (словаря)? - PullRequest
0 голосов
/ 04 марта 2019

вот мой код, пожалуйста, скажите мне, почему он не печатается при запуске, так как на карте он печатается правильно

#include<bits/stdc++.h>
using namespace std;

int main(){
unordered_map<int,int>arr;
for(int i=1;i<=10;i++){
    arr[i]=i*i;
}

for(auto it=arr.begin();it!=arr.end();it++){
    cout<<it->first<<" "<<it->second<<"\n";
}

cout<<"normal map \n";

map<int,int>arry;
for(int i=1;i<=10;i++){
    arry[i]=i*i;
}

for(auto it=arry.begin();it!=arry.end();it++){
    cout<<it->first<<" "<<it->second<<"\n";
}

}

, и мой вывод

10 100

9 81

8 64

7 49

6 36

5 25

1 1

2 4

3 9

4 16

карта нормалей

1 1

2 4

3 9

4 16

5 25

6 36

7 49

8 64

9 81

10 100

почему неупорядоченная карта печатает значение таким образом, а не печатает как карта

1 Ответ

0 голосов
/ 04 марта 2019

std::unordered_map не упорядочивает ключи в каком-либо определенном порядке.Вот почему он называется неупорядоченный .

Внутренне элементы не сортируются в каком-либо определенном порядке, а организованы в сегменты.В какую корзину помещается элемент, полностью зависит от хеша его ключа.Это обеспечивает быстрый доступ к отдельным элементам, поскольку после вычисления хэша он ссылается на точную область, в которую помещен элемент.

...