打算刷leetcode,有些放不下Python和C++这两种语言,常有些人说用Python刷算法是作弊。感觉有些道理吧,这不认真复习一下C++的基础。
头文件:#include
使用:vector
访问方式:下标访问和迭代器访问
迭代器访问:
for(vector<int>::iterator it = vi.begin();it != vi.end();it++)
{
迭代部分
}
常用方法:push_back(x)
、pop_back()
、size()
、clear()
,
insert(it,x)
、erase(地址)
头文件:#include
使用:set
访问方式:只能通过迭代器访问,同上
常用方法:insert(x)
、find(value)
、size()
、clear()
、erase(地址)
头文件:#include
使用:string str = “abcd”;
访问方式:下标或迭代器访问(读入和输出用cin和cout)
特殊运算:+=(拼凑)、==、!=、<、<=、>、>=(这个不错)
常用方法:insert(pos,string)
、substr(value)
、size()/length()
、erase(地址)
头文件:#include
访问方式:下标或迭代器访问
特殊运算:+=(拼凑)、==、!=、<、<=、>、>=(这个不错)
常用方法:insert(pos,string)
、substr(value)
、size()/length()
、erase(地址)
头文件:#include
使用:queue
只能通过front()访问队首元素,back()访问队尾(先empty()判断是否为空)
常用方法:push()
、pop()
、empty()
、size()
头文件:#include
使用:stack
常用方法:push()
、top()
、pop()
、empty()
、size()
注:默认优先级最大的先出
头文件:#includ
使用:priority_queue
常用方法: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()判断队列是否为空
头文件:#include
函数: 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;
此刻感觉只有这些比较重要的了,如果还有的话,在进行补充就可以了。