只记载本人在ACM中常用的函数。

vector,相当于动态数组,数组大小可变。声明vector以后,自动在内存中分配一块连续的内存空间进行数据存储。

vector在内部进行插入、删除操作时间复杂度O(n)。

1、初始化

vector<int> v1;  //空的vector

vector<int> v(5, 42);  //vector含有5个42

2、常用运算符

[], ==, !=, <=, >=, <, 和 >均可正常使用

3、back返回最后一个元素

4、begin返回第一个元素的迭代器

5、clear清空所有元素

6、vector为空时返回真,否则返回假

7、end返回最末元素的迭代器

8、erase删除

   iterator erase( iterator loc );  //删除loc处的元素
   iterator erase( iterator start, iterator end );  //删除start和end之间的元素

9、front返回第一个元素的值

10、insert

  iterator insert( iterator loc, const TYPE &val );  //在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器,

  void insert( iterator loc, size_type num, const TYPE &val );  //在指定位置loc前插入num个值为val的元素  

  void insert( iterator loc, input_iterator start, input_iterator end );  //在指定位置loc前插入区间[start, end)的所有元素

11、pop_back移除最后一个

12、push_back在vector最后添加一个元素

13、size返回vector中元素的数量个数

14、accumulate,累加。accumulate(iterator a, iterator b, const TYPE &val)。将a和b之间的元素累加起来,初值赋为val。比如vector<int> ans; int t = accumulate(ans.begin(), ans.end(), 2),则t = sum{ans} + 2。比如vector ans = {"tt", "xx"}; string s = accumulate(ans.begin(), ans.end(), string(""));则s = "ttxx"。注意,如果val和vector中所装元素类型不同,会将vector里的元素转化成val的类型。

15、unique函数,unique(v.begin(), v.end()),将v中重复元素全放在v的最后,比如122333会变成123233,然后返回第一个重复元素的位置。如果想删除v中所有重复元素,则v.erase(unique(v.begin(), v.end()), v.end())。还发现了一个网上的博文里面没有看到的问题,就是使用unique函数之前要先排序。

C++ STL之vector常用指令的更多相关文章

  1. STL之vector常用函数笔记

    STL之vector常用函数笔记 学会一些常用的vector就足够去刷acm的题了 ps:for(auto x:b) cout<<x<<" ";是基于范围的 ...

  2. C++ STL之map常用指令

    只记载本人在ACM中常用的函数. map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力. map内部为一颗 ...

  3. C++ STL之pair常用指令

    只记载本人在ACM中常用的函数. pair<first, second>,将两个数据组合成一个数据.在其他stl(如map),函数需要传回两个值时可能会用到. 1.初始化 #include ...

  4. C++ STL之string常用指令

    string,大小可变的字符串,有些类似于C中的字符数组. 只记载本人在ACM中常用的函数,并且全部经过程序测试. 1.初始化 string s1;——默认构造函数s1为空串 string s2(s1 ...

  5. C++ STL之set常用指令

    set,关联容器,元素不允许有重复,数据被组织成一棵红黑树,以牺牲插入和删除元素的效率换来了查找元素的高效率(O(logN)). 1.初始化 set<int> st; 2.begin返回第 ...

  6. C++ STL中的常用容器浅谈

    STL是C/C++开发中一个非常重要的模板,而其中定义的各种容器也是非常方便我们大家使用.下面,我们就浅谈某些常用的容器.这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点.STL中 ...

  7. STL中vector、list、deque和map的区别

    1 vector     向量 相当于一个数组    在内存中分配一块连续的内存空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capac ...

  8. 【转】STL中vector、list、deque和map的区别

    1.vector 向量 相当于一个数组 在内存中分配一块连续的内容空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacity()函数 ...

  9. 深入解析C++ STL中的常用容器

    转载:http://blog.csdn.net/u013443618/article/details/49964299 这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点.STL中的 ...

随机推荐

  1. C#中的IO流操作(FileStream)

    StreamReader和StreamWriter适用于对文本文件的操作,因为它是以字符为单位进行的操作 不用担心编码问题 using (Stream s = new FileStream(@&quo ...

  2. 高健壮性css---Float详细

    (一)关于float 首先我们了解到,CSS网页布局的原理,就是按照HTML代码中对象声明的顺序,以流布局的方式来显示它,而流布局就不得不说到float浮动技术..在HTML中的所有对象,默认分为两种 ...

  3. div 显示滚动条

    overflow-x:auto    显示横向滚动条 overflow-y:hidden 隐藏纵向滚动条 引用此class,只显示横向的滚动条 .max{ margin:auto; overflow- ...

  4. java工程中使用freemarker例子

    新建java project,引入freemarker.jar, 本工程是用的版本:freemarker-2.3.20 版本 java工程目录如下: test.ftl文件 HTML代码 name : ...

  5. 写一个基于NSURLSession的网络下载库

    前段时间AFNetworking 更新到3.0 ,彻底废弃NSURLConnection的API转由NSURLSession来实现,代码并没有改动很大,AF封装的很好了,读完源码感觉收获很大. 下载不 ...

  6. vim 支持gb2312

    vi  /etc/vimrc 中添加如下,并保存. set termencoding=encodingset fileencodings=utf-8,gbk,ucs-bom,cp936set shif ...

  7. grails框架中在使用domain的save方法保存时保存不成功

    1.如果报错,自行根据异常查找错误,这里不说明 2.如果为报错,我遇到的就是domain中的字段属性与数据库中为同步 (1)你的domain是新的,在增加新的字段属性时未使用update更新数据库,造 ...

  8. FLEX 网格布局及响应式处理

    上一篇文章用Flex实现BorderLayout,这一章我们来实现常用的网格布局和响应式处理. 首先我们定义HTML结构,主Box为grid,每项为grid-cell,下面就是我们HTML代码结构. ...

  9. HTML5验证及日期显示

    以前忽略了HTML5的强大功能,谁知有了它数据大部分都不需要自己验证,显示日历也不需要插件啦,一些小功能分享给大家 1.Email输入框,自动验证Email有效性. <!DOCTYPE HTML ...

  10. python ATM购物程序

    需求: 模拟实现一个ATM + 购物商城程序 额度 15000或自定义 实现购物商城,买东西加入 购物车,调用信用卡接口结账 可以提现,手续费5% 每月22号出账单,每月10号为还款日,过期未还,按欠 ...