C++ 标准模板库(STL)学习总结

C++ 标准模板库(STL)学习总结
C++ 标准模板库(STL)学习总结

C++标准模板库(STL)

顺序性容器

1.C++ Vector(向量容器)

vector提供如下函数或操作:

clear() 移除容器中所有数据

empty() 判断容器是否为空

erase(pos) 删除pos位置的数据

erase(beg,end) 删除[beg,end)区间的数据

front() 传回第一个数据

back()返回vector中末尾元素的引用

data()返回指向vector内存的指针

insert(pos,elem) 在pos位置插入一个elem拷贝

pop_back() 删除最后一个数据

push_back(elem) 在尾部加入一个数据

resize(num) 重新设置该容器的大小

size() 返回容器中实际数据的个数

max_size()函数返回vector能够容纳的最大元素个数

begin() 返回指向容器第一个元素的迭代器

end() 返回指向容器最后一个元素的迭代器

capacity()返回vector中实际分配的内存大小

reverse()改变vector的容量大小,当vector的容量设定时,vector的容

量不会因此动态分配

operator[ ]()获取vector中元素,这个和C中获取数组元素一样

at()获取vector中的元素,这个和[]的作用一样,不过和[]不同的是,at()函数要对数组的边界进行检查,如果越界就会抛出异常,但是[]不会。

2.C++ List(链表)

Lists将元素按顺序储存在链表中. 与向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢.

assign() 给list赋值

back() 返回最后一个元素

begin() 返回指向第一个元素的迭代器

clear() 删除所有元素

empty() 如果list是空的则返回true

end() 返回末尾的迭代器

erase() 删除一个元素

front() 返回第一个元素

get_allocator() 返回list的配置器

insert() 插入一个元素到list中

max_size() 返回list能容纳的最大元素数量

merge() 合并两个list

pop_back() 删除最后一个元素

pop_front() 删除第一个元素

push_back() 在list的末尾添加一个元素

push_front() 在list的头部添加一个元素

rbegin() 返回指向第一个元素的逆向迭代器

remove() 从list删除元素

remove_if() 按指定条件删除元素

rend() 指向list末尾的逆向迭代器

resize() 改变list的大小

reverse() 把list的元素倒转

size() 返回list中的元素个数

sort() 给list排序

splice() 合并两个list

swap() 交换两个list

unique() 删除list中重复的元素

3.C++ deque(双向队列)

容器deque和vector非常相似,操作函数基本一致。它采用动态数组来管理元素,提供随机存取,可以在头尾两端进行快速安插和删除元素操作。特别要注意,除了头尾两端,在任何地方安插与删除元素,都将导致指向deque元素的任何pointers references iterators 失效。

包括的头文件为:

#include

using namespace std;

声明一个deque时,一般需要前缀std:: ,如std::deque c;

因为类型deque是一个定义在namespace std内的template 。

构造函数:

deque c ; //产生一个空的deque,其中没有任何元素

deque c1(c2); //产生另一个同型deque的副本(所有元素都被拷贝)

deque c(n) ; //产生一个大小为n的deque

deque c(n , elem) ; //产生一个大小为n的deque,

//每个元素值都是elem。

dequer c(begin,end); //产生一个deque,以区间[begin ; end]

//做为元素初值

析构函数:

c.~ deque() ;销毁所有元素,并释放内存。

非变动性操作

c.size(); //返回当前的元素数量

c.empty(); //判断大小是否为零。等同于c.size() == 0,但可能更快

c.max_size(); //可容纳元素的最大数量

c.at(idx) ; //返回索引为idx所标示的元素。如果idx越界,抛出out_of_range

c[idx] ; //返回索引idx所标示的元素。不进行范围检查

c.front() ; //返回第一个元素,不检查元素是否存在

c.back(); //返回最后一个元素

c.begin(); //返回一个随机迭代器,指向第一个元素

c.end(); //返回一个随机迭代器,指向最后元素的下一位置

变动性操作:

c.assign(n , elem); //将n个elem副本赋值给c

c.assing(beg , end); //将区间[beg;end]中的元素赋值给c;

c.push_back(elem); //在尾部添加元素elem

c.pop_back() ; //移除最后一个元素(但不回传)

c.push_front() ; //在头部添加元素elem

c.pop_front() ; //移除头部一个元素(但不回传)

c.erase(pos) ; //移除pos位置上的元素,返回一元素位置

//如c.erase( c.begin() + 5) //移除第五个元素

c.insert(pos , elem); //在pos位置插入一个元素elem,并返回新元素的位置c.insert(pos , n , elem); //在pos位置插入n个元素elem,无返回值

c.insert(pos , beg , end);

c.resize(num); //将容器大小改为num。可更大或更小。

c.resize(num , elem); //将容器大小改为num,新增元素都为 elem

c.clear(); //移除所有元素,将容器清空

关联容器

一、关联容器的类型

map 关联数组:元素通过键来存储和读取采用键-值的存储方式,键是唯一的不能重复set 大小可变的集合,只存储键(唯一),支持通过键的快速读取,不能修改已有的键值multimap 支持同一个键出现多次的map 类型

multiset 支持同一个键出现多次的set 类型

顺序容器键值的要求,键所使用的类型必须定义了<操作符

二、pair类型简介(头文件utility中定义)

pair p1;

make_pair(v1,v2) 以v1,v2值创建一个新的pair对象,返回一个pair类型

三、关联容器的操作

关联容器的操作大多数和顺序容器共享,但也存在区别:

关联容器不提供push_front,push_back,front,back,pop_front,pop_back操作

不能通过容器大小来定义关联容器,不支持assign,resize操作

四、map类型

1、 map类定义的类型

map::key_type 键的类型

map::mapped_type 值的类型

map::value_type pair类型, first元素的类型是:const

map::key_type

second元素的类型是:

map::mapped_type

1.set(集合)

set关联容器,值与键类型相同,值就是键,因为键是唯一的,所以里面的元素不会有重复的,插入元素后自动排序。

STL提供了一些通用函数,可以对set对象操作:

1、set_union(),并集;

2、set_intersection(),交集;

3、set_difference(),两个集合的差;

4、insert(),插入元素;

set的两个成员函数:

1、lower_bound(),迭代器,指向第一个不小于键参数的成员;

2、upper_bound(),迭代器,指向第一个大于键参数的成员;

set的基本操作:

begin() 返回指向第一个元素的迭代器

clear() 清除所有元素

count() 返回某个值元素的个数

empty() 如果集合为空,返回true

end() 返回指向最后一个元素的迭代器

equal_range() 返回集合中与给定值相等的上下限的两个迭代器

erase() 删除集合中的元素

find() 返回一个指向被查找到元素的迭代器

get_allocator() 返回集合的分配器

insert() 在集合中插入元素

lower_bound() 返回指向大于(或等于)某值的第一个元素的迭代器

key_comp() 返回一个用于元素间值比较的函数

max_size() 返回集合能容纳的元素的最大限值

rbegin() 返回指向集合中最后一个元素的反向迭代器

rend() 返回指向集合中第一个元素的反向迭代器

size() 集合中元素的数目

swap() 交换两个集合变量

upper_bound() 返回大于某个值元素的迭代器

value_comp() 返回一个用于比较元素间的值的函数

2. C++ multiSets(多元集合)

多元集合(multiSets)和集合(sets)相像,只不过支持重复对象。(具体用法请参照set容器) begin()返回指向第一个元素的迭代器

clear()清除所有元素

count()返回指向某个值元素的个数

empty()如果集合为空,返回true

end()返回指向最后一个元素的迭代器

equal_range()返回集合中与给定值相等的上下限的两个迭代器

erase()删除集合中的元素

find()返回一个指向被查找到元素的迭代器

get_allocator()返回多元集合的分配器

insert()在集合中插入元素

key_comp()返回一个用于元素间值比较的函数

lower_bound()返回指向大于(或等于)某值的第一个元素的迭代器max_size() 返回集合能容纳的元素的最大限值

rbegin()返回指向多元集合中最后一个元素的反向迭代器

rend()返回指向多元集合中第一个元素的反向迭代器

size()多元集合中元素的数目

swap()交换两个多元集合变量

upper_bound()返回一个大于某个值元素的迭代器

value_comp()返回一个用于比较元素间的值的函数

3.C++ maps

C++ Maps是一种关联式容器,包含“关键字/值”对

begin() 返回指向map头部的迭代器

clear()删除所有元素

count() 返回指定元素出现的次数

empty() 如果map为空则返回true

end() 返回指向map末尾的迭代器

equal_range() 返回特殊条目的迭代器对

erase() 删除一个元素

find() 查找一个元素

get_allocator() 返回map的配置器

insert() 插入元素

key_comp() 返回比较元素key的函数

lower_bound() 返回键值>=给定元素的第一个位置

max_size() 返回可以容纳的最大元素个数

rbegin() 返回一个指向map尾部的逆向迭代器

rend() 返回一个指向map头部的逆向迭代器

size() 返回map中元素的个数

swap() 交换两个map

upper_bound() 返回键值>给定元素的第一个位置

value_comp() 返回比较元素value的函数

4.C++ multimaps

begin()返回指向当前集合中第一个元素的迭代器。

clear()清除当前集合中的所有元素。

count()返回当前集合中出现的某个值的元素的数目。

empty()如果当前多元集合为空,返回true;否则返回false。

end()返回指向当前集合中最后一个元素的迭代器。

equal_range()返回集合中与给定值相等的上下限的两个迭代器。

erase() 删除元素;

find()在当前集合中查找等于key值的元素,并返回指向该元素的迭代器;

如果没有找到,返回指向多元集合最后一个元素的迭代器。

get_allocator()返回当前集合的分配器。

insert() 在集合中插入元素

key_comp()返回一个用于元素间值比较的函数对象。

lower_bound()返回一个指向大于或者等于key值的第一个元素的迭代器。

max_size()返回当前多元集合能容纳元素的最大限值。

rbegin()返回指向当前多元集合中最后一个元素的反向迭代器。

rend()返回指向集合中第一个元素的反向迭代器。

size()返回当前多元集合中元素的数目。

swap()交换当前多元集合和obj多元集合中的元素。

upper_bound()在当前多元集合中返回一个指向大于Key值的元素的迭代器value_comp()返回一个用于比较元素间的值的函数对象。

容器适配器

1.stack(栈)

empty()判断当前堆栈是否为空,为空返回true 否则返回false.

pop() 移除堆栈中最顶层元素。

push() 将val 值压栈(向堆栈栈顶压入一个数据)使其成为栈顶的第一个元素。

size() 返回当前堆栈长度(即内部数据个数)。

top() 得到堆栈栈顶数据。

2.C++ Queues(队列)

back()返回一个引用,指向队列的最后一个元素。

empty()函数返回真(true)如果队列为空,否则返回假(false)。

front()返回队列第一个元素的引用。

pop()函数删除队列的一个元素。

push()函数往队列中加入一个元素。

size()返回队列中元素的个数。

3.C++ Priority Queues(优先队列)

empty() 函数返回真(true)如果优先队列为空,否则返回假(false)。

pop() 函数删除优先队列中的第一个元素。

push() 函数添加一个元素到优先队列中,值为val。

size() 函数返回优先队列中存储的元素个数。

top() 返回一个引用,指向优先队列中有最高优先级的元素。注意只有pop()函数删除一个元素。

相关主题
相关文档
最新文档