2016-04-22 78 views
1

我正在爲Boost無序映射容器編寫包裝器方法。在boost無序映射中有一個方法begin(),它將一個迭代器返回給第一個元素。實際上,在我的包裝類中,我想從Begin方法返回一個std :: Unordered_map :: iterator,而不是boost :: unordered_map :: iterator 。 示例代碼: 模板將Boost :: Map迭代器轉換爲std :: iterator

boost::unordered_map<key, value> m_myMap; 

boost::unordered::unordered_map::iterator MyWrapper<>::Begin() 
{ 
    return m_myMap.begin(); 
} 

在上面的代碼中,我想返回的std :: Unordered_map:迭代 請幫

回答

2

你不能。 C++是一種強類型語言。

你能做的最好的是

  • 使用std::unordered_map
  • 使用類型擦除來隱藏實現(boost::any_iteratorboost::any_range

我spidy常識告訴我,你應該採取的迭代器通過推導出模板參數類型,而不是將它們硬編碼到您的算法中。

template <typename Iterator> 
void foo_algo(Iterator begin, Iterator end, int some_data) { 
... 
相關問題