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++的更多相关文章

  1. 资料整理,SQL Server ,面试前复习笔记

    T-SQL 要掌握的知识点分类 SQL 面向数据库执行查询 SQL 从数据库取回数据 SQL 在数据库中插入新的记录 SQL 更新数据库中的数据 SQL 从数据库删除记录 SQL 创建新数据库 SQL ...

  2. 2020年大厂Java面试前复习的正确姿势(800+面试题附答案解析)

    前言 个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事.所以,劝各位不要因为面试失败而灰心. 丧失斗志.也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油! 本篇分享的面试题内容 ...

  3. 蓝桥杯-加法变乘法-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  4. 蓝桥杯-大衍数列-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  5. 蓝桥杯-第39级台阶-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  6. 蓝桥杯-手机尾号-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  7. 蓝桥杯-放麦子-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  8. 蓝桥杯-n级台阶-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  9. 蓝桥杯-四平方和-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

随机推荐

  1. JavaScript的入门

    书写的三种方式 1. 书写在script标签里面(一般会用到的) 2.书写在js文件里面(推荐)定义一个js文件(xxx.js) 3. 书写对应的事件属性里面(比较少用) 初体验 1. 目前js的代码 ...

  2. 一个监控工具monit

    最近看了一个问题,monit监控在读取配置文件之后,访问的文件是残留在容器中的,导致认为服务异常,其实一开始容器启动,并没有对应的服务. [root@10-36-235-119.fin-wealth- ...

  3. 【java】学习路线1-类型转换、隐式转换、强制转换

    /**文档注释,这里是一段文章一般放在类的外面*/public class HelloWorld{    //这个是注释的文本    public static void main(String[] ...

  4. QtCreator像C# region一样折叠代码

    C# #region "comment" [code] #endregion 就可以在VS中实现代码折叠了 QtCreator #pragma region "comme ...

  5. Hack The Box( Starting Point )

    Hack The Box [Starting Point] 初始点 -- 了解渗透测试的基础知识. 这一章节对于一个渗透小白来说,可以快速的成长.以下将提供详细的解题思路,与实操步骤. TIER 0 ...

  6. 第七十七篇:ref引用(在vue中引用组件实例)

    好家伙, 为方便理解, 我们先来写一个经典自增一按钮, 再加上一个count清零按钮, Left.vue组件中: <template> <div > <h1>我是L ...

  7. [DOM]获取元素:根据ID、标签名、HTML5新增的方法、特殊元素获取

    目录 [DOM]获取元素:根据ID.标签名.HTML5新增的方法.特殊元素获取 1.根据 ID 获取[.getElementById( )] 2.根据标签名获取[.getElementsByTagNa ...

  8. .NET 7 SDK 开始 支持构建容器化应用程序

    微软于 8 月 25 日在.NET官方博客上,.NET 7 SDK 将包括对创建容器化应用程序的支持,作为构建发布过程的一部分,从而绕过需要.显式 Docker 构建阶段. 这一决定背后的基本认知是简 ...

  9. windows bat文件设置环境变量

    主要是SET和SETX这个两个命令 SETX 永久设置用户环境变量 SETX /M 永久设置系统环境变量 SET 临时设置用户环境变量 SET /M 临时设置系统环境变量

  10. PAT (Basic Level) Practice (中文)1015 德才论 分数 25

    宋代史学家司马光在<资治通鉴>中有一段著名的"德才论":"是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得圣人,君子 ...