2013-08-21 76 views
-1

我需要一個具有鍵值訪問權限的容器(如地圖或未排序的地圖),但也可以用某種方式排序。
有人可以建議這樣的容器嗎?
例如:
我需要在其中存儲例如Employer類值作爲值和一些字符串id作爲不等於僱主名稱的關鍵字。
所以我希望容器可以按僱主名稱排序。
找到合適的容器類型

+0

您的意思是它必須在*施工之後可排序* – juanchopanza

+0

好吧,'std :: map' *是以某種方式排序的(即根據它的鍵)。如果這不是你想要的,請讓你的問題更清楚。 – syam

+0

我已經提供了一些exmaple ... –

回答

2

我建議使用普通的std::map,例如,

typedef std::map<std::string, Employer> EmployerMap; 
EmployerMap employers; 

...然後使用帶有指向地圖迭代一些序列容器(例如std::vector)。然後根據您的需求對序列容器進行分類:

// Build vector of iterators into map 
std::vector<EmployerMap::iterator> v; 
v.reserve(employers.size()); 
for (EmployerMap::iterator it, it != employers.end(); ++it) { 
    v.push_back(it); 
} 

// Sort vector by names of employers. 
std::sort(v.begin(), v.end(), 
      [](const EmployerMap::iterator &a, const EmployerMap::iterator &b) -> bool { 
       return a->name < b->name; 
      } 
     ); 
+0

不錯的主意。 thx尋求建議。 –

相關問題