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的更多相关文章

  1. 学习笔记:STL

    第一部分:(参考百度百科) 一.STL简介 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.它是由Alexander Stepanov.Me ...

  2. Java学习笔记16---抽象类与接口的浅显理解

    抽象类是由abstract修饰的类,定义方式如public abstract class A{...}. 接口由interface修饰,定义方式如public interface B{...}. 抽象 ...

  3. C++ 学习笔记之——STL 库 vector

    vector 是一种顺序容器,可以看作是可以改变大小的数组. 就像数组一样,vector 占用连续的内存地址来存储元素,因此可以像数组一样用偏移量来随机访问,但是它的大小可以动态改变,容器会自动处理内 ...

  4. 现代C++学习笔记之一入门篇:智能指针(C++ 11)

    原始指针:通过new建立的*指针 智能指针:通过智能指针关键字(unique_ptr, shared_ptr ,weak_ptr)建立的指针 在现代 C++ 编程中,标准库包含智能指针,该指针用于确保 ...

  5. 【学习笔记】【C语言】指针

    一.指针变量的定义 1. 格式:变量类型 *指针变量名; 2. 举例:int *p;   char *p2; 3. 注意:定义变量时的*仅仅是指针变量的象征 二.利用指针变量简单修改其他变量的值 1. ...

  6. C++学习笔记(十一):void*指针、类型转换和动态内存分配

    void*指针 void关键字表示“空类型”的概念.但是,这里的“空类型”不表示“任意类型”,而是表示不存在的意思,也就是说C/C++不允许你写语句void a,不存在类型为void的东西. void ...

  7. &lt;深入理解C指针&gt;学习笔记和总结 第四章 指针和数组

    数组是一个什么玩意: 数组和指针我的理解,有同样之处也有不同之处.因有同样之处,因此一些资料上说,数组和指针本质是同样的.因有不同之处,因此也有一些资料上说,数组和指针是不一样的. 同样之处: 数组名 ...

  8. C++ Primer 学习笔记_57_类和数据抽象 --管理指针成员

    复印控制 --管理指针成员 引言: 包括指针的类须要特别注意复制控制.原因是复制指针时.一个带指针成员的指针类 class HasPtr { public: HasPtr(int *p,int i): ...

  9. 学习笔记——迭代器模式Iterator

    迭代器模式,使用很多,但是很少实现.常用的集合都支持迭代器. 集合中的CreateIterator()可用于创建自己的迭代器,在里面通过调用迭代器的构造函数Iterator(Aggregate)来绑定 ...

随机推荐

  1. 使用nio对磁盘下的文件进行过滤

    上篇博文讲到为了解决tomcat日志自动清理的问题,翻看了tomcat-juli这个jar包.在FileHandler类下有一个利用nio完成对磁盘下过期文件进行过滤的功能实现,正好这段时间正在学习n ...

  2. Caused by: java.lang.ClassCastException: org.springframework.web.SpringServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInitializer错误解决办法

    严重: Failed to initialize end point associated with ProtocolHandler ["http-bio-8080"] java. ...

  3. PHP opcache扩展安装

    下面是我在PHP 5.4下的安装方法: https://pecl.php.net/get/zendopcache-7.0.5.tgz tar xzf zendopcache-7.0.5.tgz cd ...

  4. Jenkins系列——使用checkstyle进行代码规范检查【升级版】

    1.背景 在<Jenkins系列——使用checkstyle进行代码规范检查>一文中完成了ant实现代码规范检查的例子.但存在以下缺陷: 每个作业都需要配置一个不同的checkstyle ...

  5. SQL 分组统计 行转列 CASE WHEN 的使用

    原文地址:http://blog.itpub.net/26451903/viewspace-733526 原文在分组统计部分  sql是有问题的     本文已将sql改正   已用红色标记  Cas ...

  6. caffe之路-SIGTERM信号捕捉

    Caffe在1.0版本仅支持两种信号的处理: 1) SIGHUP 2) SIGINT SIGHUP:caffe接收到此信号后进行snapshot,并不会中断caffe的训练. SIGINT:caffe ...

  7. 【前端】Vue和Vux开发WebApp日志三、完善gulp任务

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/vue_vux_3.html 项目github地址:https://github.com/shamoyuu/vue- ...

  8. MyEclipse之Widget is disposed

    1 错误描述 2 错误原因 3 解决办法

  9. VxWorks6.6 pcPentium BSP 使用说明(一):基本概念

    "VxWorks6.6 BSP 使用说明"将发布pcPentium和idp945两个系列的BSP的使用说明.每个系列约5篇文章.之后还将发布由这两个官方提供的BSP的实战移植方法. ...

  10. freemarker.template.TemplateException:Error executing macro:mainSelect

    1.错误描述 freemarker.template.TemplateException:Error executing macro:mainSelect require parameter:id i ...