[英]Sorting with std::maps in c++
std::map
使用什么排序算法? 使用std::map
對一組鍵和與其關聯的一些值進行排序而不是將鍵值存儲在“std::vector>”中並使用排序函數是否有效?
簡而言之,排序在性能方面更好:
std::map<int,int> a;
//insert some key-values
for(std::map<int,int>::iterator it=a.begin();it!=a.end();it++)
std::cout<<it->first<<" "<<it->second<<endl;
對比
std::vector<pair<int,int>> a;
//insert some data into a
sort(a.begin(),a.end())
int size= a.size()
for(i=0;i<size;i++)
std::cout<<it->first<<" "<<it->second<<endl;
如果您只想對鍵進行排序,請使用 std::set。 這是一張沒有任何“價值”的地圖。
這是否是一個好主意取決於您的數據集。 對於小數據集,這是完全合理的。
地圖與平衡二叉搜索樹的一些口味(AVL,紅黑樹等)來實現。
不,使用地圖簡單地對一組值進行排序是沒有效率的,除非它們有某種關聯,還有其他幾種排序算法可以做到這一點,這取決於您的數據集、分布等。
也看看std::sort
使用 std::map 通過將這些值存儲在鍵中來對一組值進行排序並對與這些鍵關聯的值使用一些虛擬文字?
我不是建議您執行上述操作,但是用例已經有一個storing those values in keys
的數據結構
它被稱為std::Set
std::map 使用什么排序算法?
由於它是作為平衡二叉搜索樹實現的,如果您進行中序遍歷,鍵就已經被排序了。
但是沒有訪問 std::map 實例的“實際樹結構”的標准方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.