STL中各容器之函数总结

一.序列和关联非共有函数

所有标准库共有函数  (构造,相关属性,迭代器,插入与删除,比较,swap)

其中operator>,operator>=,operator<,operator<=,operator==,operator!=均不适用于priority_queue

顺序容器和关联容器共有函数

(1)   序列容器都提供5种相同的构造方法;关联容器都提供3种相同的构造方法

(2)    还有insert插入函数(序列容器有3个相同版本的插入。关联容器也有3个版本的)

(3)    序列容器提供2中相同的erase,关联容器提供3种相同的erase。

(4)    属性函数:除vector多了capacity()函数,其余都是size,max_size,empty这3

二.非共有函数

(1)只有序列容器才有的函数

元素的访问 ; 元素的赋值

(2)   只有关联容器才有的函数

查找

(3)   序列元素对首尾元素的插入,删除与访问

Vector

插入与删除:push_back(),pop_back()

访问:front,back(分别均有2个版本)

重要:为什么没有push_front,,但是却有front,这是start迭代器的功劳

Deque,list

插入与删除:push_back(),pop_back(),push_front,pop_front

访问:同vector

Stack,queue

插入与删除很明显

访问:queqe同vector。但是stack却只有top(也即back),为什么?

Slist

插入与删除:push_front与pop_front

访问:front

(4)   只有序列容器才有的访问之非头尾的访问

只有Vector与deque才可以,因为只有他们才提供了随机访问迭代器

1.[] (2种版本)

2.at(2种版本)

(5)只有序列容器才有的赋值

都一样;assign(2个版本)

(6)

Vector和string既有reserve,也有resize,它们两个可以利用reserve来避免不必要的重新分配。

由于deque没必要提供所谓的空间保留功能(原因见STL源码P143),所以其没有reserve函数。同理,List也只提供resize函数

关联容器不提供这两个函数。

(7)list在序列容器中比较特殊

合并:merge(2个版本),splice(3个版本)

排序:sort(2个版本)

反转

多了删除:remove(2个版本),unique(2个版本)

(8)关联容器特有的查找

Set与multiset:find,lower_bound,upper_bound,equal_range,count,

Map与multimap:前4个函数还有一个非const版本

(9)

Vector和string既有reserve,也有resize,它们两个可以利用reserve来避免不必要的重新分配。

由于deque没必要提供所谓的空间保留功能(原因见STL源码P143),所以其没有reserve函数。同理,List也只提供resize函数

关联容器不提供这两个函数。

STL中各容器之函数总结

时间: 2024-08-29 01:19:21

STL中各容器之函数总结的相关文章

STL中的容器

STL中的容器 一. 种类: 标准STL序列容器:vector.string.deque和list. 标准STL关联容器:set.multiset.map和multimap. 非标准序列容器slist和rope.slist是一个单向链表,rope本质上是一个重型字符串 非标准关联容器hash_set.hash_multiset.hash_map和hash_multimap. 几种标准非STL容器,包括数组.bitset.valarray.stack.queue和priority_queue 值得

STL中的各种排序函数

标准c++库中提供六种排序方法:qsort(),  sort(),stable_sort(),  partial_sort(),  list::sort(),  set/multiset qsort()比sort()慢并且不能排序构造函数.虚函数,一般不推荐使用.写一个比较函数传递给qsort()很麻烦: 后五个排序中,前三个是泛型算法,后两个则使用了某些容器的特别特性.所有的这些都是使用operator()来比较对象,但是在必要时指定用户自己的比较函数. 后五个每个都提供了自己的特征: 1.s

编写STL中没有定义的函数(如果能编译)

实例目标:本例介绍如何编写标准模板库STL中没有定义的函数.这里列举两个例子,一个是将所有数据类型转换成字符串型的to_string函数,另一个是它的"反函数"from_string函数,用来将字符串转化为某一类型 具体内容: 在std::string模板中没有包含一些函数实用性较强的,原因就是因为客户轻易编写其中的代码.例如:可以实现一个将所有数据类型转换为字符串型的to_string函数代码如下: #include<iostream> template<class

STL中map容器使用自定义key类型报错详解

引言 STL的map容器中,key的类型是不是随意的呢? 实践 编写测试代码 定义一个结构体来试试: struct a { char* pName; int m_a; }; map<a, int> mp; a a1; a1.m_a = 100; a1.pName = "a1"; a a2; a2.m_a = 200; a2.pName = "a2"; mp.insert(std::make_pair(a1, 1)); mp.insert(std::mak

【STL】关于STL中set容器的一些总结

原文链接 关于set,必须说明的是set关联式容器.set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序 1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作.vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构

C++STL中vector容器 begin()与end()函数、front()与back()的用法

一.begin函数 函数原型: iterator begin(); const_iterator begin(); 功能: 返回一个当前vector容器中起始元素的迭代器.   二.end函数 函数原型: iterator end(); const_iterator end(); 功能: 返回一个当前vector容器中末尾元素的迭代器.   三.front函数 函数原型: reference front(); const_reference front(); 功能: 返回当前vector容器中起

stl中的容器、迭代器和算法----vector中的find实现

来源 http://blog.csdn.net/huangyimin/article/details/6133650 stl包括容器.迭代器和算法: 容器 用于管理一些相关的数据类型.每种容器都有它的优缺点,不同的容器反映出程序设计的不同需求.容器自身可能由数组或链表实现,或者容器中的每个元素都有特殊的关键值. 迭代器 用于遍历一个数据集中的每个元素.这些数据集可能是容器或者容器的子集.迭代器的主要优点是它们为任意类型的容器提供一个小巧并且通用(注意通用很重要)的接口.例如,迭代器接口的一个操作

3.2 STL中的函数对象类模板

*: STL中有一些函数对象类模板,如下所示: 1)例如要求两个double类型的x 和y 的积,可以: multiplies<double>()(x,y); 该表达式的值就是x*y的值. 2)less是STL中最常用的函数对象类模板,其定义如下: template<class _Tp> struct less { bool oprator()(const _Tp&_x,const _Tp&_y)const { return _c<_y; } } 要判断两个i

关于STL中的map和hash_map

以下全部copy于:http://blog.chinaunix.net/uid-26548237-id-3800125.html 在网上看到有关STL中hash_map的文章,以及一些其他关于STL map和hash_map的资料,总结笔记如下:     1.STL的map底层是用红黑树实现的,查找时间复杂度是log(n):     2.STL的hash_map底层是用hash表存储的,查询时间复杂度是O(1):     3.什么时候用map,什么时候用hash_map?     这个药看具体的