c++容器操作

本文详细介绍了C++标准库中的容器共性,包括类型别名如iterator、size_type等,不同构造函数的用法,如默认构造、拷贝构造、范围构造和列表初始化。此外,还涵盖了容器的大小查询、元素添加删除、关系运算符、迭代器操作以及反向容器的特性。特别地,讨论了赋值操作和swap函数在容器中的高效实现。
摘要由CSDN通过智能技术生成

本文将介绍c++中所有容器共同的部分

1.类型别名:

(1).iterator表示此容器的迭代器类型

(2).const_iterator可以读元素但是不能修改元素的迭代器类型

(3).size_type无符号整数类型,足够储存这种容器类型最大可能的容器大小

(4).difference_type带符号整型数,足够保存两个迭代器之间的距离

(5).value_type元素类型

(6).reference元素的左值类型,与value_type&含义相同

(7).const_reference元素的const左值类型,与const value_type&含义相同

(8).以上是类内的类型别名,(在类外)使用时需要作用域运算符

vector<int>::difference_type count;
list<string>::value_type ss;

2.构造函数

vector<int>a1;						//默认构造函数,空容器
vector<int>a2(a1);					//构造a的拷贝aa
vector<int>a3(b, e);	  //构造aaa,将迭代器b、e指定的范围内的元素拷贝到aaa,array不支持
vector<int>a4{ 1,4 };				//列表初始化

3.大小

vector<int>a;	
a.size();            //forward_list不支持
a.max_size();
a.empty();

4.添加、删除(array不支持)

vector<int>a;	
a.insert();           //插入元素
a.emplace();          //插入元素
a.erase();            //删除指定元素
a.clear();            //删除所有元素

5.关系运算符

(1).所有容器都支持==、!=

(2).无序关联容器不支持关系运算符,其他都可>、>=、<、<=

6.迭代器

(1).迭代器类型类似于指针类型,需要解引用获得对象的引用

(2).可以根据是否begin==end历遍

vector<pair<int, int>>a;
a.begin();
a.end();
a.cbegin();            //c++11引入
a.cend();
a.begin()->first;

7.反向容器的额外成员(forward_list不支持)

(1).reverse_iterator按逆序寻址元素的迭代器

(2).const_reverse_iterator不能修改元素的逆序迭代器

(3).对一个反向迭代器来说,各种操作的含义发生颠倒,如++操作会得到上一个元素

vector<int>a;	
a.rbegin();        //返回指向a的尾元素的迭代器
a.rend();          //返回指向a的首元素之前位置的迭代器
a.crbegin();       //只读
a.crend();

8.赋值和swap

(1).除array外,对于swap的操作会很快:元素本身并未交换,只是交换了两个容器的内部数据结构,优于直接赋值

vector<int> a{ 1,2,3 }, b = { 8,9,4 };
a = b;
swap(a, b);
a.swap(b);
//assign不适用于array和关联容器
a.assign(b.begin(), b.end());		//迭代器
a.assign(5, 7);					//替换为5个值为7的元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值