STL专题

1.end()函数成员标识超结尾位置,不可进行赋值操作,会导致后续再操作内存泄漏。

2.erase()方法删除指定区间元素。

3.insert()方法插入指定区间值当前位置前

4.STL函数:

<1>for_each(*first ,*end ,const*tr)//将常函数指针或lambda表达式指向特定区间,代替了原始for循环。

<2>random_shuffle(*first, *end)对迭代器指针区间进行随机排列

5.每种容器都定义了一个类级typedef名称--iterator,但实际迭代器类型都不相同。


容器模板类:

1.deque

deque表示双端队列,在STL中实现类似于vector,但deque在序列两端插入删除元素的时间是固定的,而vector是线性的,所以多发于对两端位置操作便用deque。而vector在执行对元素的随机访问和在中部操作较快。

提供d.front(), d.back()等操作。


2.list

list表示双向链表,除收尾元素外,每个元素都与前后位置元素相连接。与vector、deque不同的是,list在任意位置进行插入删除的时间都是固定的,但不支持数组表示法和随机访问,因此李斯特强调的是元素的快速插入和删除。

与矢量迭代器不同,在元素中插入删除元素后,迭代器指向位置不变(vector在插入删除元素后,迭代器指向位置不变,但位置处元素已经发生了变化)

list成员函数:

assign() 给list赋值
back() 返回最后一个元素
clear() 删除所有元素
empty() 如果list是空的则返回true
end() 返回末尾的迭代器
erase() 删除一个元素
front() 返回第一个元素
insert() 插入一个元素到list中
max_size() 返回list能容纳的最大元素数量
merge(list<T,Alloc> x) 合并两个list,两个list必须已经排序,合并后x为空
pop_back() 删除最后一个元素
pop_front() 删除第一个元素
push_back() 在list的末尾添加一个元素
push_front() 在list的头部添加一个元素
remove(const T& val) 从list删除元素
remove_if() 按指定条件删除元素
resize() 改变list的大小
reverse() 把list的元素倒转
size() 返回list中的元素个数
sort() 给list排序
splice(iterator pos,list<T,Alloc> x) 将链表x插入pos前,x将为空。
swap() 交换两个list
unique() 删除list中重复的元素
 


关联容器

1.multimap

基本的multimap声明使用模板参数指定键的类型和储存的值类型,例如:

multimap<int, string> codes;

为将信息结合在一起,实际值类型将键类型和数据类型结成一对,STL使用模板类pair<class T,class U>将这两种值储存到一个对象中。键值常用const修饰。

插入方式可先创建pair对象啊,再将其插入multimap,或创建匿名pair对象并将其插入:

codes.insert(pair<const int, string> item(213,"Los Angeles"));

对于pair对象,可使用first和second成员来访问两个部分。

对于multimap对象:

成员函数count()接受键作为参数,返回该键的元素数目。

emplace(),在当前multimap容器中的指定位置处构造新键值对。其效果和插入键值对一样,但效率更高。

erase(),删除multimap容器指定位置、指定键(key)值或者指定区域内的键值对。

equal_range(key),返回一个pair对象(包含2个双向迭代器),其中pair.first和lower_bound()方法的返回值等价,pair.second和upper_bound()方法的返回值等价。也就是说,该方法将返回一个范围,该范围中包含的键为key的键值对(map容器键值对唯一,因此该返回最多包含一个键值对)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值