vector的几种初始化和遍历
随着C++11标准的出现,vector出现了新的初始化和遍历用法,但是vs2010和较高版本并没有能完全支持C++11标准,所以我就将它的所有的用法归纳了一下。
vector的初始化
vector基本初始化如下:
vector< T >v1 v1是一个空的vector
vector< T >v2(v1) v2包含v1所有元素,等价于vector v2=v1;
vector< T >v3(n,val) v3包含了n个重复元素,每个元素是val
在C++11标准中出现了下面两种新的初始化方式
vector< T > v4{a,b,c……} v4中每个元素被赋了相应的值
vector< T > v4={a,b,c……..} 这个和上面初始化形式一样,和数组初始化形式相似
由于目前完全支持C++11标准的编译器不多,当要对vector赋予不同初值的时候,我们就需要借助数组的形式来给vector赋予初值。 (也就是以下的方式是c++ 11之前经常采用的方式)
举个例子:
1.当数组元素数量有限时
int arr[]={,,,,,};
vector< int > ivec(arr,arr+);
2.当数组元素数量很多时
int arr[]={,,,,..........};
size_t cnt=sizeof(arr)/sizeof(int);
vector< int > ivec(arr,arr+cnt);
或者运用下面形式
int arr[]={,,,,..........};
vector< int > ivec(begin(arr),end(arr));
这个形式在VS2010中可以使用,它采用C++11的标准。
如果是字符串数组,只需要将int换成string即可,再加上相应赋值
例如:
string arr[]={"a","b".........}
vector< string > ivec(begin(arr),end(arr));
好了vector的初始化完成了,接着是vector的遍历了;
vector遍历
vector的遍历一般使用迭代器
int arr[]={,,,........};
vector< int > ivec(begin(arr),end(arr));
for(auto it=ivec.begin();it!= ivec.end();++it)
或者采用
int arr[]={,,,........};
vector< int > ivec(begin(arr),end(arr));
vector<int>::iterator it;
for(it=ivec.begin();it!= ivec.end();++it)
还可以for_each来遍历vector形式,如下:
int arr[]={,,,........};
vector< int > ivec(begin(arr),end(arr));
for_each(ivec.begin(),ivec.end(),printf);
//printf是一个函数
void printf(int a)
{
}
它还可以像数组一样去遍历
int arr[]={,,,};
vector< int > ivec(begin(arr),end(arr));
for(decltype(ivec.size()) i=;i<;++i)
vector的几种初始化和遍历的更多相关文章
- vector的几种初始化及赋值方式
转自https://www.cnblogs.com/quyc/p/12857054.html (1)不带参数的构造函数初始化 //初始化一个size为0的vector vector<int> ...
- JAVA之旅(三)——数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想
JAVA之旅(三)--数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想 我们继续JAVA之旅 一.数组 1.概念 数组就是同一种类型数据的集合,就是一个容器 数组的好 ...
- 第三篇:C++ 中的几种初始化
前言 阅读C++教材时,想必你听过复制初始化,直接初始化,值初始化这三个概念吧.笔者本人常将其混淆,遂在此记录下它们的具体含义以便日后查阅. 复制初始化( copy-initialization ) ...
- C++ 中的几种初始化
前言 阅读C++教材时,想必你听过复制初始化,直接初始化,值初始化这三个概念吧.笔者本人常将其混淆,遂在此记录下它们的具体含义以便日后查阅. 复制初始化( copy-initialization ) ...
- 【汇总】java中数组的声明、初始化及遍历
java中数组用来存储固定大小的同类型元素 一维数组: 1.数组的声明: //声明一维数组,推荐用第一种 int[] a; int b[]; 2.数据的初始化:有三种初始化方式 (1).静态初始化 / ...
- Java连载66-数组的两种初始化方式
一.数组 1.数组中存储元素的类型是统一的,每一个元素在内存中所占用的空间大小是相同的,知道数组的首元素的内存地址,要查找的元素只要知道下标,就可以快速的计算出偏移量,通过首元素内存地址加上偏移量,就 ...
- UIImage两种初始化的区别
UIImage可以通过以下两种方式进行初始化: //第一种初始化方式:[注意使用这种初始化的时候如果是png格式的可以不给后缀名,根据屏幕的的分辨率去匹配图片] UIImage *image = [U ...
- django form关于clean及cleaned_data的说明 以及4种初始化
1.form类的运行顺序是init,clean,validte,save其中clean和validate会在form.is_valid()方法中被先后调用.(这里留有一个疑问,结构完全相同的两个f ...
- String的几种初始化方法的区别
参考了: java中String的两种初始化方法 String a; String aa = ""; String aaa = "123"; String ...
随机推荐
- ssh两台主机建立信任关系
A主机(10.104.11.107) B主机(10.104.11.128) A: ssh-keygen -t rsa [root@H0f .ssh]# ssh-keygen -t rsa Gene ...
- 转发 django 初探
https://www.cnblogs.com/franknihao/p/7682914.html https://blog.csdn.net/tang_jin2015/article/details ...
- JavaSE---接口
1.概述 1.1 接口只能继承接口(不能继承类): 1.2 一个接口可以继承多个接口: 1.3 接口中不能包含构造器.初始化块,可以有 属性(只能是常量).方法(只能是抽象方法).内部类(内部接口). ...
- tomcat正常关闭,端口号占用解决 StandardServer.await: create[8005]:
cmd进入依次输入以下三个命令 1:netstat -ano | findstr "8005"2:tasklist | findstr "5632" 3:tas ...
- 所有节点配置NTP服务
主节点: 打开vim /etc/ntp.conf文件 For more information about this file, see the man pages # ntp.conf(), ntp ...
- python groupby的小技巧
df.groupby('col',as_index=False),agg(ufunk)#as_index=False,可以消除层次索引 更多grouby的用法 http://blog.csdn.net ...
- Oracle PL/SQL 实现excel PMT函数、PPMT函数
PMT函数 1.每月本息金额 = (本金×月利率×(1+月利率)^还款月数)÷ ((1+月利率)^还款月数-1) ,in_financeAmount in number) return number ...
- 一个WPF小项目小结
一:缘起 老板有做PC桌面客户端的需求,做的是能耗的计算和评估,要算能耗,就有很多环节,最后对这些环节数据进行一些简单计算.我想要是做的话就用比较熟的wpf,就去聊了下,对方给了1张比较复杂的Exce ...
- 如何快速定位JVM中消耗CPU最多的线程?
第一步.先找出Java的进程PID ps -ef | grep 进程名关键字 这里假设找到的PID是:12345 第二步.找出该进程内最消耗CPU的线程 top -Hp log4x R :11.7 ...
- Spring课程 Spring入门篇 4-2 Spring bean装配(下)之Autowired注解说明1
课程链接: 1 解析 2 代码演练 1 解析 1.1 @Required注解 该注解适用于bean属性的set方法 1.2 @Autowired 作用: 是为了把依赖的对象,自动的注入到bean里 使 ...