对map容器赋值需小心

C++中的容器是十分强大的功能。具体到都有什么功能,我就不细说了,我也还在研究中。总之,我感觉到了使用它的益处,给我提供了很多的方便,省了很多麻烦和时间。呃,我就是废话多,以上全是废话,可以略过。

现在开始正题。对于map的赋值,我知道的有两种方法,第一种是[ ]下标操作符(应该是这么说吧),它的使用就像数组赋值一样,具体赋值形式待看下面的代码;第二种是map的成员函数insert方法,具体细节请看《C++ Primer》,感觉里面介绍的很全面。(要是还有其他的赋值方式,望告知)

说了两种赋值方式,下面就以代码的形式具体的解说。

#include <iostream>

#include<map>

#include<string>

using namespace std;

 

int main()

{

    map<int, string> mapMy;

    mapMy[0] = "My"; // 第一种赋值方式:[ ]下标操作符

 

    map<int, string> mapYou;

    mapYou[0] = "a";

    mapYou[1] = "b";

    mapYou[2] = "c";

 

    // 第二种方式:insert方法

    // mapinsert函数其中的一种,将一个map指针指向的区间内的值,赋值到自己当中

    mapMy.insert(mapYou.begin(), mapYou.end()); 

 

    map<int, string>::iterator iter2;

    iter2 = mapMy.begin();

    for (; iter2 != mapMy.end(); ++iter2)

    {

        cout << iter2->second << endl;

    }

 

    system("pause");

    return 0;

}

 

大家认为代码的执行结果是什么?是下面的哪种情况?

第一种情况:

a

b

c

第二种情况:

My

b

c

 

 

 

 

 

 

 

答案就在下面的图片中,代码运行的结果:

 

 

具体的原因,我还没有深入的研究。忽然感觉这是我的过失,既然发现了,就应该彻底的了解为什么会有这样的结果。看来我还是不适合做研究。

在这里提出来是希望自己以后在使用map容器赋值时要小心这一点,看到的兄弟们也请你们多小心,要不程序出错的时候,再在万行代码中找出错原因会很难找。其他容器是否也有这样赋值优先级设定,我就不知道了,遇到的话,就多多留意了。

谢谢~~~


==不需要实现,
map确定相等的原理是 f(A,B)为假且f(B,A)为假时确定向等,
典型的就是A<B不成立且B<A不成立时确定向等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值