一些常用STL(一)

动态数组Vector

使用方法,需要添加头文件#include<vector>,使用vector<数据类型>变量名这样就可以定义一个vector的变量。
vector<int>a为例
1,在数组尾部添加一个元素 a.push_back(1);
2,在数组尾部删除一个元素 a.pop_back(1);
3,访问方法,和数组相同,通过下标从0开始。
4,获取长度,使用a.size()

集合Set

集合中不会有重复的元素,使用方法,需要添加头文件#include<set>,使用set<数据类型>变量名这样就可以定义一个set集合。
set<string>a为例
1,插入元素,a.insert(),注意当插入元素在集合中存在的时候,集合不会产生任何变化。
2,删除元素,a.erase(),注意当删除元素在集合中不存在的时候,集合不会产生任何变化。
3,判断元素是否在集合中存在,a.count()存在返回1,不存在返回0。
4,遍历引用元素,需要使用迭代器。具体方法如下

for(set<string>::iterator it=a.begin();it!=a,end;it++)
{
cont<<*it<<endl;
}

映射Map

是两个集合之间的元素相互对应关系,例如有一个姓名集合,一个班级集合。如下图
图片引用自计蒜客
姓名集合为关键字集合(key),班级集合为值集合(value)。

使用方法,需要添加头文件#include<map>,map<key的类型,value的类型>映射名
map<string,int>m为例
1,插入映射,m.insert(make_pair(key中元素,value中元素));。如果插入的key已经存在,那么此次插入是无效的。
2,访问映射,通过中括号例如m["Tom"]=1,这样可以更改所对应的值。
3,检测是否有映射,通过m.count()

在C++竞赛中,常用STL(Standard Template Library)组件有vector、stack以及算法函数next_permutation。vector是一个动态数组容器,可以方便地进行元素的插入、删除和访问。stack是一个后进先出(LIFO)的容器,常用于实现递归、深度优先搜索等算法。next_permutation是一个算法函数,用于按照字典序生成某个序列的所有排列。 在竞赛中,我们可以利用vector来存储元素,使用push_back函数添加元素,使用[]操作符或迭代器进行元素的访问。可以使用stack来模拟递归过程,实现一些深度优先搜索的问题。而使用next_permutation函数可以方便地生成某个序列的所有排列。 举个例子,如果我们想要按照字典序输出1到n的全排列,可以使用next_permutation函数结合vector来实现。首先,我们可以使用一个for循环将1到n的元素添加到vector中。然后,使用do-while循环来不断调用next_permutation函数,每次生成下一个排列并输出。最后,当next_permutation函数返回false时,示已经生成了所有的排列,循环结束。 另外,如果我们需要使用栈来解决一些问题,可以使用stack容器。可以使用push函数将元素入栈,使用pop函数将元素出栈。栈的特点是后进先出,所以可以用来模拟递归过程或实现一些需要回溯的算法。 总结起来,在C++竞赛中,常用STL组件有vector、stack和算法函数next_permutation。vector可以方便地进行元素的插入、删除和访问,stack可以模拟递归过程,而next_permutation函数可以生成某个序列的所有排列。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值