头文件引用
//C语言的方法:带.h的方式进行include
#include
#include
//C++的方法,直接引用即可
#include
#include
输入输出
int n; //定义n为整形
//C语言的输入输出(需要指定类型,如下指定为整形)
scanf("%d",&n);
printf("%d",n);
//C++语言的输入输出(不需要指定类型,会根据n进行自主的判定)
cin>>n;
cout<<n;
STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。
STL现在是C++的一部分,因此不用安装额外的库文件。
在C++标准中,STL被组织为下面的13个头文件:
<algorithm>、
<deque>、
<functional>、
<iterator>、<vector>、<list>、<map>、
<memory>、<numeric>、
<queue>、<set>、<stack>和<utility>。
Vector就是一个动态创建空间,且预先加载了常用的数组操作的数组.
加载:
#include
定义:
vector<int> v1; //创建一个空的向量v1
vector<int> v2(10); //创建一个向量v2,其已开辟10个元素的空间,相当于int v[10];
vector<int> v3(10,5); //创建一个向量v3,其已开辟10个元素的空间并全部赋值为5
vector<int> v4(v3.begin(),v3.end()); //创建一个向量v3,其内容为向量v3的内容
vector<int> v5(v4); //创建一个向量v5,其包含了v4的全部内容
常用接口:
a) 向量尾插入push_back();
b) 向量尾删除pop_back();
c) 插入insert();
d) 删除erase();
e) 清空clear();
f) 数据大小size();
单链表
加载:
#include
定义:
list<int> l1; //创建一个空链表
list<int> l2(10); //创建一个链表其有10个空元素
list<int> l3(5,20); //创建一个链表其有5个元素内容为20
list<int> l4(l3.begin(),l3.end()); //创建一个链表其内容为l3的内容
list<int> l5(l4); //创建一个链表其内容为l4的内容
常用接口:
a)判断是否为空empty();
b)获取大小size();
c) 链表前插入push_front() &&删除 pop_front();
d) 链表后插入push_back() &&删除 pop_back();
e) 插入insert();
f) 删除erase();
g)排序sort();
h)逆序reverse();
加载:
#include
定义:
stack<int> s;
stack<int> v(s);
常用接口:
a)大小size();
b)返回栈顶元素top();
c) 入栈push();
d) 出栈pop();
e) 判空empty();
加载:
#include
定义:
queue<int> q; //创建一个空的没有数据的队列q
queue<int> qoo(q); //创建一个队列其元素为q的全部内容
常用接口:
a)大小size();
b)入队push();
c)出队pop();
d) 访问队头元素front();
e) 访问队尾元素back();
f) 判空empty();
对每一个数据赋予一个权值,根据当前队列权值的状态进行排序,永远使得权值最大(或最小)的排在队列的最前面。
加载:(同队列)
#include
定义:
//直接输入元素则使用默认容器和比较函数
priority_queue<T>
//自定义容器和比较函数
priority_queue<T, Container, Compare>
1、Container是容器类型,(Container必须是用数组实现的容器,比如vector,deque等等,但不能用 list。STL里面默认用的是vector)。
2、Compare是比较方法
举例:
struct cmp
{ //这个比较要用结构体表示
bool operator()(int &a, int &b) const
{
return a > b;
}
};
priority_queue<int,vector<int>,cmp> q; //使用自定义比较方法
常用接口:
a)大小size();
b)入队push();
c)出队pop();
d) 访问队头元素top();
e) 判空empty();
Set(集合)属于关联式容器,也是STL中最实用的容器,关联式容器依据特定的排序准则,自动为其元素排序。
每一次插入数据都会自动进行排序。
加载:
#include
定义:
template < class T,
class Compare = less<T>,
class Alloc = allocator<T>
> class set;
第一个是值,第二个比较器,用于比较内容,默认为less即降序,第三个是内存配置器,负责内存的分配和销毁。
实际使用:set
常用接口:
a)大小size();
b) 插入元素insert();
c)删除元素erase();
d)清空元素clear();
e)查找元素find();
iterator find (const value_type& val) const;
Find方法返回一个迭代器类型的指针,因此我们直接通过find获取其数据的时候需要使用指针*的方式进行表示,否则将会报错。
cout<< *s.find(4) <
它的存储都是以一对键和值进行存储的,Map通常也可以理解为关联数组(associative array),就是每一个值都有一个键与之一一对应,因此,map也是不允许重复元素出现的。底层也会将元素进行自动排序。
加载:
#include
定义:
template < class Key,
class T,
class Compare = less<Key>,
class Alloc = allocator<pair<const Key,T> >
> class map;
第一个是键,第二个是值,这两个元素呈现对应的关系,接着第三个元素是比较器,其默认是降序排序,第四个是内存配置器,负责内存的分配和销毁。我们常用的可以直接省去第三和第四个值的输入,只输入键和值即可。
map<char,int> s
常用接口:
a)大小size();
b) 插入元素insert();
c) 删除元素erase();
d) 查找元素find();