2015-12-01 28 views
-2

如何使用STL設置容器排序名稱? 如我有3個名字,貓,蘋果,香蕉。使用集裝箱後,將打印出蘋果香蕉貓。C++如何使用STL設置容器排序名稱

謝謝!

+2

如果你使用'std :: set',它會被自動排序。 –

+0

這取決於您提供的包含數據類型的比較函數:http://www.cplusplus.com/reference/set/set/ 'Compare'模板參數可以讓您將比較函數更改爲您想要的函數。 –

回答

4

A std::set在使用默認比較器時總是排序,因此您可以迭代它並按此順序打印條目。

for(std::set<std::string>::const_iterator it = myset.begin(); it != myset.end(); ++it) 
     std::cout << "Entry:" << *it << std::endl; 

for(std::string const &s : myset) 
     std::cout << "Entry:" << s << std::endl; 

只有當你提供你自己的比較,你可以修改排序順序您的需求。

1

STL容器(如map和set)使用比較器函數(默認std::less<T>,其中T是我們放置的數據的類型)對容器的元素進行排序,還檢查容器中是否存在某個元素,以便插入可以防止重複的元素。

在你的情況下,設置將被自動排序,因爲默認比較器std::less<std::string>將按照字典順序對字符串進行排序。