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

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

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

#include<iostream>
#include<map>
#include<string>
usingnamespace std;
 
intmain()
{
    map<int, string> mapMy;
    mapMy[0] = "My";第一种赋值方式:[ ]下标操作符
 
    map<int, string> mapYou;
    mapYou[0] =  "a";
    mapYou[1] =  "b";
    mapYou[2] =  "c";
 
    // 第二种方式:insert方法
    // map的insert函数其中的一种,将一个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
}

 

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

第一种情况:

a

b

c

第二种情况:

My

b

c

 

 

 

 

 

 

 

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

fremark创建map并动态赋值 怎么给map赋值_insert

 


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

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

谢谢~~~!


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