c++容器

1.顺序容器 C++标准库中有三种顺序容器:vector list deque vector:支持快速随机访问,在尾部之外的位置插入或删除元素可能较慢 list:支持快速插入/删除,只支持双向顺序访问 deque:双端队列,支持快速随机访问,头尾插入和删除速度很快 还有array(不能添加和删除)forward_list,String(保存字符)

2.哪种顺序容器好? 通常,使用vector 1)如果要求在容器的中间插入和删除元素,应使用listforward_list 2)如果只在头尾位置插入和删除元素,则使用deque

 3.容器库 顺序类型基本能保存任意类型的元素,也可以定义一个容器,其元素为另一个容器: vector<vector<string>> lines; 容器操作: C c; 默认构造函数,构造空容器 C c1c2; 构造c2的拷贝c1 赋值: c1=c2 c1中的元素替换为c2中元素 a.swapb); 交换ab 大小: c.size(); c中元素的数目 添加/删除元素: c.insert(args); 拷贝argsc 关系运算符: ==,!= 所有容器都支持 <,<=,>,>=不支持无序关联容器 获取迭代器: c.begin(),c.end();返回迭代器

4.迭代器 迭代器范围:一个迭代器范围与一对迭代器表示,通常用beginend表示或者firstlast,标记了容器中元素的一个范围。一般last指向尾元素之后的位置。 迭代器范围中的元素包括从first开始到last(不包含last)之间的所有元素。这种范围称为左闭合区间[firstlast). whilefirst!=last{ *first=val; ++first;}//可用类似代码来处理一个元素范围。 vectordeque将元素在内存中连续保存,list则将元素以链表方式存储,因此前者可实现迭代器的大小比较,后者不支持只能用!===

5.容器类型成员 每个容器定义了多个类型。如size_typeiteratorconst_iterator.如: list<string>::iterator iter;//通过list<string>定义一个迭代器类型

6.beginend成员 r的版本返回反向迭代器,带c的返回const迭代器,如 list<string> a; auto it1=a.rbegin();//list<string>::reverse_iterator auto it2=a.crbegin();//list<string>::const_reverse_iterator

7容器定义和初始化 C c C c1c2); C c1=c2C c{a,b,c...}; 只有顺序容器的构造函数才能接受大小参数n,如C seq(n); 1)拷贝初始化 当传递迭代器参数来拷贝一个范围时,就不要求容器类型是相同的了。而且,新容器和原容器的元素类型也可以不同,只要能将拷贝的元素转换。例如 list<string> authors; vector<const char*> articles; deque<string> authlist(authors);//容器类型不匹配 vector<string> words(articles);//容器类型必须匹配 forward_list<string> words(articles.begin(),articles.end());//可将const char*转化为string 也可用it代替articles.end()it代表authors中的一个元素) 2)列表初始化 3)与顺序容器大小相关的构造函数 4)标准库array具有固定大小 比如定义array时,不仅要指定元素类型也要指定容器大小 array<int,42> 虽然不能对内置数组类型进行拷贝,但是array没有这种限制。如: int dig[10];intcpy[10]=dig;//错误 array<int,10>digs; array<int,10> copy=digs;

8.赋值和swap swapc1c2);交换c1c2中的数据,比c2c1拷贝快的多 vector <string> sve1(10);vector<string> sve2(24); swap(sve1,sve2);//交换后sve1中有24个元素,sve2中有10个元素(相当于交换了容器外壳) assign用于替换元素,不适用于关联容器和array。用于已经声明的容器。 seq.assign(b,e)//seq中的元素替换为迭代器be表示的范围的元素。 9.容器大小操作 size,empty,max_size; forward_list支持max_sizeempty,不支持size

10.关系运算符 如果两个容器一样大小,且元素顺序相等,容器相等。 容器大小不同,元素相等,较小容器小于较大容器。 其余情况取决于第一个不同元素大小比较结果。 猪:只有当元素类型定义了相应的比较运算符是,我们才可以使用关系运算符来比较两容器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值