C++与STL简单介绍( C/C++机试)
文章目录
- C++与STL简单介绍
- 说明
- 一、C++的结构体
- 二、C++常见的输入输出
- 三、C++动态内存分配
- 四、C标准库
- 五、Vector
- vector的常用操作
- vector的一些用法
- 六、String
- string的常用操作
- string的一些注意事项
- 七、Queue & stack
- stack:先进后出
- queue:先进先出
- 八、Map
- 九、Pair
- 十、algorithm库
- sort
- 其他常用的库函数
C++与STL简单介绍
说明
本文章不够全面,仅供需要参加机试同学参考
一、C++的结构体
struct st
{int a,b;st(int _a,int _b)//构造函数,默认构造函数将会不起作用{a=_a;b=_b;}
};int main()
{st newSt(1,2);st newSt1=st(1,2);return 0;
}
二、C++常见的输入输出
//输入一行字符串(可能含有空格)
getline(cin,字符串变量名);
cin.getline(字符串变量名,输入字符上限数字);
//如果使用getline()之前有使用其他输入操作,
//那么应在getline()之前用getchar()吞掉上一步输入中留下的换行符//如果输入的一行字符串没有空格,则可以直接使用cin或者scanf,
//但是cin比scanf的效率低很多//循环读入直到文件结束
int n,m;
while(cin>>n>>m)
{}//输出小数要控制位数时,应当使用printf();
三、C++动态内存分配
int* num=new int;//new完返回一个指针
int* arr=new int[len];//len只能是常量
四、C标准库
<cstring>strlen();//字符串长度strcmp();//字符串比较strcpy();//字符串拷贝memset();//暴力清空memcpy();//暴力拷贝<cmath>//三角函数、指数函数、浮点数取整数函数<cstdlib>qsort();//C语言快排rand();//随机数malloc();free();//C语言动态分配内存<ctime>time(0);//从1970年到现在的秒数(配合随机数)clock();//程序启动到目前位置的毫秒数<cctype>isdigit();isalpha();//判断是否为数字,大小写字母
五、Vector
vector是一个可变长数组,可以使用下标访问,可以增加长度
vector的常用操作
list.size();//返回数组元素个数 时间复杂度O(1)
list.clear();//一键清空数组 O(n)
list.empty();//判断数组是否为空,如果是,则返回true O(1)
list.begin();//数组的首元迭代器 O(1)
list.end();//数组的最后一个元素的下一个元素的迭代器,实际上该元素并不存在 O(1)
list.erase(p1);//删除数组某个迭代器所在位置的数字 O(n)
list.push_back(a);//在数组最后面添加元 O(1)
list.pop_back();//删除数组最后一个元素
vector的一些用法
//头文件
#include<vector>//初始化 vector<数据类型> 变量名;vector<int>arr;//其中数据类型可以是基本数据类型也可以是结构体//初始化时设置初始长度vector<int>list(100);//利用下标遍历for(init i=0;i<list.size();i++){cout<<list[i]<<endl;}//利用迭代器遍历vector<int>::iterator it=list.begin();//声明一个迭代器for(t;it!=list.end();it++)//此处循环条件只能用!={cout<<(*it)<<endl;}
六、String
string的常用操作
//初始化
string str="hello world";
//返回字符串长度 O(n)
str.length();
str.size();//插入
str.insert(1,"Hi");//在下标为1的位置插入一个字符或一串字符串 O(n)
str.insert(str.begin(),"Hi");//在迭代器处插入 O(n)str.c_str();//返回C语言字符串,用于printf("%s\n",str.c_str()); O(n)
str.append(str2);//把str2拼接到str后面 O(n)
str.compare(str2);//strcmp(str,str2);
str==str2;
str+=str2;
str-=str2;
string的一些注意事项
string类型可以用cin输入,但不能以scanf("%s",str)方式读入
如果想要用scanf读入,可以先读入字符串再转换为str。
scanf("%s",ch);string str=string(ch);
七、Queue & stack
stack:先进后出
#include<stack>
stack<int>s;
s.front();//返回stack中的第一元素的引用
s.back();//返回最后一个元素的引用
s.push(a);//在stack栈尾添加一个元素
s.pop();//删除栈首元素
s.size();//返回栈中的元素个数
s.empty();//如果为空,返回true,否则返回false
queue:先进先出
#include<queue>
queue<int>q;
q.front();//返回queue中的第一元素的引用
q.back();//返回最后一个元素的引用
q.push(a);//在queue队尾添加一个元素
q.pop();//删除queue队首元素
q.size();//返回队列中的元素个数
q.empty();//如果为空,返回true,否则返回false
八、Map
#include<map>
map<string,int>data;//map<键的数据类型,值的数据类型>变量名
data["年龄"]=18;//向map中添加元素//遍历方式
for(map<string,int>::iterator it=data.begin();it!=data.end();it++)
{cout<<it->first<<"="<<it->second<<endl;//输出:键=值
}注意:map的效率较低,因为map的访问添加都是O(nlogn)。
解决方法:使用unordered_map,unordered_map。他们的访问添加是O(1)。
除了初始化时写成unordered_map<键类型,值类型>变量名外,其他的操作都是一样的。
九、Pair
pair<int,int>p;//pair<键的数据类型,值得数据类型>变量名
p.first=1;//键
p.second=2;//值
十、algorithm库
sort
sort(开始位置指针,结束位置指针,排序方式(默认为0,升序));//左闭右开
#include<algorithm>
#include<iostream>
#include<ctime>
#include<cstdlib>
const int n=10;
using namespace std;struct st
{int m_A,m_B;
};
st stu[n+5];bool cmp(st a,st b)//排序方式,此处是m_A的优先级大于m_B,降序
{if(a.m_A!=b.m_A) return a.m_A>b.m_A;return a.m_B>b.m_B;
}
void print(){}//写的输出函数,此处忽略
int main()
{srand(time(NULL));//随机种子for(int i=0;i<n;i++){//从1~5中随机取值stu[i].m_A=rand()%5+1;stu[i].m_B=rand()%5+1;}cout<<"排序前:"<<endl;print();cout<<"排序后:"<<endl;sort(stu+0,stu+n,cmp);print();return0;
}
说明:还有一种在结构体中进行 <运算符 重载的方式
其他常用的库函数
min(a,b);//返回两个元素中最小的一个
max(a,b);//返回两个元素中最大的一个//生成给定范围内元素组成的排列
//生成的排列会占据原本的空间,例如arr[]排列后的结果依旧存储在arr[]中
next_pernutation(a.begin(),a.end());
//生成当前排列的下一个字典序排列 例:1、2、3、4的下一个字典序排列是:1,2,4,3
next_prev_permutation(a.begin(),a.end());
//生成当前排列的上一个字典序排列 例:4、3、2、1的上一个字典序排列是:4、3、1、2
C++与STL简单介绍( C/C++机试)相关推荐
- 简单介绍红白机的发声系统以及其它音源 MMC
红白机的音源 Yamato Ryou 2013-08-23 14:52:26 本文将简单介绍红白机的发声系统以及其它音源 MMC, 红白机下称 FC, 其中的伪声音处理器称作 APU. 我才不告诉你称 ...
- 【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南
本篇博客为大家系统全面的介绍华为 od 机试所有内容,其包括如下知识点. 华为 od 机试题目 华为 od 机试流程 华为 od 机试题型分析 华为 od 机试经验分享 华为 od 机试常见问题解答 ...
- 华为机试真题分类汇总
1. 字符串 类别 题目 知识点 题目分值 / 难度 字符串 [华为机试真题 JAVA]TLV解析Ⅰ-100 字符串分隔.拼接.搜索 100/中等 字符串 [华为机试真题 JAVA]寻找相同子串-10 ...
- 【华为机试 Python实现】华为机试题集合(已更新171篇)
文章目录 新手指引 数据结构基础 华为机试真题系列 牛客网华为机试系列 Python 八股文系列 <华为机试真题详解>专栏定价99.9 包含 <华为机试真题>的所有题目. 包含 ...
- 【华为机试真题】专栏文章搜索说明
文章目录 专栏介绍 如何搜索专题文章 华为机试真题搜索快捷入口 如何找到我 专栏介绍 <华为机试真题>专栏题目含牛客网华为系列试题 及 华为机试真题两部分. 注意博客是以标题 [华为机试 ...
- [C++ STL] 各容器简单介绍
[C++ STL] 各容器简单介绍 目录 一.什么是STL? 二.容器(Containers) 2.1 vector 2.2 deque 2.3 list 2.4 set 2.5 map 2.6 容器 ...
- 【C++】STL——string的简单介绍、string类的访问和遍历、operator[] 、begin+ end begin 、rbegin + rend begin 、范围for
文章目录 1.string类 1.1string类对象的访问及遍历操作 (1)operator[] (2)begin+ end begin (3)rbegin + rend begin (4)范围fo ...
- 测试 软通动力软件测试机试_5000字长文,计算机保研机试介绍及准备策略!高分过过过!...
算法不论在保研机试还是工作面试中都是重要的考核标准,算法基础好的人逻辑思维更强,在工程中能提高问题的解决效率,能用更简单的方法.更精简的代码解决实际问题,而在保研复试中也能体现个人的编程思维和能力,大 ...
- 简单介绍一下R中的几种统计分布及常用模型
统计学上分布有很多,在R中基本都有描述.因能力有限,我们就挑选几个常用的.比较重要的简单介绍一下每种分布的定义,公式,以及在R中的展示. 统计分布每一种分布有四个函数:d――density(密度函数) ...
- LVS(Linux Virtual Server)三种负载均衡模型和十种调度的简单介绍
LVS(Linux Virtual Server)三种负载均衡模型和十种调度的简单介绍 LVS (Linux Virtual Server) LVS(Linux Virtual Server)其实就是 ...
最新文章
- 在MVVM实践中的Command与CommandParameter的使用
- Web API 之SelfHost与OwinSelfHots加载外部程序
- oracle备份还原采集,oracle 备份还原
- Linux安装好php后找不到php.ini
- pandas操作sql数据库
- 关于在用异步消息处理机制使用Message.Obtain()方法(而非New Message)获得一个Message对象的好处
- OpenCV学习笔记(十):图像金字塔Pyramid和图像缩放:pyrDown(),pyrUp(),resize()
- 1.7 LINUX启动流程
- 公基会考计算机知识,公基计算机基础知识汇总70.doc
- Web核心技术-服务器端技术
- adb 驱动安装说明文档
- 检查mysql的空密码 弱密码_识别SQLServer中空密码或者弱密码的登录名
- 电子元器件之电容-2
- 旷视研究院参会PRCV2019 推进模式识别与CV技术交流
- 天玑处理器排行榜2022 联发科天玑处理器性能排行榜2022
- 机器如何猜你所想?阿里小蜜预测平台揭秘
- sbrkr.c:(.text._sbrk_r+0xc): undefined reference to `_sbrk'
- 《支付系统-3交易系统》
- 4、关于step的设置
- MySQL查询日期为一年第几天第几周,天数周数反查日期