STL

STL标准库

#include

vector(向量)

可以理解为动态数组

vector初始化

  1. //定义具有10个整型元素的向量(尖括号为元素类型名,它可以是任何合法的数据类型),不具有初值,其值不确定vectora(10);

  2. //定义具有10个整型元素的向量,且给出的每个元素初值为1vectora(10,1);

  3. //用向量b给向量a赋值,a的值完全等价于b的值vectora(b);

  4. //将向量b中从0-2(共三个)的元素赋值给a,a的类型为int型vectora(b.begin(),b.begin+3);

vector常用函数

vector<int> a,b;
//b为向量,将b的0-2个元素赋值给向量a
a.assign(b.begin(),b.begin()+3);
//a含有4个值为2的元素
a.assign(4,2);
//返回a的最后一个元素
a.back();
//返回a的第一个元素
a.front();
//返回a的第i元素,当且仅当a存在
a[i];
//清空a中的元素
a.clear();
//判断a是否为空,空则返回true,非空则返回false
a.empty();
//删除a向量的最后一个元素
a.pop_back();
//删除a中第一个(从第0个算起)到第二个元素,也就是说删除的元素从a.begin()+1算起(包括它)一直到a.begin()+3(不包括它)结束
a.erase(a.begin()+1,a.begin()+3);
//在a的最后一个向量后插入一个元素,其值为5
a.push_back(5);
//在a的第一个元素(从第0个算起)位置插入数值5,
a.insert(a.begin()+1,5);
//在a的第一个元素(从第0个算起)位置插入3个数,其值都为5
a.insert(a.begin()+1,3,5);
//b为数组,在a的第一个元素(从第0个元素算起)的位置插入b的第三个元素到第5个元素(不包括b+6)
a.insert(a.begin()+1,b+3,b+6);
//返回a中元素的个数
a.size();
//返回a在内存中总共可以容纳的元素个数
a.capacity();
//将a的现有元素个数调整至10个,多则删,少则补,其值为2
a.resize(10,2);
//b为向量,将a中的元素和b中的元素整体交换
a.swap(b);
//b为向量,向量的比较操作还有 != >= > <= <
a==b;

注意在插入时只可以使用push_back()而不可以使用下标因为只可以在建立后才可以访问

vector读取

1.可以通过下标直接获取

2.通过迭代器

for(vector<int>::iterator it=b.begin();it!=b.end();it++)
    cout<<*it<<" ";

map

可以理解为映射(一对一的关系)键值对

map的初始化

map<typename1,typename2> name ;

map读取

1.通过下标访问
2.通过迭代器访问
for(auto it = mp.begin() ; it !+ mp.end() ; it++)
{
    cout<<it->first<<it->second;
}

map常用函数

1.find(key) // 不常用 通过键来找到对应的迭代器
2.erase() // 括号里面可以时迭代器 常和find()函数连用   也可以是key 直接删除键值
3.erase (first,last) // 删除范围内的元素
4.clear() // 清空

unordered_map

map的底层实现原理是红黑树所以搜索速度较慢

如果一道题搜索较多可以用unordered_map

queue

queue初始化

push()唯一一个函数可以用来插入元素

queue常用函数

pop() // 队列中最靠前的元素删除 没有返回值
size() // 返回队列中元素的个数
empty() // 如果空返回true
front() //返回队列中的第一个元素 
back() // 返回队列中的最后一个元素

stack

stack初始化

后进先出

stack<typename> name;

stack常用函数

push() // 入栈
top() // 获取栈顶元素
pop() //栈顶元素出栈
empty() //为空返回true
size() // 获取栈内元素的个数

stack常见用法

模拟递归算法的实现 

priority_queue

#include

优先队列:顾名思义,首先它是一个队列,但是它强调了“优先”二字,所以,已经不能算是一般意义上的队列了,它的“优先”意指取队首元素时,有一定的选择性,即根据元素的属性选择某一项值最优的出队~

初始化

priority_queue<Type , container , functional>

Tpye //类型container// 容器function//排序方式!!!!!

构造函数

1.普通方法

priority_queue<int> q;                 
//通过操作,按照元素从大到小的顺序出队
priority_queue<int,vector<int>, greater<int> > q;    
//通过操作,按照元素从小到大的顺序出队

2.自定义优先级

struct cmp {     
  operator bool ()(int x, int y)     
  {        
     return x > y;   // x小的优先级高       
     //也可以写成其他方式,
     //如: return p[x] > p[y];表示p[i]小的优先级高
  }
};

结构体声明方式

struct node {     
  int x, y;     
  friend bool operator < (node a, node b)     
  {         
    return a.x > b.x;    //结构体中,x小的优先级高     
  }
};

常用函数

top 访问队头元素 !!!! 特别注意访问对头元素是top而不是frontempty 队列是否为空size 返回队列内元素个数push 插入元素到队尾 (并排序)emplace 原地构造一个元素并插入队列pop 弹出队头元素swap 交换内容

全部评论

相关推荐

2 1 评论
分享
牛客网
牛客企业服务