是否允许将unordered_map转换为map?

Ric*_*ard 1 c++ boost map

正如标题所说,是否允许?如果没有,他们是否共享相同的接口或抽象类?我没有找到任何在线文件的参考.但看起来unordered_map和map正在使用相同的功能.

Use*_*ess 13

不,它们完全不同,即使你强行使用它reinterpret_cast,它也会在运行时出现可怕的错误(即可怕的未定义行为).

它们都是STL容器,因此故意具有一致的接口.这并不意味着它们在内部是相同的.


Cat*_*lus 7

他们是两种不相关的类型.如果你想基于另一个构造一个,你需要使用带有迭代器范围的构造函数(C++ 11):

template <class InputIterator>
map(InputIterator first, InputIterator last,
    const Compare& comp = Compare(), const Allocator& = Allocator());

template <class InputIterator>
unordered_map(InputIterator f, InputIterator l,
              size_type n = see below,
              const hasher& hf = hasher(),
              const key_equal& eql = key_equal(),
              const allocator_type& a = allocator_type());
Run Code Online (Sandbox Code Playgroud)