这里只说明常用的vector初始化的方式。一般vector的初始化我还是比较习惯于像数组一样的初始化方式。一个一个赋值,或者用花括号的初始化。下面用一个程序来说明:

[cpp] view plaincopy
  1. #include "stdafx.h"
  2. #include <vector>
  3. #include <iostream.h>
  4. using namespace std;
  5. int main(int argc, char* argv[])
  6. {
  7. int a[7]={1,2,3,4,5,6,7};
  8. vector<int> ivector(a,a+7);//vector的赋值并不可以像数组一样方便的用花括号方便的完成赋值,这里借用了数组来初始化这个vector,初始化方
  9. //式vector<elementType> intvec(begin,end);这样可以用起来看上去还是比较习惯的。
  10. vector<int>::iterator iter;
  11. for (iter=ivector.begin();iter!=ivector.end();iter++)
  12. {
  13. cout<<*iter<<'\0';
  14. }
  15. cout<<endl;
  16. ivector[5]=1;//单个vector的赋值,这个方式看上去还是和数组一样的,不过你也可以这么写ivector.at(5)=1;但是就是不习惯
  17. cout<<ivector[5]<<endl<<ivector.size()<<endl;
  18. for (iter=ivector.begin();iter!=ivector.end();iter++)
  19. {
  20. cout<<*iter<<'\0';
  21. }
  22. return 0;
  23. }

vector的遍历:

一般数组的遍历方式应该都知道怎么遍历。上面用了迭代器进行遍历,一般在STL中很常见,但是在vector中一样可以像在数组中用for循环进行遍历,由于在像链表,队列,栈这样的容器中没有办法用像遍历数组一样遍历,只能用迭代器,所以对于STL中通用用迭代器进行遍历。

但是还有一种简便的方式。

[cpp] view plaincopy
  1. #include "stdafx.h"
  2. #include <vector>
  3. #include <algorithm>
  4. #include <iostream>
  5. using namespace std;
  6. void print(int n)
  7. {
  8. cout<<n<<'\0';
  9. }
  10. int main(int argc, char* argv[])
  11. {
  12. int a[7]={1,2,3,4,5,6,7};
  13. vector<int> ivector(a,a+7);
  14. vector<int>::iterator iter;
  15. for_each(ivector.begin(),ivector.end(),print);//用for_each进行遍历
  16. cout<<endl;
  17. ivector[5]=1;
  18. cout<<ivector[5]<<endl<<ivector.size()<<endl;
  19. for_each(ivector.begin(),ivector.end(),print);//用for_each进行遍历
  20. return 0;
  21. }

这种方式的遍历引用另一篇文章:

对STL的容器中,遍历是一个非常经常采用的动作,为此STL也提供一个算法,for_each
遍历一个容器,我们第一个想到的是
for (int i = 0;i < a.size();++i)
的循环来实现。
这样做有几个弊端,比如我现在很多地方用vector作为传引用参数进行传递,为了减少对象构造和析构的代价,我一般采用指针来传递,那么我就要在程序很多地方 写上类似下面的代码
for (int i=0;i < a.size();++i)
     delete a[i];
虽然代码很多都一样,可是到处泛滥着这种循环语句,让人阅读程序容易和其它释放指针行为产生混淆
好处有几个:
1:for_each调用容器内部的遍历函数,比我们的++的方式遍历,效率不会低是肯定的
2:delete指针时候,可以再次确认指针类型
3:用仿函数类,编译器在编译期对函数进行展开,实际上没有函数调用的发生
4:加强代码自说明能力,减少循环,提高代码可读性

文章来自

vector的初始化和遍历相关推荐

  1. C++ vector的初始化、添加、遍历、插入、删除、查找、排序、释放操作

    C++的vector本质上是一个动态数组,数据量不大的情况下,非常方便存储和访问操作,当然,不好的情况是数据量大的情况下,查找效率低,删除操作还会导致大量的数组移动操作. 虽然这样,vector还是一 ...

  2. 静态成员变量的初始化,vector类型变量初始化

    静态成员变量的初始化,vector类型变量初始化 Posted on 2008-11-24 16:28 浪端之渡鸟 阅读(1620) 评论(0) 编辑 收藏 某些情况下,在写C++类的时候,希望能通过 ...

  3. vector的初始化及常用操作

    1.vector的初始化:可以有五种方式,举例说明如下: (1) vector<int> a(10); //定义了10个整型元素的向量(尖括号中为元素类型名,它可以是任何合法的数据类型), ...

  4. AS3的Vector的初始化

    1,Vector的效率差不多是Array的3倍,这里就不在证明了,Array的初始化相当的简单: var $arr = []; var $arr = [1,2,3]; 现在来谈谈Vector的初始化: ...

  5. c++vector初始化,assign,遍历,resize和reverse

    方法一:不带参数 std::vector<int> lqs1;方法二:带一个参数 std::vector<int> lqs2(10); //10个默认值为0方法三:带两个参数 ...

  6. java初始化一个链表_Java 链表(LinkNode)的简单操作:初始化,遍历,插入,删除等...

    由于java中没有结构体,所以用一个类来定义链表,代码如下 主要包括一个data,还有一个指向后面一个节点的next 重写了toString函数,返回你想要的数据 定义链表的类: package Li ...

  7. 数据结构遍历顺序栈_链栈的初始化与遍历

    初始化 我们在定义完一个数据结构的结构体之后,需要初始化才能使用.比如顺序栈的初始化,也就是构造一个空栈就行了.那么链栈如何初始化呢? 链栈初始化的目标也是要构造一个空栈.根据结构体定义,空栈是什么一 ...

  8. 【Android 异步操作】手写 Handler ( 循环者 Looper | Looper 初始化 | Looper 遍历消息队列 MessageQueue )

    文章目录 一.Looper 初始化 二.Looper 遍历消息队列 MessageQueue 三.完整 Looper 代码 一.Looper 初始化 Looper 是 线程本地变量 , 在每个线程中 ...

  9. 怎么使用java初始化链表_Java 链表(LinkNode)的简单操作:初始化,遍历,插入,删除等...

    由于java中没有结构体,所以用一个类来定义链表,代码如下 主要包括一个data,还有一个指向后面一个节点的next 重写了toString函数,返回你想要的数据 定义链表的类: package Li ...

最新文章

  1. 关于clientWidth、offsetWidth、clientHeight、offsetHeigh
  2. 一步一步学Ruby(七):数学表达式
  3. Python进阶11-标准库介绍02
  4. 空间计量模型_Stata空间面板数据模型专题直播丨Stata空间计量3月远程直播
  5. Vue + Element UI——滚动条el-scrollerbar和无限滚动指令v-infinite-scroll整合解决方案
  6. 8idmp导入oracle 11g,11g导入8i的dmp文件问题
  7. 如何在Java 8中创建线程安全的ConcurrentHashSet?
  8. 特定热点事件监控与分析项目
  9. p1470 Longest Prefix
  10. Mongo 安装、配置、启动 Windows
  11. vue 外部方法调用内部_vue 的进阶之路
  12. xml操作excel
  13. Windows2008r2如何关闭防火墙
  14. 产品配件类目税目分类_HS编码知识:汽车零部件怎么归类?
  15. attrib批量显示文件夹_BAT遍历目录并去掉文件夹隐藏属性
  16. word-wrap和word-break,white-space的区别
  17. 别踩白块儿 java源码下载_“别踩白块儿游戏源代码分析和下载
  18. 服务器虚拟化svc,服务器虚拟化与SVC技术在高校灾备中的应用
  19. linux解压文件后重命名,tar 解压,重命名
  20. EXCEL的功能整理(一)

热门文章

  1. 十五个常用的 Laravel 集合(Collection)
  2. 7.Nginx_Keepalived高可用配置
  3. 34.3. output
  4. 无刷新上传图片,ajax 和 iframe
  5. APUE-文件和目录(八)文件时间
  6. 系统调优一之内存子系统
  7. SGU 113 Nearly prime numbers
  8. 周4早上搜索引擎分析 - crmim.com| MSCRM开发者之家
  9. IKE IPSEC ×××
  10. 一天学习一点之express demo