STL 基础运用(vector set map容器基础用法 , 其它)

vector

//vector(容器)
#include??<vector>
vector<int> vec;
vector[0];//使用下标访问元素;
vec.front();//取vec中的第一个元素;
vec.back();//取vec中的最末一个元素;
vec.push_back(x);//在向量末尾加入元素x;
vec.pop_back();//删除末尾元素,同时向量空间减少1;
vec.insert(vec.begin()+i,a);//在第i+1个元素前边插入元素a;
vec.erase(vec.begin()+i);//删除第i+1个元素;
vec.size();//取向量大小;
vec.clear();//清空向量;
reverse(vec.begin(),vec.end());//将向量翻转;
sort(vec.begin(),vec.end());//排序;
vec.resize(n,1);//改变当前向量大小为n,新增加的元素赋值为1;
vec.empty();//判断向量是否为空,为空返回1,不为空返回0;
swap(vec & v);//交换向量vec和v的值;
vec.max_size();//返回vec的最大长度;

set

//set(集合):
#include <set>
set<int> s;
s.clear();//清除所有元素;
s.count(x);//返回集合中元素x的数目,由于set中元素是唯一的,所以用来判断元素是否存在;
s.empty();//判断当前集合是否为空;
s.erase(x);//删除集合中元素x;
s.insert(x);//再集合中插入元素x;
s.size();//返回集合的大小;
s.find(x);//在集合中查找元素x,返回的是指向x所在位置的迭代器;

map(映射)

//map(映射):
#include <map>
map<int,int> mp;
map<pair<int,int>,int> mpair;
mp[0]=x;//利用数组方式插入数据,0是键,x是值;
mp.at(0)=x;//利用at执行插入操作;
mp.insert(make_pair(1,x));//利用insert插入pair(键,值)数据;
mp.emplace(make_pair(1,x));//在映射中不存在主键1时执行插入操作;
mp.size();//返回mp的大小;
mp<int,int> ::iterator iter;//定义迭代器;
for(it=mp.begin(); it!=mp.end(); ++it);//映射遍历的方式,利用迭代器实现;
mp.count(1);//统计键为1的元素存在的映射数,存在返回1,不存在返回0;
mp.erase(iter);//根据迭代器删除元素;
mp.clear();//清空映射;
mp.epty();//判断映射是否为空;
mp.find(1);//根据键1查找元素,找到以后返回迭代器;
mp.rbegin(),mp.rend();//返回反向迭代器;
lower_bound(1);//返回查找的键1的下界,即闭区间,返回的是迭代器;
upper_bound(1);//返回查找的键1的上界,即开区间,返回的是迭代器;
mp.swap(m);//将mp和m进行交换;

stack(堆栈)

//stack(堆栈):
#include <stack>
stack<int> stk;
stk.empty();//判断栈是否为空;
stk.push();//向当前堆栈中加入元素;
stk.pop();//将最后放入的元素弹出;
stk.size();//返回堆栈的大小;
stk.top();//返回堆栈 最后放入的元素;

queue(队列)

//queue(队列):
#include <queue>
queue<int> q;
q.push(x);//入队;
q.pop();//出队;
q.front();//访问队首元素;
q.back();//访问队尾元素;
q.empty();//判断队列是否为空;
q.size();//返回队列的大小;

STL库函数算法

//非修改性序列操作
#include<algorithm>
for_each()================对序列中每个元素执行操作
find()====================在序列中找某个值的第一个出现
find_if()=================在序列中找符合某谓词的第一个元素
find_first_of()===========在序列中找另一序列里的值
adjust_find()=============找出相邻的一对值
count()===================在序列中统计某个值出现的次数
count_if()================在序列中统计与某谓词匹配的次数
mismatch()================找使两序列相异的第一个元素
equal()===================如果两个序列对应元素都相同则为真
search()==================找出一序列作为子序列的第一个出现位置
find_end()================找出一序列作为子序列的最后一个出现位置
search_n()================找出一序列作为子序列的第 n 个出现位置

//修改性的序列操作
#include<algorithm>
transform()===============将操作应用于序列中的每个元素
copy()====================从序列的第一个元素起进行复制
copy_backward()===========从序列的最后元素起进行复制
swap()====================交换两个元素
iter_swap()===============交换由迭代器所指的两个元素
swap_ranges()=============交换两个序列中的元素
replace()=================用一个给定值替换一些元素
replace_if()==============替换满足谓词的一些元素
replace_copy()============复制序列时用一个给定值替换元素
replace_copy_if()=========复制序列时替换满足谓词的元素
fill()====================用一个给定值取代所有元素
fill_n()==================用一个给定值取代前 n 个元素
generate()================用一个操作的结果取代所有元素
generate_n()==============用一个操作的结果取代前 n 个元素
remove()==================删除具有给定值的元素
remove_if()===============删除满足谓词的元素
remove_copy()=============复制序列时删除给定值的元素
remove_copy_if()==========复制序列时删除满足谓词的元素
unique()==================删除相邻的重复元素
unique_copy()=============复制序列时删除相邻的重复元素
reexample()===============反转元素的次序
reexample_copy()==========复制序列时反转元素的次序
rotate()==================循环移动元素
rotate_copy()=============复制序列时循环移动元素
random_shuffle()==========采用均匀分布随机移动元素

//序列排序
#include<algorithm>
sort()====================以很好的平均次序排序
stable_sort()=============排序且维持相同元素原有的顺序
partial_sort()============将序列的前一部分排好序
partial_sort_copy()=======复制的同时将序列的前一部分排好序
nth_element()=============将第 n 个元素放到它的正确位置
lower_bound()=============找到某个值的第一个出现
upper_bound()=============找到大于某个值的第一个出现
equal_range()=============找出具有给定值的一个子序列
binary_search()===========在排好序的序列中确定给定元素是否存在
merge()===================归并两个排好序的序列
inplace_merge()===========归并两个接续的排好序的序列
partition()===============将满足某谓词的元素都放到前面
stable_partition()========将满足某谓词的元素都放到前面且维持原顺序

//集合算法
#include<algorithm>
include()=================如果一个序列是另一个的子序列则为真
set_union()===============构造一个已排序的并集
set_intersection()========构造一个已排序的交集
set_difference()==========构造一个已排序序列,包含在第一个序列但不在第二个序列的元素
set_symmetric_difference()构造一个已排序序列,包括所有只在两个序列之一中的元素

//堆操作
#include<algorithm>
make_heap()===============将序列高速得能够作为堆使用
push_heap()===============向堆中加入一个元素
pop_heap()================从堆中去除元素
sort_heap()===============对堆排序

//最大和最小
#include<algorithm>
min()=====================两个值中较小的
max()=====================两个值中较大的
min_element()=============序列中的最小元素
max_element()=============序列中的最大元素
lexicographic_compare()===两个序列中按字典序的第一个在前

//排列
#include<algorithm>
next_permutation()========按字典序的下一个排列
prev_permutation()========按字典序的前一个排列

//通用数值算法
#include<numeric>
accumulate()==============积累在一个序列中运算的结果(向量的元素求各的推广)
inner_product()===========积累在两个序列中运算的结果(内积)
partial_sum()=============通过在序列上的运算产生序列(增量变化)
adjacent_difference()=====通过在序列上的运算产生序列(与 partial_sum 相反)

//C 风格算法
#include<cstdlib>
qsort()===================快速排序,元素不能有用户定义的构造,拷贝赋值和析构函数
bsearch()=================二分法查找,元素不能有用户定义的构造,拷贝赋值和析构函数

猜你喜欢

转载自blog.csdn.net/qq_41593380/article/details/81085822
今日推荐