acm实用小技巧

在acm题目中经常会有十分麻烦的问题,有时候这些问题可以用一些已有的方法进行解决,不需要自己写算法。所以我在这里记录下来,也是作为学习笔记。

一、memset 头文件 cstring
这个函数可以用来初始化,例如:
int x[100];
memset(x,0,sizeof(x));

二、c++中string类的用法
getline(istream &in,string &s);用来把一行的内容写入s中
find(char *c, int pos = 0);从pos开始查找字符c在当前字符串的位置,返回值为字符c的位置,若找不到,返回值为 string::npos
insert(int pos, const char *s);从pos位置插入字符串s
erase(int pos = 0, int n = npos);删除pos开始的n个字符,返回修改后的字符串

三、sort 函数 头文件 algorithm
sort可以对任意对象进行排序
在数组中,用sort(a,a+n)调用
在vector中,用sort(v.begin(),v.end())调用

四、set 集合 头文件 set
set中元素已从小到大排好序,且集合中相同元素最多只出现一次
五、map 映射 头文件 map
map就是从键(key)到值(value)的映射,且重载了[]运算符,
可以用 map<string,int> name_id 来表示名字到id的映射
可以用 name_id["mzh"]=25 这样的方式赋值

六、栈、队列和优先队列
栈:符合 后进先出 规则的数据结构 有push和pop两种操作 头文件 stack
队列:符合 先进先出 的公平队列 头文件 queue 用push和pop进行入队和出队操作

七、随机生成
cstdlib 中的 rand 函数可以生成一个[0,RAND_MAX]闭区间内的均匀随机整数
可以用rank()%n 产生一个 [0,n-1]内的随机整数
需要随机数的程序在最开始时要执行一次 srand(time(NULL)),目的是初始化“随机数种子”,而不可以多次调用

八、断言
assert 宏
用法是 assert(表达式) 当表达式为假时强行终止程序,并给出错误提示。

九、用stringstream完成数据转换 头文件 sstream
stringstream可以用来把string类型的字符串转换成int
例如:string s("12345");
int x=1; //x=1
stringstream ss(s);
ss>>x; //x=12345
也可以
string s("12345");
int x=1; //x=1
stringstream ss;
ss<<s;
ss>>x; //x=12345
还可以用str()的方法:
typename x=5.222;
cin>>x;
stringstream ss;
ss<<x;
string s;
s=ss.str(); //s="5.222"
这样就可以将多种数值转换成字符串
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值