一文带你了解C++STL

目录

一、顺序和关联容器共同支持的成员函数

二、vector

  1. vector的构造

  2. 赋值操作

  3. 直接访问向量元素

  4. vector向量的常用操作

二、list

  1. 链表的构造(模板参数T是链表的数据类型)

  2. 链表赋值

  3. 链表存取

  4. 链表插入和删除

  5. 链表的特殊操作

三、stack

主要操作

一、顺序和关联容器共同支持的成员函数

begin() 指向第一个元素

end() 指向最后一个元素

erase() 删除容器中的一个或多个元素

rbegin() 指向按反顺序的第一个元素

rend() 指向按反顺序的末端位置

clear() 删除容器中的所有元素

二、vector

向量容器,类似于动态数组,比数组灵活

  1. vector的构造

1 1vector c //产生一个空vector,其中没有任何元素

2 vector c1(c2) //产生同型c2向量的一个复本(c2所有元素被复制给c1)

3 vector c(n,elem) //产生大小为n的向量c,且每个元素都是elem

4 vector c(beg,end) //产生一个向量,并用区间[beg,end]作为元素的初值

  1. 赋值操作

1 c1=c2 //将向量c2的元素全部赋值给c1

2 c.assign(n,e) //复制n个元素e,赋值给向量c

3 c.assign(beg,end) //将区间[beg,end]内的元素赋值给c

4 c1.swap(c2) //将c1与c2向量互换

  1. 直接访问向量元素

1 c.at[n] //返回下标n所标识的元素,若下标越界,返 回“out_of_range”

2 c[n] //返回下标n所标识的元素,不进行范围检查

3 c.front() //返回第一个元素

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

  1. vector向量的常用操作

1 c.insert(pos,e) //在pos位置插入e的副本,并返回新元素的位置

2 c.insert(pos,n,e) //在pos位置插入e的n个副本,不返回值

3 c.insert(pos,beg,end) //在pos位置插入区间[beg,end]内的所有元素

4 c.push_back(e) //在尾部插入元素e

5 c.push_back() //删除最后一个元素

6 c.erase(pos) //删除pos位置的元素

7 c.erase(beg,end) //删除区间[beg,end]内的所有元素

8 c.clear() //删除所有元素,清空容器

9 c.size() //返回向量c中的元素个数

10 c.resize(n) //将c重新设置为大小为n个元素的向量,如果n比原来的元素多,则多出的元素常被初始化为0

上述成员函数参数中涉及的位置pos都与vector的迭代器有关,要操作这些成员函数,必须定义对应向量的迭代器,并通过迭代器访问pos指向的向量元素

二、list

双向链表,可以从头到尾或从尾到头访问链表中的节点,节点可以是任意数据类型。链表中节点的访问常常通过迭代器进行。

  1. 链表的构造(模板参数T是链表的数据类型)

1 list c //建立一个空链表c

2 list c1(c2) //建立与c2同型的链表c1(c2的每个元素都被复制)

3 list c(n) //建立具有n个元素的链表c,元素值由默认构造函数产生

4 list c(n,e) //建立n个元素的链表c,每个元素的值都是e

5 list c(beg, end) //建立链表c,并用[beg, end]区间内的元素作初始化

6 c.~list() //销毁链表c,释放内存

  1. 链表赋值

1 c1=c2 //将c2链表的全部元素赋值给c1链表

2 c1.assign(n,e) //将元素e拷贝n次到c1链表

3 c.assign(beg,end) //将区间[beg,end]的元素赋值给c

4 c1.swap(c2) //将链表c1和c2的全部元素互换

  1. 链表存取

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

2 c.back() //返回最后一个元素,不检查元素存在与否

  1. 链表插入和删除

1 c.insert(pos,e) //在pos位置插入元素e的副本,并返回新元素的位置

2 c.insert(pos,n,e) //在pos位置插入元素e的n个副本,没有返回值

3 c.insert(pos, beg, end) //在pos位置插入区间[ bed, end]内的全部元素

4 c.push_back(e) //在尾部追加一个元素e的副本

5 c.pop_back(e) //删除最后一个元素

6 c.push_front(e) //在表头插入元素e的一个副本

7 c.pop_front() //删除第一个元素

8 c.remove(val) //删除值为val的元素

9 c.remove_if(op) //删除所有“造成op(e)结果为true”的元素

10 c.erase(pos) //删除pos指向的元素,返回下一元素的位置

11 c.erase(beg, end) //删除区间[beg,end]内的元素,返回下一元素位置

12 c.resize(n) //将链表c的大小重新设置为n

13 c.clear() //删除链表所有元素,将整个容器置空

  1. 链表的特殊操作

1 c.unique() //删除相邻重复元素,只留一个

2 c.unique(op) //若存在若干相邻且使op()操作为true的元素,删除重复,只留一个

3 c1.splice(pos, c2) //将c2内的所有元素转换到c1内,pos之前

4 c1.splice(pos, c2, c2pos) //将c2链表的c2pos所指元素移到c1内的pos指向的位置

5 c1.splice(pos, c2, c2beg, c2end) //将c2内[c2beg, c2end]区间的所有元素转换到c1 内pos之前

6 c.sort() //以operator<为准则,对所有元素排序

7 c.sort(op) //以op()为准则,对所有元素排序

8 c1.merge(c2) //c2合并到c1,若合并前有序则合后仍有序

9 c.reverse() //将所有元素反序

三、stack

堆栈是一种较简单的容器,是一种受限制的向量,只允许在一端存取变量

LIFO(Last in first out)

主要操作

push() //将第一个元素加入stack内,加入的元素放在栈顶

top() //返回栈顶元素元素值

pop() //删除栈顶元素

**关注我,带你遨游代码世界!

私信回复 “资料” 获取更多**

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章