【发布时间】:2021-07-27 15:57:45
【问题描述】:
为什么我的代码中的地图只存储两个元素而不是三个?
vector<int> v1 = { 140,229,319 };
vector<int> v2 = { 82,216,326 };
map<int, int> mp;
for (int i = 0; i < v1.size(); i++)
{
if (v1[i] > v2[i])
{
mp.insert({ 1,v1[i] - v2[i] });
}
else if (v2[i] > v1[i])
{
mp.insert({ 2,v2[i] - v1[i] });
}
}
cout << mp.size() << endl;
for (auto it = mp.begin(); it != mp.end(); it++)
{
cout << it->first << " " << it->second << endl;
}
它应该存储:(1,58) (1,13) (2,7)ideally。但它只存储(1,58) (2,7)。我检查了大小,它显示的是2。
我哪里出错了?
【问题讨论】:
-
std::map具有 唯一 键。你可能想要std::multimap -
或者您可能希望
std::vector<std::pair<int, int> >保留订单。 -
您的地图有两个唯一键:
1和2。你认为第三把钥匙是什么? -
@Jarod42 我错过了。谢谢。
标签: c++ algorithm stdvector stdmap c++-standard-library