STL顺序容器(2)——顺序容器操作(添加元素、访问元素、删除元素)

版权声明:小能 https://blog.csdn.net/qq_43152052/article/details/89261472

1、向顺序容器中添加元素的操作

在这里插入图片描述
关于此表的几点说明:
1、注意函数是在哪个位置插入元素
2、注意添加完元素外,函数的返回值是什么,以及插入元素后的迭代器、指针和引用还是否有效?
3、使用push_back时,是在容器的尾部创建了一个新的元素,size+1,然后用对象值来初始化该元素,注意是拷贝对象值给容器中新构建的元素。函数的返回值是void。
4、使用push_front时,deque、list、forward_list容器支持push_front操作,vector不支持。deque支持随机访问元素,并且deque在容器首尾部插入和删除元素只花费常数时间,但是在首尾之外的位置插入和删除元素很费时。函数的返回值是void。
5、使用insert函数,注意是在迭代器p所指向的迭代器之间插入元素,并且函数的返回值是新添加的第一个元素的迭代器。
6、使用emplace函数,emplace_front、emplace和emplace_back这些操作只是构造函数而不是拷贝元素,empace函数在管理容器的内存空间中直接构造元素。即调用emplace函数时,将参数传递给容器所装对象的构造函数,所以参数必须与元素类型的构造函数相匹配。简而言之,就是使用这个函数构造一个对象,然后添加在容器中。

2、访问元素

每个顺序容器包括array都有一个front成员函数,除forward_list外的所有顺序容器都有一个back成员函数,forward_list不支持递减迭代器(–iter)以及back函数
注意:在使用这些函数时,要先判断容器是否为空,否则访问操作和函数操作是没有定义的。在这里插入图片描述
1、访问成员函数返回的是引用:
在容器中返回元素的成员函数(front、back、下标和at)返回的都是引用。容器是一个const对象,则返回值是const的引用;不是const,则是普通引用,可以改变元素的值。auto变量可以来保存这个函数的返回值,但是要使用==&将变量定义为引用类型==来改变元素的值。
2、下标操作和安全的随机访问:
提供下标运算符的容器:string、vector、deque、array,同时这些容器也支持快速随机访问。
下标参数必须有效,否则程序将产生错误。at函数在下标越界时,会抛出一个异常。

3、删除元素

在这里插入图片描述
注意:在删除元素之前,必须要确保它们是存在的。
pop_front():删除首元素,不支持vector和string,这两种类型也不支持push_frontpop_back():删除尾元素,不支持forward_list
erase(p ):删除p所指定的元素,返回p所指元素之后的迭代器,即p+1这个迭代器
erase(b,e):删除b和e之间的元素,包括b不包括e,返回指向e的迭代器。倘若e本身就是尾后迭代器,则函数也返回尾后迭代器。
clear():清空容器的所有元素

猜你喜欢

转载自blog.csdn.net/qq_43152052/article/details/89261472