重拾算法竞赛之路 day#4 (“纯新手”的入门经历)(STL)

一、C++与C

1.cin比scanf慢很多,哪怕是关闭了同步也是。1e5以上的数据用cin就可能会TLE。
2.关于输出小数,printf比较方便,cout需要用头文件,cout.setprecistion(int digit)修改精度。
3.bool 类型 非0为true 0为false
4.开辟内存 new int; 返回的是指针
5.struct 可以加入构造函数

STL

  • C中原有的

    strlen() 字符串长度
    strcmp() 字符串比较
    strcpy() 字符串拷贝
    memset() 暴力清空
    memspy() 暴力拷贝
<cstdlib>
	qsort() c语言快排(一般不使用)
	rand() 随机数
	malloc() free() c语言动态分配内存
<ctime>
	time(0) 从1970年到现在的秒数(配合随机数)  srand(time(0))//真正的随机数
	clock() 程序启动到目前位置的毫秒数
<cctype>
	isdigit()、isalpha() 判断字符类型,是否为数字、是否为字母
  1. < vector >
    用指针来遍历 vector::iteartor p1;
    STL中的指针被称为迭代器
    p1++;
    erase(p1);删除p1所在数字。
  2. < string >
    string str
    str.length(),str.size();
    str.insert(1,”aaa”);在下标为1处插入一个字符串
    str.
    3.
    sort(arr,arr + n);//复杂度O(nlogn)
  • min(1,2);max(1,2);//最大最小O(n)
    min_element(arr.begin(),arr.end());//返回数组最大最小的指针O(n)
    max_element(arr.begin(),arr.end());
    mth_element(arr.begin(),arr.end());//把数组中第n小的放在第n个位置(从0开始算),并保证左边的数比它小,右边的数比它大。(类似快排)但复杂度是O(n)

  • swap(arr[0],arr[1]);//交换任意俩个同类型的变量 O(n);
    reverse(arr.begin(),arr.end());//反转数组 O(n)
    unique(arr.begin(),arr.end());//需要在sort后用,去重复的数,返回去重后的结束指针 O(n)

  • bool isExist = binary_search(arr.begin(),arr.end(), 1);// 查找对应元素是否存在 O(logn)

  • lower_bound(arr.begin(),arr.end(),2);// 如果把一个数插入到有序数组,它应该插入到哪个位置,返回插入到第一个位置的指针
    upper_bound(arr.begin(),arr.end(),2);//返回可以插入到的最后一个位置的指针

  • 1s执行1e8次

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值