1.头文件
#include<vector> //vector容器
#include<map> //map容器
#include<algorithm> //sort() 函数需要加
2.宏定义
#define OK 0
#defien ERR 1
或者定义成其他。
3.字符串问题
入参有字符指针,一定要检查是不是NULL
传入的Output指针,如果没有特别说明要自己分配空间的话,也要检查是否NULL
不要改变传入的字符串,需要改变的话,可以自己定义一个新的,然后memcpy过来处理
例如:
char* newstr = (char*)malloc((strlen(pInputStr)+1) * sizeof (char)); //注意 +1
memset(newstr, 0, (strlen(pInputStr)+1) * sizeof (char)); //malloc 后一定要 memset //最后一个参数可以从上面这句复制过来
memcpy(newstr, pInputStr, strlen(pInputStr));
传参为char* ,也可以通过string处理:
string str_c, str_e;
str_c = pStrChinese; //可以这样赋值
str_e = pStrEnglish;
插一句: string有一个方法,c_str(),可以把string类型转换成 C 语言中的字符串。
若要把string类型的值赋给 char*(已分配空间),则要memecpy:
memcpy(pOutputStr, str_e.c_str(), str_e.length);
4.map
map容器就像是哈希表,就像是python中的字典,就像是javascript中的对象,都是键值对。
创建: map<int, int> transmap; //定义了一个变量transmap,是个map容器,键值都是int类型
创建迭代器: map<int, int>::iterator it; //it就是迭代器了
添加:最简单的办法就是 transmap[key] = value;
查找:transmap.find(value); //find函数返回的是索引值,如果没找到就返回最后的索引值的后一个,也就是transmap.end()的值
遍历:可以通过迭代器:
for(it = transmap.begin(); it != tansmap.end(); it++){
cout<<it->second<<" "; //迭代器的第一值是键,第二个是值,所以 it->second 是找到的值,也可以(*it).second
}
删除键值对:.erase(索引值)
it = transmap.find(value);
transmap.erase(it);
注意遍历删除时,要在删除前将索引值+1,如:
for(it = transmap.begin(); it != transmap.end();){
cout<<it->fitst<<":"<<it->second<<endl;
transmap.erase(it++);
}
清除map容器: map.clear();
排序:map中的键值对是按照 键 从小到大排的,map不支持sort函数;