顺序容器(迭代器)--C++复习(9)

一、像使用指针可以遍历数组一样,我们可以使用迭代器来遍历容器;

二、迭代器常用运算:

1.*ite返回迭代器所指向的元素的引用(ite是一个迭代器);

2.ite->mem:获取迭代器中指定元素名为mem的成员,等价于(*item).mem;

3.++ite/ite++:给ite加1,指向下一个元素;同--

4.ite1==ite2,比较两个迭代器是否相等,即是否是指向同一个容器的同一个元素

三、vector和deque提供的额外运算

1.ite+/-n:返回指向后/前n个元素的迭代器

2.ite1+=ite2:ite1+ite2赋值给ite1;同-=

3.>,>=,<,<=:比较前后位置大小

四、迭代器取值范围

[first,last),前闭后开,返回第一个元素的位置和最后一个元素位置的后面。

五、实例

 1 class Person
 2 {
 3     public:
 4         int pid;
 5         void print(){cout<<pid<<endl;};//内联函数
 6 }
 7
 8 vector<Person> vp;
 9 Person p1;
10 p1.pid=1;
11 Person p2;
12 p2.pid=2;
13 Person p3;
14 p3.pid=3;
15
16 vp.push_back(p1);
17 vp.push_back(p2);
18 vp.push_back(p3);//vp容器里面保存的是Person对象
19
20 //得到一个常量迭代器
21 vector<Person>::const_iteratot it=vp.begin();//获得指向第一个元素的迭代器
22 //拿到迭代器之后,我们可以直接来访问
23 Person px=*it;//it迭代器是指向当前元素的一个指针,就可以通过解引用来得到当前对象
24 //这样还能直接调用类函数
25 px.print();
26 //另一种用法,去掉const
27 vector<Person>::iteratot it=vp.begin();
28 it->print();//指针访问它里面的元素用->
29 (*it).print();//二者等价,写法较麻烦
30 //通过it来遍历整个容器
31 while(it!=vp.end())
32 {
33     it++;
34     it->print();
35 }

原文地址:https://www.cnblogs.com/jiang-021/p/11538037.html

时间: 2024-10-22 09:41:40

顺序容器(迭代器)--C++复习(9)的相关文章

0716-----C++Primer听课笔记----------STL之顺序容器、迭代器

1. 顺序容器的初始化操作 1.1 顺序容器(vector,list,deque)的五种初始化方法,以 vector 为例. #include <iostream> #include <string> #include <vector> using namespace std; int main(int argc, const char *argv[]) { //1.定义空数组 然后后面追加 vector<string> vec1; vec1.push_ba

顺序容器(操作)--C++复习(10)

一.操作 添加删除元素.设置容器大小以及获取容器元素. 二.容器类型别名(常用) size_type:无符号整型,容器长度 iterator:迭代器:const_iterator:只读容器迭代器 value_type:元素类型 reference:元素引用 其他如逆序.迭代器差值等等. 示例: 1 void test() 2 { 3 int i; 4 vector<int>::size_type t; 5 vector<int>::iterator i; 6 .... 7 } 三.

容器迭代器

容器迭代器 尽管C++指针也是迭代器,但用的更多的是容器迭代器.容器迭代器用法和iterdemo.cpp一样,但和将迭代器申明为指针变量不同的是,你可以使用容器类方法来获取迭代器对象.两个典型的容器类方法是begin()和end().它们在大多数容器中表示整个容器范围.其他一些容器还使用rbegin()和rend()方法提供反向迭代器,以按反向顺序指定对象范围. 下面的程序创建了一个矢量容器(STL的和数组等价的对象),并使用迭代器在其中搜索.该程序和前一章中的程序相同. Listing 2.

c++顺序容器(1)

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

C++primer(第五版)第九章 顺序容器(容器的运用及其部分习题解答,C++11特性总结,重点章节内容较多)

顺序容器:为程序员提供了控制元素存储和访问顺序的能力.(无序容器)           1.顺序容器的概述           A.顺序容器的类型           vector:可变大小数组.支持快速随机访问.在尾部之外的位置插入或删除元素可能很慢.          deque:双端队列.支持快速随机访问.在头尾位置插入/删除速度很快.           list:双向链表.只支持双向顺序访问.在list中任何位置进行插入/删除操作速度都很快.          forword_list

顺序容器(二)--《C++ primer》

 前面已经简单介绍了顺序容器的定义以及一些操作,包括(添加,删除等),下面主要集中以代码的形式简单介绍一下相关用法,首先创建并初始化vector对象,一般有两大类: 1.分配指定数目元素,并初始化(分两种)          vector<int> ivec(10): vector<int> ivec(10,1): 2.把vecotr对象初始化为一段元素的副本 int a[10]={1,2,3,4,5,6,7,8,9,10}: vector<int> ivec(a,

c++顺序容器(2)

1.向顺序容器添加元素 c.push_back(t);c.emplace_back(args);//在c的尾部创建一个值为t或由args创建的元素,返回void.若在头部,back改为front c.insert(p,t);c,emplace(p,args);   c.insert(p,n,t);(插入n个)  c.insert(p,b,e);(迭代器范围) c.insert(p,i1);(列表) 注:a.除array和forward_list外,每个顺序容器都支持push_back. b.只有

C++ Primer 第九章顺序容器

一.综述 <vector>:可变大小数组.支持快速随机访问.在尾部之外的位置插入或删除元素可能很慢. <deque>:双端队列.支持快速随机访问.在头尾位置插入/删除速度很快. <list>:双向链表.只支持双向顺序访问.在list中任何位置进行插入/删除操作速度都很快. <forward_list>:单向链表.只支持单向顺序访问.在链表任何位置进行插入/删除操作速度都很快. <array>:固定大小数组.支持快速随机访问.不能添加或删除元素.

第九章:顺序容器

一.顺序容器概述:一个容器就是一些特定类型对象的集合 1.顺序容器类型:vector.deque.list.forward_list.array.string string和vector将元素保存在连续的内存空间,所以用下标访问很快,但是在中间位置添加或删除元素很耗时 list和forward_list在任何位置添加和删除操作都很快,但是访问一个元素只能遍历它,而且额外的内存开销很大 forward_list设计的目的是与最好的手写的单向链表数据结构相当的性能 deque支持下标访问,且在两端添

C++标准库——顺序容器

容器是容纳特定类型对象的集合.顺序容器将单一类型元素聚集起来,并且根据位置来存储和访问这些元素.顺序容器中元素排列顺序与元素值无关,而是根据元素值添加到容器中的次序决定的. 标准库中有三种顺序容器,分别是vector,list与deque.其中vector支持随机的快速访问,因为vector中存放数据是在内存中连续存放的.在实际的实现中,vector会提前申请一块较大的内存空间(如果指定了大小,一般是指定大小的两倍),这样每次加入新的元素时不用再申请新的内存空间,提高效率.list容器是类似于链