将 Boost::Map 迭代器转换为 std::iterator
Convert Boost::Map iterator to std::iterator
我正在为 Boost 无序映射容器编写包装器方法。在 boost Unordered Map 中有一个方法 begin() ,它 return 是我包装器中第一个 element.Actually 的迭代器 class 我想 return a std::Unordered_map::iterator而不是我的 Begin 方法中的 boost::unordered_map::iterator。
示例代码:
模板
boost::unordered_map<key, value> m_myMap;
boost::unordered::unordered_map::iterator MyWrapper<>::Begin()
{
return m_myMap.begin();
}
在上面的代码中我想 return std::Unordered_map::iterator
请帮忙
你不能。 C++ 是一种强类型语言。
你能做的最好的是
- 使用
std::unordered_map
- 使用类型擦除隐藏实现(
boost::any_iterator
或 boost::any_range
)
我的敏锐感觉告诉我,您应该通过推导的模板参数类型获取迭代器,而不是将它们硬编码到您的算法中。
template <typename Iterator>
void foo_algo(Iterator begin, Iterator end, int some_data) {
...
我正在为 Boost 无序映射容器编写包装器方法。在 boost Unordered Map 中有一个方法 begin() ,它 return 是我包装器中第一个 element.Actually 的迭代器 class 我想 return a std::Unordered_map::iterator而不是我的 Begin 方法中的 boost::unordered_map::iterator。 示例代码: 模板
boost::unordered_map<key, value> m_myMap;
boost::unordered::unordered_map::iterator MyWrapper<>::Begin()
{
return m_myMap.begin();
}
在上面的代码中我想 return std::Unordered_map::iterator 请帮忙
你不能。 C++ 是一种强类型语言。
你能做的最好的是
- 使用
std::unordered_map
- 使用类型擦除隐藏实现(
boost::any_iterator
或boost::any_range
)
我的敏锐感觉告诉我,您应该通过推导的模板参数类型获取迭代器,而不是将它们硬编码到您的算法中。
template <typename Iterator>
void foo_algo(Iterator begin, Iterator end, int some_data) {
...