我正在尝试使用for循环向地图添加键值:
std::map< std::pair<const int &, const int &>, double> mymap;
for(int i=0;i<3;i++){
mymap[std::make_pair(i,i+1)]=0.1*i;
}
std::cout<<mymap.size()<<std::endl;
我不明白为什么mymap
的大小只是1.我希望3的大小。我在哪里弄错了?非常感谢。
答案 0 :(得分:6)
使用std::pair<int, int>
代替std::pair<const int&, const int&>
。
const int&
是引用(与值相对)。由于i
每次都具有相同的位置,并且同一临时位置可能会用于i+1
,这意味着您每次都可以使用相同的位置。
答案 1 :(得分:0)
#include <iostream>
#include <map>
using namespace std;
int main()
{
map<pair<const int,const int>, double> mymap;
for(int i=0;i<3;i++)
{
mymap[make_pair(i,i+1)]=0.1*i;
}
cout<<mymap.size()<<endl;
return 0;
}
将输出为3'&amp;'你已经习惯了所有的差异。我认为这是一些寻求参考。