使用for循环来实例化地图

时间:2014-03-10 19:50:11

标签: c++

我正在尝试使用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的大小。我在哪里弄错了?非常感谢。

2 个答案:

答案 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;'你已经习惯了所有的差异。我认为这是一些寻求参考。