vector的用法

**

对于vector的用法也分为两种:

**

  • 数组习惯
  • STL习惯

**


对于数组习惯:

**
1. 我们可以用下标操作符访问vector的元素,与访问内置数组的元素的方式一样。例如:

    int ia[10];
    vector<int> ivec(10);  //类似于定义包含十个元素的内置数组一样:int ia[10]

    for (int ix=0; ix<10; ++ix)
        ia[ix] = ivec[ix];
  1. 我们可以用size()查询vector的大小,也可以用empty()来测试它是否为空。例如:
    if(ivec.empty())
        cout<<"vector is empty"<<endl;

    for (int ix=0; ix<ivec.size(); ++ix)
        cout<<ivec[ix]<<endl;

对于STL习惯:

我们向vector插入元素,而不是索引元素、向元素赋值。
例如:
push_back(): 在vector的后面插入一个元素。

下面while循环从标准输入读入一个字符串序列,并每次将一个字符串插入到vector中:

    vector<string> text;
    string word;
    while(cin >> word)//如何退出循环,见另一篇博客
    {
        text.push_back(word);//后面插入元素
    }

    cout<<"words read are: \n";
    for (int ix=0; ix<text.size(); ++ix)//下标操作符来迭代访问元素。
        cout<<text[ix]<<' ';
    cout<<endl;

访问元素更典型的做法是使用vector操作集中的begin()和end()所返回的迭代器对(iterator):

    cout<<"words read are:\n";

    for(vector<string>::iterator it=text.begin(); it != text.end(); ++it)
        cout<< *it <<' ';

    cout<<endl;

iterator 是标准库中的,它具有指针的功能。

*it;//对迭代器解引用,并访问其指向的实际对象。
++it;//向前移动迭代器it,使其指向下一个元素

**

注意:

**

不要混用这两种习惯用法。例如:

    vector<int> ivec6;//定义了一个空的vector
    ivec6[0] = 1024; //错误。因为:

因为:ivec6还没有第一个元素。我们只能索引vector中已经存在的元素。

类似的,当我们用一个给定大小定义一个vector时:

    vector<int> ivec(10); 

任何一个插入操作都将增加vector的大小,而不是覆盖掉某个现有的元素。

    const int size = 7;
    int ia3[size] = {0, 1, 1, 2, 3, 5, 8};
    vector<int> ivec7(size);

    for (int ix=0; ix<size; ++ix)
        ivec7.push_back(ia[ix]);
//注意:程序结束时ivec7包含14个元素,ia的元素从第八个元素开始插入。

另外,在STL习惯用法中,vector的一个或多个元素可以被删除,将在另外一片博客中讨论。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值