前言

打算刷leetcode,有些放不下Python和C++这两种语言,常有些人说用Python刷算法是作弊。感觉有些道理吧,这不认真复习一下C++的基础。

基础

vector(变长数组)

头文件:#include<vector>

使用:vector <typename> name;

访问方式:下标访问和迭代器访问

迭代器访问:

for(vector<int>::iterator it = vi.begin();it != vi.end();it++)
{
迭代部分
}

常用方法:​​push_back(x)​​、​​pop_back()​​、​​size()​​、​​clear()​​,

​insert(it,x)​​、​​erase(地址)​

set(内部自动有序且去重)

头文件:#include<set>

使用:set<typename> name;

访问方式:只能通过迭代器访问,同上

常用方法:​​insert(x)​​、​​find(value)​​、​​size()​​、​​clear()​​、​​erase(地址)​

string(字符串)

头文件:#include<string>

使用:string str = “abcd”;

访问方式:下标或迭代器访问(读入和输出用cin和cout)

特殊运算:+=(拼凑)、==、!=、<、<=、>、>=(这个不错)

常用方法:​​insert(pos,string)​​、​​substr(value)​​、​​size()/length()​​、​​erase(地址)​

map(映射)

头文件:#include<map>

使用:map <typename1,typename2> mp;

特殊用法:map <typename1,typename2>::iterator it;

it->first;//访问键

it->second;访问值

访问方式:下标或迭代器访问

特殊运算:+=(拼凑)、==、!=、<、<=、>、>=(这个不错)

常用方法:​​insert(pos,string)​​、​​substr(value)​​、​​size()/length()​​、​​erase(地址)​

queue(队列)

头文件:#include<queue>

使用:queue <int> q;

只能通过front()访问队首元素,back()访问队尾(先empty()判断是否为空)

常用方法:​​push()​​、​​pop()​​、​​empty()​​、​​size()​

stack(栈)

头文件:#include<stack>

使用:stack <typename> name;

常用方法:​​push()​​、​​top()​​、​​pop()​​、​​empty()​​、​​size()​

priority_queue(优先队列)

注:默认优先级最大的先出

头文件:#includ<queue>

使用:priority_queue<typename> name;

常用方法:​​push()​​、​​top()​​、​​pop()​​、​​empty()​​、​​size()​

使用场景:可用于贪心问题(不用排列)

priority_queue<int,vertor<int>,less<int> > q;(less<int>数字大优先级大)
priority_queue<int,vertor<int>,greater<int> > q;(less<int>数字小优先级大)

结构体的优先级问题(使用友元类)

struct fruit {
string name;
int price;
//注意:只能重载<,而且优先队列的返回符号与sort的cmp相反
friend bool operator < (fruit f1,fruit f2){
return f1.price < f2.price;
}
}

注意:使用top函数前必须用empty()判断队列是否为空

algorithm头文件

头文件:#include<algorithm>

函数: max()、min()、abs()

swap(x,y); //用来交换x和y的值

reverse(it,it2);//将数组进行反转

sort(a,a+6);//默认递增

stable_sort(a,a+6);//稳定排序

也可以自定义比较函数cmp

bool cmp(double a, double b){
return a > b;
}

结构体数组的排序

bool cmp(node a,node b){
return a.x > b.x;
}

find(开始地址,结束地址,查找数);//查找函数(一般用于verctor的查找)

主要实现在容器内查找指定元素,并且这个元素必须是基本数据类型的。

查找成功返回一个指向指定元素的迭代器,查找失败返回end迭代器。

vector<int>::iterator result = find( L.begin( ), L.end( ), 6 ); //查找3
if ( result == L.end( ) ) //没找到
cout << "No" << endl;
else //找到
cout << "Yes " <<(*result)<< endl;

后记

此刻感觉只有这些比较重要的了,如果还有的话,在进行补充就可以了。