2015-10-04 58 views
-2

std::map使用什麼排序算法?使用std::map來排序一組鍵和與其相關的一些值,而不是將鍵值存儲在'std :: vector>`中並使用排序函數是否有效?在C++中用std :: maps排序

總之對於排序是在性能方面更好:

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; 

VS

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; 

回答

2

如果你想對鍵進行排序,然後使用std :: set。這是一張沒有任何「價值」的地圖。

這是否一個好主意取決於您的數據集。對於小數據集,這是非常合理的。

1

地圖與一些口味平衡二叉搜索樹(AVL,紅黑的實現樹等)。

不,它不會是有效的簡單使用地圖排序的一組值,除非他們有某種協會,有幾個人排序算法來做到這一點,取決於你的數據集,分佈等。

查找到std::sort

1

使用std ::地圖通過存儲 鍵的值,以一組值進行排序,並使用一些虛擬的文字與這些 鍵關聯的值?

我不是建議你做以上,但已經有一個數據結構的用例storing those values in keys

這就是所謂的std::Set

什麼排序算法不標準::地圖使用?

由於它是以平衡二叉搜索樹的形式實現的,所以如果您執行順序遍歷,則鍵將已經排序。

但是沒有標準的方式來訪問std :: map實例的「實際樹結構」。