学习笔记-C++ STL iterator与对指针的理解-20170618
vector的itrerator支持random access
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int>intVector;
intVector.push_back();
intVector.push_back();
intVector.push_back();
intVector.push_back();
intVector.push_back();
intVector.push_back(); vector<int>::iterator p1 = intVector.begin();
for (; p1 != intVector.end(); p1++)
{
cout << *p1 <<" " <<&p1<<endl;
}
//cout <<endl<< "the last" << *p1 << endl; // vector iterator is not dereferencable
cout <<endl<< &p1 <<endl;
cout << *(--p1) << " "<<&p1<<endl;// cout << *(p1 - ) <<" "<<&p1<< endl;
cout << p1[-] << " "<<&p1<<endl;
cout << *p1 << " " << &p1<< endl;
*p1 = ;
cout << *p1 << " " << &p1 << endl;
for (; p1 != intVector.end(); p1++)
{
cout << *p1 << " " << &p1 << endl;
}
cout << endl << endl;
for (p1=intVector.begin(); p1 != intVector.end(); p1++)
{
cout << *p1 << " " << &p1 << endl;
}
cin.get();
return ;
}
输出:
10 00FEFCF4
20 00FEFCF4
30 00FEFCF4
40 00FEFCF4
50 00FEFCF4
60 00FEFCF4
00FEFCF4
60 00FEFCF4
30 00FEFCF4
30 00FEFCF4
60 00FEFCF4
1234 00FEFCF4
1234 00FEFCF4
10 00FEFCF4
20 00FEFCF4
30 00FEFCF4
40 00FEFCF4
50 00FEFCF4
1234 00FEFCF4
PS:①当iterator指向容器中最后一个元素后面一个位置时(空),无法解引用
②iterator相当于指针,对iterator进行++或--时,iterator指向的位置前移或后移,但是iterator本身的地址是不变的,和指针一样
学习笔记-C++ STL iterator与对指针的理解-20170618的更多相关文章
- 学习笔记:STL
第一部分:(参考百度百科) 一.STL简介 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.它是由Alexander Stepanov.Me ...
- Java学习笔记16---抽象类与接口的浅显理解
抽象类是由abstract修饰的类,定义方式如public abstract class A{...}. 接口由interface修饰,定义方式如public interface B{...}. 抽象 ...
- C++ 学习笔记之——STL 库 vector
vector 是一种顺序容器,可以看作是可以改变大小的数组. 就像数组一样,vector 占用连续的内存地址来存储元素,因此可以像数组一样用偏移量来随机访问,但是它的大小可以动态改变,容器会自动处理内 ...
- 现代C++学习笔记之一入门篇:智能指针(C++ 11)
原始指针:通过new建立的*指针 智能指针:通过智能指针关键字(unique_ptr, shared_ptr ,weak_ptr)建立的指针 在现代 C++ 编程中,标准库包含智能指针,该指针用于确保 ...
- 【学习笔记】【C语言】指针
一.指针变量的定义 1. 格式:变量类型 *指针变量名; 2. 举例:int *p; char *p2; 3. 注意:定义变量时的*仅仅是指针变量的象征 二.利用指针变量简单修改其他变量的值 1. ...
- C++学习笔记(十一):void*指针、类型转换和动态内存分配
void*指针 void关键字表示“空类型”的概念.但是,这里的“空类型”不表示“任意类型”,而是表示不存在的意思,也就是说C/C++不允许你写语句void a,不存在类型为void的东西. void ...
- <深入理解C指针>学习笔记和总结 第四章 指针和数组
数组是一个什么玩意: 数组和指针我的理解,有同样之处也有不同之处.因有同样之处,因此一些资料上说,数组和指针本质是同样的.因有不同之处,因此也有一些资料上说,数组和指针是不一样的. 同样之处: 数组名 ...
- C++ Primer 学习笔记_57_类和数据抽象 --管理指针成员
复印控制 --管理指针成员 引言: 包括指针的类须要特别注意复制控制.原因是复制指针时.一个带指针成员的指针类 class HasPtr { public: HasPtr(int *p,int i): ...
- 学习笔记——迭代器模式Iterator
迭代器模式,使用很多,但是很少实现.常用的集合都支持迭代器. 集合中的CreateIterator()可用于创建自己的迭代器,在里面通过调用迭代器的构造函数Iterator(Aggregate)来绑定 ...
随机推荐
- ASP.NET根据当前时间获取,本周,本月,本季度等时间段
DateTime dt = DateTime.Now; //当前时间 DateTime startWeek = dt.AddDays(1 - Convert.ToInt32(dt.DayOfWeek. ...
- 版本工具:truck tag branch区别
truck(主干):项目开发的主体,一直处于活跃阶段 tag(标签):用来标示主干或者分支的某个状态,代表某个项目的稳定状态 branch(分支):从主干中分离出来的代码拷贝,在这里进行重大bug修复
- 【Learning】 动态树分治
简介 动态树分治整体上由点分治发展而来. 点分治是统计树上路径,而动态树分治用来统计与点有关的树上路径,比如多次询问某一些点到询问点的距离和. 前置知识就是点分治. 做法 众所周知,点分树(点分治中重 ...
- uploadify上传文件(2)--基础语法
隔了好久,因为最近搬家,离开从小生活的城市,来到杭州.找工作.找房子等诸多事宜耽误了这篇文章许久.今天难得闲暇在旅馆中完成uploadify上传文件系列的第二篇--uploadify使用的基础语法. ...
- 关于xlrd处理合并单元格
先埋个雷, 最近在做通过excel读取接口测试用例~ 流程等都是自己制定的,打算做完了之后放到GitHub上去哈哈哈. 正式进入正题~ 在写这个框架的时候,遇到了一个问题,就是同一个接口,需要为他准备 ...
- R语言︱文本挖掘之中文分词包——Rwordseg包(原理、功能、详解)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:与前面的RsowballC分词不同的 ...
- java.sql.SQLException:No suitable driver found for http://localhost:3306/school
1.错误描述 java.sql.SQLException:No suitable driver found for http://localhost:3306/school 2.错误原因 Class. ...
- Java JVM使用哪种编码格式
Java JVM使用哪种编码格式 A ASCII characters B Unicode characters C Cp1252 D UTF-8 E GBK F GBK2312 答案:B 在J ...
- eclipse和android studio的目录结构分析
不管你喜不喜欢,愿不愿意,自从Google宣布正式停止对于eclipse的支持,要开发android的APP,你都得乖乖的用android studio(以下简称AS)了,不过也不是什么悲伤的故事,对 ...
- 微信小程序hidden
首先hidden默认在display:block;情况下是会默认生效的: but在很多时候只在初始值下有效, 在data下声明 flag:true; 方法中: 无效,所以尽量不要使用hidden这个属 ...