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交换数据

最新文章

  1. Todo List
  2. .NET (五)委托第五讲:内置委托Predicate
  3. Linux一块网卡添加多个IP地址
  4. 这几天做完简易酒店管理系统,对Sql Server执行计划的浅显了解。
  5. 通过Small Basic把儿子/女儿带入编程的世界
  6. [Virtualization][qemu][kvm][virtio] 使用 QEMU/KVM 模拟网卡多队列
  7. linux grep 命令
  8. java io系列14之 DataInputStream(数据输入流)的认知、源码和示例
  9. 当数据库某张表数据发生变化时,更新c#程序中缓存的用法
  10. 思维导图软件VYM
  11. 造一个Badge Service(徽章)的轮子
  12. iOS8之后CoreLocation定位的使用
  13. angular-utils-pagination 使用案例
  14. ASP.NET Identity 身份验证和基于角色的授权
  15. MATLAB——神经网络构造线性层函数linearlayer
  16. 前端必备HTTP技能之HTTP请求头响应头中常用字段详解(转)
  17. 效率生产力工具 —— idea 插件
  18. HDU 2767 Proving Equivalences(至少增加多少条边使得有向图变成强连通图)
  19. 【BZOJ1449】[JSOI2009]球队收益(网络流,费用流)
  20. web实践小项目&lt;一&gt;:简单日程管理系统(涉及html/css,javascript,python,sql,日期处理)

热门文章

  1. js 根据不同情况引入不同操作
  2. webservice服务的简单应用
  3. 初识ReactJs(一)
  4. iOS开发:自定义控件实现手势解锁
  5. Input钱币规范化
  6. H5瀑布流如何实现
  7. PHP 文件包含总结 include require 命名空间 autoload spl_autoload_register 读取文件路径
  8. vba单元格背景色
  9. 如何更方便地调试javascript代码
  10. web移动端资源整(1)