2013-01-23 129 views
0

我不知道如何通過以下列方式自定義排序行爲的std::map自定義排序映射槽構造

Constructor(const std::function<bool(const Obj&, const Obj&)>& ac_xNewComparator) 
: mNewMap(xNewComparator(/*...???....*/)) {} 

我怎麼能傳遞比較的地圖?

+0

嘗試mNewMap(TYPE1,TYPE2,ax_xNewComparator) - http://www.cplusplus.com/reference/map/map/map/ – hired777

+2

@ hired777:你是混合了模板參數(類型)和構造函數參數(比較器)。它只是'mNewMap(ac_xNewComparator)',只要映射類型用適當的比較器類型實例化即可。 –

回答

2
class Test 
{ 
public: 

    Test(const std::function<bool (int x, const std::string& str)>& comparator) 
     : m_map(comparator) 
    { 
    } 

    std::map<int, std::string, std::function<bool (int x, const std::string& str)> > m_map; 

};