OJ 注意点及知识点总结
2015-07-04 18:34
267 查看
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函数;
#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函数;
相关文章推荐
- SQL Server 2008 清空 删除 日志文件 (瞬间日志变几M)
- Spring MVC的生命周期
- 惠普HP ENVY 15 Notebook 5代笔记本 HD5500集显成功安装黑苹果10.10.4
- 英文简历必备自我评价用语
- 雅虎35条性能优化建议
- SAP-DYNPRO开发实例
- java 学习List 的 add 与set差分法
- CSS3新功能简要
- 关于Java三层架构简述
- WinRT中实现元素拖拉效果
- Tip:Exchange DAG部署的时候自动安装群集组件
- 社会工程学笔记1
- 如何正确回复论文审稿人意见
- join函数——Gevent源码分析
- mysql
- PHP合并数组array_merge函数运算符加号与的区别
- objective-c 揭开正则表达式的神秘面纱(转)
- Blog API Test
- c++ stl algorithm: std::find, std::find_if
- Exchange 2010虚拟目录配置要点概述