C++ Primer学习笔记(3)——神奇的容器vector及其迭代器iterator
2015-07-03 10:22
531 查看
除了简单的内置数据类型int ,char, float, double , bool等,C++标准库定义了几种更高级的抽象数据类型,包括string 和vector 类型。string提供了变长的字符串,在上一篇博客中有写到,而vector类型则可用于管理同一类型的对象,是一个集合。
迭代器实现了对存储于容器中对象的间接访问,可用于访问和遍历string和vector类型的元素。
1.vector介绍
vector对象的定义和初始化
-
2.用迭代器iterator操作vector
所有的标准库容器都定义可自己的迭代器,用它来对容器进行操作相当方便简洁。
其定义如下:
可以这样赋值:
运行结果:
PS : 运行结果中第2行出现的i是我输入的,为了结束输入流的。因为我用的时mac 的Xcode,跟VS不一样的是,cin输入后按回车不能结束输入流,还未找到快捷方式,只好通过输入非法字符来结束了。
迭代器实现了对存储于容器中对象的间接访问,可用于访问和遍历string和vector类型的元素。
1.vector介绍
vector对象的定义和初始化
-
2.用迭代器iterator操作vector
所有的标准库容器都定义可自己的迭代器,用它来对容器进行操作相当方便简洁。
其定义如下:
vector<int>::iterator iter; //iter就是由vector<int>定义的iterator类型的迭代器
可以这样赋值:
vector<int>::iterator iter = v.begin(); //iter指向v对象的第一个元素
#include <iostream> #include <vector> using namespace std; int main(int argc, const char * argv[]) { // insert code here... vector<int> ivec; int value; // 输入数据到vector中 cout << "请输入数据:" << endl; while (cin>>value) { ivec.push_back(value); } //判断是否成功输入了数据 if(ivec.size()==0){ cout << "没有输入数据?!" <<endl; return -1; } // //开始计算相邻数据的和 // cout << "相邻两个数的和依次为:" << endl; // for (vector<int>::size_type ix = 0; ix < ivec.size()-1; ix=ix+2) { // cout << ivec[ix] + ivec[ix+1]<< '\t'; // if((ix+1)%6 == 0) // cout << endl; // } // // //判断最后一个数是否计算 // if (ivec.size() % 2 !=0) // cout << endl << "最后一个数据没有求和,其值为"<<ivec[ivec.size()-1]<<endl; //将vector中所有元素置为原来的2倍 cout << "变成2倍之后为:" <<endl; for (vector<int>::iterator iv = ivec.begin();iv!=ivec.end(); iv++) { *iv = 2*(*iv); cout<< *iv << " "; } return 0; }
运行结果:
请输入数据: 12 3 87 30 58 39 i 变成2倍之后为: 24 6 174 60 116 78
PS : 运行结果中第2行出现的i是我输入的,为了结束输入流的。因为我用的时mac 的Xcode,跟VS不一样的是,cin输入后按回车不能结束输入流,还未找到快捷方式,只好通过输入非法字符来结束了。
相关文章推荐
- C++实现单链表
- 写一个用矩形法求定积分的通用函数,分别求:sin(x),cos(x),e^x
- C++计时器
- c语言学生信息管理系统(链表、文件)
- 黑马程序员---C语言基础---if条件句
- 关于学习C++和编程的50个建议和观点
- C++ 程序员如何迎接 Windows 10 的到来
- VIM配置C++开发环境
- C++动态数组
- C++编译器函数模版机制剖析 - 函数模版的本质
- C++编译器函数模版机制剖析 - 函数模版的本质
- C++结构变量数据对齐问题
- C++结构变量数据对齐问题 分类: C/C++ 2015-07-03 09:07 157人阅读 评论(0) 收藏
- sizeof和strlen的区别 分类: C/C++ 2015-07-03 09:05 169人阅读 评论(0) 收藏
- CFileDialog使用总结
- c++链表的创建与操作;
- C++的引用
- c语言中!=EOF的意义
- C++ 与 CDC相关的知识,点滴总结
- 黑马程序员——C语言基础学习(四)---数组和指针的总结学习