首页 > 代码库 > 关于map 容器insert顺序

关于map 容器insert顺序

  今天测试我的节点,maya一次次死掉,一点一点的打印测试,良久才知:我想当然的将插入map的顺序,作为我执行的顺序直接遍历,打印数据显示,map有自动将键值排序的功能,比如以字符串为例,会按照a、b、c....顺序排好。

   而且对于map,如果一个元素key不存在,但是直接map[key],那么map的size就增加1,我感觉有点儿相当于insert,但map[key]没有值。这样很不规范,对于有一定代码量的程序测试造成不必要的困扰,所以最好使用find函数,判断是否==map.end()

关于string、和char *

下面是一则小程序,打印的数据

#include<string>

#include<iostream>

using namespace std;

int main()

{

  char *str = "string";

  if(str == "string" )

    cout<<"str = "<<str<<endl;

  else

    cout<<"nothing"<<endl; 

  return 0;

}

结果打印的是:

  str = string

但是执行下面代码:

#include<string>

#include<iostream>

using namespace std;

int main()

{

  char chr[255] = "string";

  char *str = chr;//编译器做了隐式的转换 实际为&chr或(char *str = &chr;在一些编译器甚至会报警告信息)

  if(str == "string" )

    cout<<"str = "<<str<<endl;

  else

    cout<<"nothing"<<endl; 

  return 0;

}

结果是:

  nothing

遇见了,但目前没有完全明白透彻,待补充----------------------------------------->>

 

指针是不分配内存的,它指向的是系统的只读的内存,而数组是分配内存的,就是将系统的只读的内存里面的值复制到它的内存里面,因此可读写
http://duanhengbin.iteye.com/blog/1706635
http://zhidao.baidu.com/link?url=bkNqC8gndvsg93lqceJVNk0VwlbitmHbJhwfG8H8CRO1H6zEGdR7GIxboEsrvty-vcvd18KyLESP-hEseFFknK