vector对象的操作

vector标准库提供了许多类似于string对象的操作,下面列出了几种最重要的vector操作.

v.empty()  如果v为空,则返回true,否则返回false.
v.size()   返回v中元素的个数
v.push_back(t)  在v的末尾增加一个值为t的元素.
v[n]       返回v中位置为n的元素.
v1=v2      把v1的元素替换成v2中元素的副本.
v1==v2     如果v1与v2相等,则返回true.
!=,<,<=,>,>=   保持这些操作符惯有的含义

1.vector对象的size

empty和size操作类似于string类型的相关操作.成员函数size返回相应vector类定义的size_type的值.

注解:使用size_type类型时,必须指出该类型是在哪里定义的.vector类型总是包括vector的元素类型:

vector<int>::size_type  //ok
vector::size_type       //error
上面的第一行定义使用size_type类型的时候指出该类型是int的,而第二行显然没有.

2.向vector添加元素

push_back()操作接受一个元素值,并将它作为一个新的元素添加到vector对象的后面,也就是"插入(push)"到vector对象的"后面(back)":

//read words from the standard input and store them as elements in a vector
string word;
vector<string>text;   //empty vector
while<cin>>word){
 text.push_back(word);  //append word to text
}

该循环从标准输入读取一系列string对象,逐一追加到vector对象的后面.首先定义了一个空的vector对象text.每循环一次就添加一个新元素到vector对象,并将从输入读取的word值赋予该元素.当循环结束时,text就包含了所有读入的元素.

3.vector的下标操作

vector的对象是没有命名的,可以按vector中对象的位置来访问它们.通常使用下标操作符来获取元素.vector的下标操作类似于string类型的下标操作.

vector的下标操作符接受一个值,并返回vector中该对应位置的元素.vector元素的位置从0开始.下例使用for循环把vector中的每个元素值都重置为0:

//reset the elements in the vector to zero
for(vector<int>::size_type ix=0;ix!=ivec.size();++ix)
ivec[ix]=0;

和string类型的下标操作符一样,vector下标操作的结果为左值,因此可以像循环体中所做的那样实现写入,另外,和string对象的下标操作类似,这里用size_type类型作为vector下标的类型.

注解:在上例中,即使ivec为空,for循环也会正确执行.ivec为空则电泳size返回0,并且for中的测试比较ix和0.第一次循环时,由于ix本身就是0,则条件测试失败,for循环体一次也不执行.

注意:C++程序员习惯于优先选用!=而不是< 来编写循环判断条件.学万泛型编程后就会明白.

4.下标操作不添加元素

初学C++的程序员可能会以为vector的下标操作可以添加元素,其实不然:

vector<int>ivec;  //empty vector
for(vector<int>::size_type ix=0;ix!=10;++ix)
ivec[ix]=ix;    //disaster:ivec has no elements

上述程序试图在ivec中插入10个新元素,元素值依次为0到9的整数.但是,这里ivec是空的vector对象,而且下标只能用于获取已存在的元素.

这个循环的正确写法应该是:(前面定义空的容器的语句省略了)

for(vector<int>::size_type ix=0;ix!=10;++ix)
ivec.push_back(ix);    //ok:adds new elements with value ix

小心:必须是已存在的元素才能用下标操作符进行索引.通过下标操作进行赋值时,不会添加任何元素.
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值