yes*_*aaj 1 c++ data-structures
How to convert a multimap<int,int> to vector<pair<int,int> > efficiently
编辑:很抱歉我实际上正在寻找将矢量转换为地图的麻烦
a的值类型multimap<int,int>是pair<int,int>-你想你的矢量持有什么.因此,您可以使用构造函数初始化multimap中的向量:
std::vector< std::pair<int,int> > v( mmap.begin(), mmap.end() );
Run Code Online (Sandbox Code Playgroud)
或者,如果您想要复制元素的现有向量:
v.resize( mmap.size() );
std::copy( mmap.begin(), mmap.end(), v.begin() );
Run Code Online (Sandbox Code Playgroud)
您也可以使用std::back_inserter,但由于向量重新分配,通常会更慢:
std::copy( mmap.begin(), mmap.end(), std::back_inserter(v) );
Run Code Online (Sandbox Code Playgroud)
编辑 要回答您的其他问题 - 您可以以类似的方式将矢量转换为多图.multimap还有一个接受迭代器范围的构造函数:
std::multimap<int,int> mmap(v.begin(), v.end());
Run Code Online (Sandbox Code Playgroud)
当然,这v是假设的std::vector< std::pair<int,int> >.