C标准库常用函数

memset函数:暴力清空

void *memset(void *str, int c, size_t n)
  • str -- 指向要填充的内存块。

  • c -- 要被设置的值。该值以 int 形式传递,但是函数在填充内存块时是使用该值的无符号字符形式。

  • n -- 要被设置为该值的字符数。

    char str[10];
memset(str,0,sizeof(str));

memcpy:暴力拷贝

void *memcpy(void *str1, const void *str2, size_t n)
  • str1 -- 指向用于存储复制内容的目标数组,类型强制转换为 void* 指针。

  • str2 -- 指向要复制的数据源,类型强制转换为 void* 指针。

  • n -- 要被复制的字节数。

    char src[50]="please help child!";
char t[50];
memcpy(t,src,strlen(src)+1);//存在一个问题,最后一个参数+1后不会乱码,不+就会乱,这为啥
printf("t = %s\n", t);

strcpy:字符串拷贝

//so easy...Lazy

strcmp:字符串比较

//so easy...Lazy

strlen:字符串长度

//so easy...Lazy

rand:随机数和随机字符

    srand((unsigned)time(0));//根据系统时间设置随机数种子
   rand();//产生一个0-65535的随机数,
  (rand() % (b-a))+ a;//[a,b) 的随机整数
  (rand() % (b-a+1))+ a;//要取得 [a,b] 的随机整数,使用
  (rand() % (b-a))+ a + 1;//要取得 (a,b] 的随机整数,使用
   rand() / double(RAND_MAX)//要取得 0~1 之间的浮点数,可以使用
    char f[52];
   strcpy( f, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
   srand((unsigned)time(NULL) * 10);
   f[rand()%52];//产生随机字符

complex复数类

数学运算时懒的写定义时候用的

C++常用STL知识

vector容器

三种遍历方式

  • 下标遍历,就像数组那样

  • 迭代器遍历,类似指针

  • algorthm中提供的for_each遍历算法

存放自定义类型

容器嵌套容器

注意:需要先建立容器,在把容器放进容器,不能之间嵌套

//1.构造容器
vector<int> arr{1,4,2,5,6,3,5,3,74};//奇奇怪怪的构造+定义
vector<T> v; //采用模板实现类实现,默认构造函数
vector(v.begin(), v.end()); //将v[begin(), end())区间中的元素拷贝给本身。
vector(n, elem); //构造函数将n个elem拷贝给本身。
vector(const vector &vec); //拷贝构造函数。

//2.赋值
assign(beg, end); //将[beg, end)区间中的数据拷贝赋值给本身。
assign(n, elem); //将n个elem拷贝赋值给本身。

//3.判断
size(); //返回容器中元素的个数
empty(); //判断容器是否为空

//4.插入删除
push_back(ele); //尾部插入元素ele
pop_back(); //删除最后一个元素
insert(const_iterator pos, ele); //迭代器指向位置pos插入元素ele
insert(const_iterator pos, int count,ele); //迭代器指向位置pos插入count个元素ele
erase(const_iterator pos); //删除迭代器指向的元素
erase(const_iterator start, const_iterator end); //删除迭代器从start到end之间的元素
clear(); //删除容器中所有元素

vector预留空间可以减少vector在动态扩展容量时的扩展次数

reserve(int len); //容器预留len个元素长度,预留位置不初始化,元素不可访问。

String容器

绝不是我摸鱼才不写的,我之后在填坑复习....

List容器

绝不是我摸鱼才不写的,我之后在填坑复习....

set/ multiset 容器

map/ multimap容器

其他

<unordered_map>和<unordered_set>

set和map的另一种实现版本,用起来和set和map没啥区别都是基于哈希的可以O(1)的访问和删除一个元素,但是不允许按大小排序

用于卡map时间的题

bitset位集合

只由0和1组成的数组,可以和数组一样用下标访问,也可以位运算,

用于状态压缩动态规划

algorithm常用算法

for_each(iterator beg, iterator end, _func);//遍历算法

常用排序算法

int cmp(int a, int b)  {  return a>b; }
sort(arr.begin(),arr.end());//默认的从小到大排序
sort(vec1.begin(), vec1.end(),cmp);//定义谓词,从大到小排列
reverse(arr.begin(),arr.end());//反转容器
merge(v1.begin(), v1.end(), v2.begin(), v2.end(), vtarget.begin());//合并容器

常用查找算法

vector<int>::iterator it = find(v.begin(), v.end(), 5);//注意返回值为迭代器


#include<bits/stdc++.h>
using namespace std;

class cmp{
public:
bool operator()(int val){
return val > 5;
}
};

vector<int> arr {3,2,4,5,7};
int main(void){
vector<int>::iterator it = find_if(arr.begin(),arr.end(),cmp());
if(it == arr.end()){
cout<<"没有找到"<<endl;
}else{
cout<< *it<<endl;
}
return 0;
}
bool ret = binary_search(v.begin(), v.end(),2);//二分查找算法:注意查找的容器需要为有序序列
int num = count(v.begin(), v.end(), 4);//统计元素个数

min_element

max_element

nth_element

算法竞赛细节:

1s时限运算大概1e8,根据复杂度来计算是否超时;

输出double时有时用%lf会WA到哭,所以用%f输出;

初始化的常数时间也得估计好

const int INF = 0x3f3f3f;//表示无穷大值
memset(arr,INF,sizeof(arr));//令数组初始化为无穷大

1e5以上的时间用cin就可能会有问题,最好使用scanf和printf

快速签到判断EOF

while(cin>>a){}

竞赛万能头代码

#include<bits/stdc++.h>

最新文章

  1. sql的列的说明
  2. eclipse 和 android studio 编译时报 Unsupported major.minor version 52.0错解决办法
  3. 利用Handler访问网络数据
  4. 验证标题是否存在(TextBox控件失去焦点验证)
  5. string函数分析
  6. bitmap格式分析
  7. Leap Motion 开发笔记
  8. Unity3d开发IOS游戏 基础
  9. javascript 常用array类型方法
  10. hdu2208之搜索
  11. Windows Azure 安全最佳实践 - 第 5 部分:基于Claim 的标识,单点登录
  12. AWS发布架构师认证的专业解决方案
  13. php 图片压缩处理
  14. SpringMVC文件上传下载
  15. 将某个日期字符串转换为java.sql.Date的类型
  16. hbmy周赛1--D
  17. SQL反模式学习笔记12 存储图片或其他多媒体大文件
  18. js 对象与数组相互转化的快捷方法 Object.keys()、Object.values()、Object.entries()
  19. kaggle首秀之intel癌症预测(续篇)
  20. [开源 .NET 跨平台 Crawler 数据采集 爬虫框架: DotnetSpider] [四] JSON数据解析

热门文章

  1. MySQL更新锁表超时 Lock wait timeout exceeded
  2. Iterator与Generator
  3. Node.js + Express + Knex 开发 API 接口
  4. [HDU6057] Kanade‘s convolution (FWT)
  5. 基于Vue的前端UI组件库的比对和选型
  6. 如何在Windows中批量创建VMware的虚拟机
  7. 安装配置docker&amp;maven环境
  8. day04-1群聊功能
  9. Minio纠删码快速入门
  10. ssh访问控制,阻断异常IP,防止暴力破解