C/C++ STL学习[2]顺序容器的常用操作函数

发布时间:2023年12月21日

前言

上一篇章写了常用的顺序容器以及不同顺序容器之间的区别。这篇博客主要是写顺序容器的一些基本操作和一些常用函数,以通用的操作为基准。


1. 类型别名

在一些函数源码说明对应的API中,涉及到一些类型别名,这里做一个汇总

类型名称说明个人理解
iterator此容器类型的迭代器一个类似于指针的玩意儿,用来访问容器
const_iterator可以读取元素,但不能修改元素的迭代器类型类似const ptr这种,常指针,指针本身不能发生改变
size_type无符号整数类型,足够保存两个迭代器之间的距离unsigned int
difference_type带符号整数类型,足够保存两个迭代器之间的距离int
value_type元素类型容器内存放的元素对应的类型,比如vector存放int类型数据,那么这个value_type就是int
reference元素的左值;与value_type&类型相同类似于C++中的引用,取别名
const_reference元素的const左值类型(const value_type &)不可更改的左值

2. 构造函数

容器的构造方式有很多种,最常见的可能是默认构造函数,就是我声明一个容器之后,系统默认给他一个构造空容器的函数。

下面以容器类型C作为泛称,C可以是一般容器类型容器。

构造函数构造函数说明个人理解
C c默认构造函数,构造空容器。array例外。array一般是array<int ,42>用对象的方式来理解,声明一个C类的对象,构造函数默认
C c1(c2)构造c2的拷贝c1声明C容器类对象c1,用c2来进行拷贝构造
C c(b,e)构造c,将迭代器b和e指定的范围内的元素拷贝到c。(array不支持)将一个范围的值用来初始化一个新的容器
C c{a,b,c…}列表初始化C定义了一个容器的对象,容器内存放a,b,c…元素数据

3. 赋值与swap

写法说明个人理解
c1=c2将c1中的元素替换为c2中的元素c2赋值给c1
c1={a,b,c…}将c1中的元素替换为列表中元素(不适用与array)用列表的方式进行赋值
a.swap(b)交换a和b的元素
swap(a,b)与a.swap(b)等价

4. 大小

操作说明个人理解
c.size()c中的元素数目(不支持forward_list)主要用来获取容器中有效元素个数
c.max_size()c可保存的最大元素数目主要获取c的容量大小
c.empty()若c中存储了元素,返回false,否则返回true一般用来做判断条件,看容器是否为空

5. 添加/删除元素

操作说明个人理解
c.insert(args)将args中的元素拷贝进c容器对象c调用insert函数,向容器内部插入元素c
c.emplace(inits)使用inits构造c中的一个元素
c.erase(args)删除args指定的元素
c.clear()删除c中的所有元素,返回void清空容器

6. 迭代器获取与关系运算符

类比与普通变量之间的关系运算符
所有的容器都支持相等(不等)运算符:==,!=
无序关联容器不支持关系运算符:<,<=,>,>=

操作说明个人理解
c.begin(),c.end()返回指向c的首元素和尾元素之后的迭代器
c.cbegin(),c.cend()返回const_iterator返回的迭代器是不可修改的

总结

这篇博客归纳了一下容器的一些常用操作,这里的操作都是泛型的,具体的容器还要具体对待。

文章来源:https://blog.csdn.net/Edwinwzy/article/details/135080710
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。