文章目录

  • 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++机试)相关推荐

  1. 简单介绍红白机的发声系统以及其它音源 MMC

    红白机的音源 Yamato Ryou 2013-08-23 14:52:26 本文将简单介绍红白机的发声系统以及其它音源 MMC, 红白机下称 FC, 其中的伪声音处理器称作 APU. 我才不告诉你称 ...

  2. 【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南

    本篇博客为大家系统全面的介绍华为 od 机试所有内容,其包括如下知识点. 华为 od 机试题目 华为 od 机试流程 华为 od 机试题型分析 华为 od 机试经验分享 华为 od 机试常见问题解答 ...

  3. 华为机试真题分类汇总

    1. 字符串 类别 题目 知识点 题目分值 / 难度 字符串 [华为机试真题 JAVA]TLV解析Ⅰ-100 字符串分隔.拼接.搜索 100/中等 字符串 [华为机试真题 JAVA]寻找相同子串-10 ...

  4. 【华为机试 Python实现】华为机试题集合(已更新171篇)

    文章目录 新手指引 数据结构基础 华为机试真题系列 牛客网华为机试系列 Python 八股文系列 <华为机试真题详解>专栏定价99.9 包含 <华为机试真题>的所有题目. 包含 ...

  5. 【华为机试真题】专栏文章搜索说明

    文章目录 专栏介绍 如何搜索专题文章 华为机试真题搜索快捷入口 如何找到我 专栏介绍 <华为机试真题>专栏题目含牛客网华为系列试题 及 华为机试真题两部分. 注意博客是以标题 [华为机试 ...

  6. [C++ STL] 各容器简单介绍

    [C++ STL] 各容器简单介绍 目录 一.什么是STL? 二.容器(Containers) 2.1 vector 2.2 deque 2.3 list 2.4 set 2.5 map 2.6 容器 ...

  7. 【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 ...

  8. 测试 软通动力软件测试机试_5000字长文,计算机保研机试介绍及准备策略!高分过过过!...

    算法不论在保研机试还是工作面试中都是重要的考核标准,算法基础好的人逻辑思维更强,在工程中能提高问题的解决效率,能用更简单的方法.更精简的代码解决实际问题,而在保研复试中也能体现个人的编程思维和能力,大 ...

  9. 简单介绍一下R中的几种统计分布及常用模型

    统计学上分布有很多,在R中基本都有描述.因能力有限,我们就挑选几个常用的.比较重要的简单介绍一下每种分布的定义,公式,以及在R中的展示. 统计分布每一种分布有四个函数:d――density(密度函数) ...

  10. LVS(Linux Virtual Server)三种负载均衡模型和十种调度的简单介绍

    LVS(Linux Virtual Server)三种负载均衡模型和十种调度的简单介绍 LVS (Linux Virtual Server) LVS(Linux Virtual Server)其实就是 ...

最新文章

  1. 在MVVM实践中的Command与CommandParameter的使用
  2. Web API 之SelfHost与OwinSelfHots加载外部程序
  3. oracle备份还原采集,oracle 备份还原
  4. Linux安装好php后找不到php.ini
  5. pandas操作sql数据库
  6. 关于在用异步消息处理机制使用Message.Obtain()方法(而非New Message)获得一个Message对象的好处
  7. OpenCV学习笔记(十):图像金字塔Pyramid和图像缩放:pyrDown(),pyrUp(),resize()
  8. 1.7 LINUX启动流程
  9. 公基会考计算机知识,公基计算机基础知识汇总70.doc
  10. Web核心技术-服务器端技术
  11. adb 驱动安装说明文档
  12. 检查mysql的空密码 弱密码_识别SQLServer中空密码或者弱密码的登录名
  13. 电子元器件之电容-2
  14. 旷视研究院参会PRCV2019 推进模式识别与CV技术交流
  15. 天玑处理器排行榜2022 联发科天玑处理器性能排行榜2022
  16. 机器如何猜你所想?阿里小蜜预测平台揭秘
  17. sbrkr.c:(.text._sbrk_r+0xc): undefined reference to `_sbrk'
  18. 《支付系统-3交易系统》
  19. 4、关于step的设置
  20. MySQL查询日期为一年第几天第几周,天数周数反查日期

热门文章

  1. python按键按下改变数值_「正点原子NANO STM32开发板资料连载」第十六章电容触摸按键实验...
  2. 微信公众号用到的网站
  3. 我国启动新型数据保护密码算法研究
  4. MySQL编译安装时常见错误分析
  5. Asp.net Boilerplate之AbpSession扩展
  6. 学习面向对象的第一天,感觉还好啦
  7. hdu1002——A + B Problem II
  8. git push 忽略.idea文件夹下的文件
  9. mybatis运行原理详解
  10. 设置tomcat 默认访问路径