C++ STL使用记录

使用一些便捷的工具可以大大地提高效率,避免重复地造轮子,我到现在还忘不了第一次考CCF的时候,不知道怎么用STL的工具,一道简单的约瑟夫环的问题,用队列可以轻松解决,我用数组写了好长的代码,所以这里把STL中的使用方法记录一下

VECTOR

vector是一个类似于数组的结构,但是数组需要给它指定长度,有一些还要初始化,比如我们要使用memset()函数对数组内容进行初始,vector相对于数组来说就会更方便一点。

首先如果我们要使用vector工具的话,要包含其对应的头文件

#include <vector>

其次这里不会深挖其底层的实现原理,只是记录一下使用方法

1.向vector中加入元素:push_back(),将数据加入到vector的尾部

2.删除尾部元素:pop_back()

3.删除某一元素:erase(pos)

4.清空:clear()

5.某位置插入元素:insert(pos,n)

6.构造方法:vector<数据类型> 名称

set

set也可以看做一个数组,不同的是set中的数据都是有序且唯一的,也就是如果我们向set中插入一个原来已经存在的元素,set的size是不会变的

因为是有序的,所以调用插入方法insert的时候不需要指明位置,也没有必要,只有一个参数是待插入的元素

set<int> s    定义一个set容器 类型为int型
s.begin()     返回指向第一个元素的迭代器
s.clear()     清除所有元素
s.count()     返回bool型,有返回1,无返回0
s.empty()     如果集合为空,返回true
s.end()       返回指向最后一个元素之后的迭代器,不是最后一个元素
s.erase()     删除集合中的元素
s.find()      返回一个指向被查找到元素的迭代器,如果没找到则返回end()
s.insert()    在集合中插入元素
s.size()      集合中元素的数目
s.swap()      交换两个集合变量

list

链表,这里的list是双向链表,如果使用单向链表需要使用forward_list,不需要太多解释了,构造方法:

list<数据类型>list名,可附带长度

方法如下:

push_back(),从尾部插入

push_front(),从头部插入

empty(),为空返回true

front(),获得头部元素

back(),获得尾部元素

pop_back(),不为空的前提下删掉尾部元素

pop_front(),不为空的前提下删掉头部元素

assign(),将list中元素统一替换

swap(),链表的交换

reverse(),链表逆置

merge(),a.merge(b),效果=链表中的元素,先放置所有的b中元素,再放置所有的a中元素

insert(pos,n),指定位置插入指定元素

remove(),删除指定元素

map

提供键-值方式的结构,构造时一般采用map<key,value> name,这样的方式,其中的key和value是需要指明的数据类型而不是对象,具体使用方法:
insert(pair<key类型,value类型>(待插入key,待插入value))

count(key),查找得到返回1,查找不到返回0

find(key),查找不到的情况返回map.end(),first()对象是key,second是value

map.clear(),清空

map.erase(),删除某一对,这里使用迭代器比较好

queue

队列,数据先进先出性质,具体方法:

push(),将某元素入队,进入队列尾部

pop(),出队,队首元素出队,

q.front(),获取到队首元素,

q.back(),获取到队尾元素

empty(),为空返回true

q.size(),返回队列中元素数

stack

栈,数据具有先进后出的性质,具体方法:

构造方法:stack<数据类型> name

push(n),元素入栈

pop(),弹出栈顶元素

top(),获取栈顶元素

empty(),判断是否为空,为空返回true

最近准备考试,所以这篇权做复习使用,可能写的稍微粗糙了一点,日后有机会再加完善

猜你喜欢

转载自blog.csdn.net/LieberVater/article/details/88614044