STL(自用)

发布时间:2024年01月08日

STL(最核心的三part):算法、容器、迭代器??

容器:1.序列式?vector、deque、liststackqueue(与插入时间地点有关)

  1. 关联式:set、multiset、map、multimap(元素位置与特定排序准则有关)

各种容器间的很多操作和函数的使用是相通的,当然也有不同,记忆时重点关注相通和特殊的。

Vector

动态数组

#include<vector>

定义变量Vector<int>v1;

带参定义vector<int>v1(array,array+n);

?????????Vector<int>v2(n,m) ?存放n个m元素

?????????Vector<int>v3(v1) ???用v1初始化为v3

赋值:v1.assign(array.begin(),array.end());左闭右开

V1.assign(n,m)

V1=v2

V1.swap(v2)

容器大小:v1.size()

V1.empty(); 返回bool型

v1.resize(num,0) 重新指定长度num,默认多出来的值为0

??????访问:下标法 ?#下标越界可能导致程序异常终止

??????迭代器:

??????at函数:v.at(下标) ?越界会报错

插入:v.insert(pos,elem) ?pos不能是下标是指针

v.insert(pos,n,elem)

v.insert(pos,begin,end) ??左闭右开,如数组区间

末尾插入:v.push_back(elem);

末尾移除:v.pop_back();

删除:v.erase(elem)? ? ? ? v.erase(it1,it2)? it为迭代器或下标(it2取不到)

迭代器

遍历元素的数据类型

统一了对容器的访问方式 迭代器自增访问

vector<int>::iterator iter; 定义一个inter迭代器

Vector<int>::reverse_iterator iter1 反向迭代器

随机访问迭代器:可以移动多个位置

end()返回容器最后一个元素后一个元素的迭代器

*iter 返回迭代器对应值

for(it=v.begin();it!=v.end();it++); ?

Deque

?双端数组

List 容器 双向链表

#include<list>

it++ √

it+5 ×

list<int>lst;

头尾操作

lst.push_back();

Lst.push_front();

lis.pop_back();

Lis.pop_front();

List<int>::iterator it;

List<int>lst(3,5);

List<int>lst(begin,end);

List<int>lst(lst1);

#基本和vector操作方式相同

List.clear();

List.erase(begin,end)

List.erase(pos); ?pos为迭代器

Lst.remove(elem);

Stack

栈相对简单,记住下面核心4个即可

Stk.top()返回栈顶元素

Stk.pop()删除栈顶元素

Stk.push()插入元素到栈顶

Stk.size()

queue

q.push_back(elem)

q.pop() 弹出队头

q.front()

q.back()

Set

集合容器 元素唯一 ?主要实现去重

自动排序(默认升序),不能指定插入位置

Set.insert(elem);仅能这样插入

拷贝构造与赋值和其他容器相同

  1. erase(it); ?#不支持反向迭代器删除

?????Set<int,greater<int>>s;降序排列

查找

Set.find(elem) #找不到返回end

Set.count(elem)

Set.lower_bound(elem)

Set.upper_bound(elem)

Map

键值对

Map<int,char>map1;

Map<string,int>map2;

插入(三种方法)

  1. map.insert(pair(3,”she”));
  2. Map.insert(map<int,string>::value_type(0,”she”));
  3. Map[3]=”xiao”???#map[key]=value;如果键存在则修改,否则插入。

获取键对应的值

  1. [ ]
  2. Find() ?返回的是迭代器
  3. at()

常用算法

Swap();

Reverse();

Unique();

Sort();

Lower_bound();

Upper_bound();

Max();min();

Max_element();min_element();

Pre_permutation();next_permutation();

Abs();exp();

Log();pow();

Sqrt();

Ceil();floor();

Round();

Gcd();lcm();

????????

???????????????

文章来源:https://blog.csdn.net/2302_80585579/article/details/135396107
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。