华工一个铭

#include <vector>用法之我见

vector是一种顺序容器,事实上和数组差不多,但它比数组更优越。一般来说数组不能动态拓展,(何为动态拓展,即是说如果你知道你要存的数据的个数,你定义的存储数据的数组大小也就决定了,但是若你事先不知道数据的个数,你只能定义一个比较大的数组,若是数据量不多,这样定义数组时分配的内存就大大的浪费了,而且若是当年发现你的数组已经存储不下你的数据了,怎么办,数组时不能扩展容量的,这时候vector的优势就出来了,随你扩展)因此在程序运行的时候不是浪费内存,就是造成越界。而vector正好弥补了这个缺陷,它的特征是相当于可分配拓展的数组,它的随机访问快,在中间插入和删除慢,但在末端插入和删除快,而且如果你用.at()访问的话,也可以做越界检查。

 

v.push_back(t)  在数组的最后添加一个值为t的数据

 

v.size()   当前使用数据的大小

 

v.pop_back();  // 弹出容器中最后一个元素(容器必须非空)

 

v.back();   // 返回容器中最后一个元素的引用

下面为括号匹配的代码:http://www.cnblogs.com/panxiaoyu/archive/2012/03/10/acm.html

#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main()
{
    int n;
    cin>>n;
    while(n--)
    {   
        vector<char> vec;
        string ch;
        vec.push_back(' ');
        cin>>ch;
  int l='(';
  cout<<"l="<<l<<endl;
        for(int i=0;i<ch.length();i++)
        {
            vec.push_back(ch[i]);
  
            if( vec.back()-1 == *(vec.end()-2) || vec.back()-2 == *(vec.end()-2))//检测两端
            {
                vec.pop_back();
                vec.pop_back();
            }
        }
        if(vec.size()==1)
            cout<<"Yes"<<endl;
        else
            cout<<"No"<<endl;
    }
    return 0;
}

下面为具体的vector用法:

 

1.push_back    在数组的最后添加一个数据     

2.pop_back     去掉数组的最后一个数据     

3.at           得到编号位置的数据     

4.begin        得到数组头的指针      

5.end          得到数组的最后一个单元+1的指针     

6.front       得到数组头的引用      

7.back         得到数组的最后一个单元的引用     

 8.max_size     得到vector最大可以是多大     

9.capacity     当前vector分配的大小     

10.size        当前使用数据的大小      

11.resize      改变当前使用数据的大小,如果它比当前使用的大,则填充默认值                    

例:v.resize(2*v.size, 99) 将v的容量翻倍(并把新元素的值初始化为99)      

12.reserve     改变当前vecotr所分配空间的大小  

 13.erase       删除指针指向的数据项     

14.clear       清空当前的vector     

 15.rbegin      将vector反转后的开始指针返回(其实就是原来的end-1)     

16.rend        将vector反转构的结束指针返回(其实就是原来的begin-1)     

17.empty       判断vector是否为空     

18.swap        与另一个vector交换数据

 

posted on 2013-08-10 14:09  华工一个铭  阅读(556)  评论(0编辑  收藏  举报