蓝桥杯赛前复习C++
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>
蓝桥杯赛前复习C++的更多相关文章
- 资料整理,SQL Server ,面试前复习笔记
T-SQL 要掌握的知识点分类 SQL 面向数据库执行查询 SQL 从数据库取回数据 SQL 在数据库中插入新的记录 SQL 更新数据库中的数据 SQL 从数据库删除记录 SQL 创建新数据库 SQL ...
- 2020年大厂Java面试前复习的正确姿势(800+面试题附答案解析)
前言 个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事.所以,劝各位不要因为面试失败而灰心. 丧失斗志.也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油! 本篇分享的面试题内容 ...
- 蓝桥杯-加法变乘法-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- 蓝桥杯-大衍数列-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- 蓝桥杯-第39级台阶-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- 蓝桥杯-手机尾号-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- 蓝桥杯-放麦子-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- 蓝桥杯-n级台阶-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- 蓝桥杯-四平方和-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
随机推荐
- bs4爬虫的一点心得----坑
bs4 里提取a标签里的坑啊 今天遇到了一个很坑的事情 使用bs4(全称:BeautifulSoup)提取一个网页里所有a标签里的href属性 比较坑的地方是这个网页里有的a标签里没有href属性,所 ...
- 使用Docker搭建Nextcloud私有网盘
一.准备材料 安装环境:linux 工具:docker 软件:MySql.Nextcloud 二.安装Docker 安装Docker:https://www.cnblogs.com/jzcn/p/15 ...
- SSM整合,快速新建javaWeb项目
整合前需要了解: spring和springmvc包扫描的注意事项 Spring applicationContext.xml (父容器),SpringMVC springmvc-servlet.xm ...
- 关于virtio_net网卡命名的小问题
最近看了一个小问题,涉及到一致性网络设备命名(Consistent Network Device Naming),在此记录一下. 系统是 4.18.0-240.el8.x86_64,centos 8. ...
- 给博客添加个充电按钮(仿B站)
今天我准备吧B站的充电按钮移植到本博客,开始- 上代码: HTML <html> <head> <link href="./space.8.f69f7d6f8f ...
- java数组---多维数组
多维数组 多维数组可以看成是数组的数组 比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组. 二维数组 public static void main(String[] args) { ...
- PHP一句话简单免杀
PHP一句话简单免杀 原型 几种已经开源的免杀思路 拆解合并 <?php $ch = explode(".","hello.ev.world.a.l"); ...
- DataGridView控件绑定数据之后,置顶操作
一个小小的置顶,就搞了半个小时,还是记录一下吧. 1.第一个问题就是datatable的插入只能是Insert DataRow,但是获取选中的行,都是DataGridViewRow,不能直接转换. 找 ...
- vivo前端智能化实践:机器学习在自动网页布局中的应用
作者:vivo 互联网前端团队- Su Ning 在设计稿转网页中运用基于self-attention机制设计的机器学习模型进行设计稿的布局,能够结合dom节点的上下文得出合理的方案. 一.背景 切图 ...
- 强大多云混合多K8S集群管理平台Rancher入门实战
@ 目录 概述 定义 为何使用 其他产品 安装 简述 规划 基础环境 Docker安装 Rancher安装 创建用户 创建集群 添加Node节点 配置kubectl 创建项目和名称空间 发布应用 偏好 ...