作爲我家庭作業的一部分,我必須實現類似於std :: Map的容器。排序定製容器
執行映射後,我嘗試使用std:sort但鍵來對其進行排序。
std::sort(connectedFans.begin(), connectedFans.end());
其中connectedFans是:
Map<int, shared_ptr<Fan> >.
不過,我發現了以下錯誤:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/algorithm:3752:90: error: no type named
'value_type' in 'std::__1::iterator_traits<mtm::Map<int, std::__1::shared_ptr<mtm::Fan> >::iterator>'
_VSTD::sort(__first, __last, __less<typename iterator_traits<_RandomAccessIterator>::value_type>());
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
FanBookServer.cpp:50:2: note: in instantiation of function template specialization 'std::__1::sort<mtm::Map<int,
std::__1::shared_ptr<mtm::Fan> >::iterator>' requested here
std::sort(connectedFans.begin(), connectedFans.end());
^
1 error generated.
我認爲這個問題是我的實現地圖的範圍內但是我不知道在哪裏看。 我應該怎樣做我的地圖的std:sort算法來處理它?我怎樣才能讓我的地圖可以使用std:sort(iterator.begin(),iterator.end(),compareFunction)?
[編輯] 貝婁是我Map.h http://pastebin.com/rACeK5av
你能告訴我們你的課程嗎? – Shoe
這不是問題,但我認爲這是一個有效的測試:你是否首先測試了一個'std :: map'來保證'Fan'對象是可排序的(即,正確地實現了'operator'')? –
@ wesley.mesquita,問題是我的地圖佔有shared_ptr而不是Fan,我不知道如何處理這個。 –