vector

来源:互联网 发布:dva矩阵 编辑:程序博客网 时间:2024/05/17 04:15

简介

vector是一个类模板,是同一种类型对象的集合,每个对象都有一个对应的整数索引,我们将其称为容器。

声明&初始化

头文件和命名空间

#include <vector>using std::vector;

声明:需要提供附加信息,也即是必须要说明保存何种对象的类型,定义只需要指定类型和变量列表即可。

vector<int> ivec;vector<string> svec;

vector本身不是一种数据类型,而是一个类模板,只是说她可用来定义任意多种数据类型。当vector指定了其保存元素的类型时他就是一种数据类型了,因此上述vector< int >和vector< string >都是数据类型。

定义和初始化

class T;T i;int n;vector<T> v1;vector<T> v2(v1);vector<T> v3(n, i);vector<T> v4(n);
方式 说明 vector< T > v1; 保存类型为T的对象,默认构造函数v1为空 vector< T > v2(v1); v2是v1的一个副本 vector< T > v3(n,i) v3包含n个值为i的元素,i的类型为T vector< T > v4(n) v4包含有初始化的元素的n个副本

在上述第4种定义方式种,他是如何初始化的?事实上,如果没有指定元素的初始化方式,标准库会自行提供一个元素的初始值来进行值初始化,具体取决于vector中保存的何种数据类型:

  1. 如果保存内置类型(如int)的元素,标准库将用0来创建元素初始化式;
  2. 如果保存的是含有构造函数的类类型(如string)的元素,将使用该类型的默认构造函数进行初始化;
vector<int> v4(10); // 10元素,每个会被初始化为0vector<string> v5(10); // 10个元素,每个都是空串

vector对象的操作

1、size操作
v.size()返回相应vector类定义的size_type的值,使用size_type时必须说明vector的元素类型。

vector<int>::size_type  // √vector::size_type // ×

size_type的必要性:

1)它是一种unsigned类型,对于任意一种给定的数据类型,unsigned型所能表示的最大正数都比相应的signed型大一倍;
2)如果不使用size_type而使用int会存在一些问题,比如有些机器上int变量的表示范围不一样,而使用size_type完全不用担心这个问题(size_type是机器无关的)。

原创粉丝点击