C++标准库vector类型

2014-11-24 08:49:47 ? 作者: ? 浏览: 1

vector 有称为容器。头文件:#include ;using声明:using std::vector; vector是一个类模板,可用于多个不同的数据类型。


注解:vector是一个类模板,而不是一个数据类型。


1. vector对象的定义和初始化


vector v1; //默认构造函数初始v1为空
vector v2(v1); //v1的副本
vector v3(5,12); //包含5个值为12 的元素
vector v4(3); //包含值初始化的元素的3个副本


关键概念:vector对象的动态增长


可在运行时高效地添加元素。虽然可预先分配内存,当更有效的方法是先初始化一个空的vector对象,然后再动态地增加元素。


如果vector保存内置类型,将用0值初始化;如果是类类型,将调用默认构造函数。


2.vector对象的操作


//1.size()和empty(),与string类似
if(v3.empty() == false)
{
vector::size_type vs = v3.size();
cout<<"v3 size: "< }


添加元素到vector对象后面:


int n ;
while(cin>>n)
{
v2.push_back(n);
}


下标操作:


for(vector::size_type ix = 0;ix!=v3.size();ix++)
{
if(ix%2==0)
{
v3[ix] = 18 ;
}
cout< }


关键概念:安全的泛型编程


上例中for循环判断条件用!=而不是用<来判断,没有在for循环之前就调用size函数并保存其值,而是在for语句头中调动size成员函数。


c++程序员习惯于优先使用!=而不是<来判断。调用 size成员函数而不是保存其返回值是个良好的编程习惯。在C++中,有些数据结构是动态增长的,循环可以很容易地增加新元素,若确实增加了,那么用已保存的size值作为循环条件就会有问题,应为没有将新加入的元素计算在内。所以倾向于在每次循环中测试size的当前值。


可能会觉得每次调用size函数对性能的影响,C++中的有些函数可以声明为inline函数。像size这样的小库函数都可以定义为内联(inline)函数,所以每次循环过程中调用它的运行是代价是比较小的。


仅能对已存在的元素进行下标操作。


-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: