C++STL map的指针与复制

基本上所有的博客都在说map里“=”是浅拷贝,经试验发现这些说法不对。

测试代码:

#include 
#include 

using namespace std;

int main()
{
    map m1; //初始化m1
    map m2; //初始化m2,或在此赋值m1给m2
    map *m3; //初始化map指针
    m1["a"] = 1;
    m1["b"] = 2;
    m3 = &m1;   //将m1的地址赋值给m3
    m2 = m1;    //m1赋值给m3
    //输出原始数据
    cout<<"origin data ..."<

 

测试结果:

 

C++STL map的指针与复制_第1张图片

可以看到,如果直接赋值m1给m2,改变m2并不能改变m1的值;如果将m1的地址赋值给m3指针,会改变m1的值。map指针的读取方式,除了众多博客里看到的迭代方式之外,还可以直接采用:

值=(*m3)[键]

 

你可能感兴趣的:(C++)