假设我必须将我的Map描述为:
map<int, pair<long, int>> mp;
现在,我将图元插入为:
int y; long x;
pair<long, int> p;
for(int i = 0; i < 5; i++)
{
cin >> x >> y;
p.first = x;
p.second = y;
mp.insert({i, p}); // What is wrong here syntax wise?
}
而且,我想根据这个对的第一个值来排序。
2条答案
按热度按时间rggaifut1#
你可以用一个小技巧。
在
c++
中的Map会自动按键对所有内容进行排序,因此您可以执行以下操作=〉f0brbegy2#
一个
std::map
,在索引中,并按键排序。句号。我只能想象两种可能的方法来让它 * 排序 * 根据它的值:
在这里,如果您可以接受在使用它之前对它进行一次排序(如果您的map在填充后不发生变化,则情况有所不同),我将使用整数向量(实际map的键),如果您希望能够轻松地添加(或删除)项目,则使用
std::multimap
。您现在可以处理您的 sorted Map:
只要在原始
mp
Map中添加或删除元素,就必须更新indices
多Map。