如何有效地将vector <pair <int,int >>>转换为multimap <int,int>?

yes*_*aaj 1 c++ data-structures

How to convert a multimap<int,int> to vector<pair<int,int> > efficiently

编辑:很抱歉我实际上正在寻找将矢量转换为地图的麻烦

Boj*_*nik 5

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> >.