1.长度可变的数组

2.这里不是很懂,v.size() 代码源里说这个v.size()是无符号类型的,使用时要说明类型,

 但是我在使用时并没有出现warning,有大佬知道原因吗?

 前置板子

3.vector是有v.clear()的

4.vector按字典序比较

重构函数(默认)

  1. vector<int> v;
  2. vector<int> v(3, 100); // 大小为3,每个数都是100
  3. //下方为{}操作 C++11 可以用的
  4. vector<int> v{1, 2, 3, 4}; // 把1,2,3,4塞进v里面,大小为4,元素1-4

基础操作

  1. v.size(); // unsigned类型
  2. v.resize();
  3.  
  4. v.empty();
  5. v.clear(); // 只能清空表面
  6.  
  7. // 只有这两个操作
  8. v.push_back();
  9. v.pop_back();
  10.  
  11. // 下面两个是地址
  12. v.begin(); // 指第一个元素的位置
  13. v.end();// 指最后一个元素的地址+1的地址
  14. // 例如
  15. // 1 2 3 4 5 6 7 8
  16. // ^ ^
  17. // | |
  18. // v.begin() v.end()
  19.  
  20. v.insert(地址,元素) // 地址前一个插入元素
  21. // 下方操作会在3423后面和53之间插入7
  22. vector<int> v{1, 2, 3423, 53, 542};
  23. v.insert(v.begin() + 3, 7);
  24. // 括号里第一个是地址,第二个是要插入的元素
  25. // 操作时间是O(n)的
  26.  
  27. v.erase(地址,元素); // 删去对应的元素
  28.  
  29. sort(v.begin(), v.end()); // 排序
  30.  
  31. lower_bound(v.begin(), v.end(), 100);
  32.  
  33. auto it = lower_bound(v.begin(), v.end(), 100);
  34. // 返回前闭后开地址区间内 >= 100 的第一个元素的迭代器
  35. // 这个查找必须在有序列里面,查询方式是二分,时间复杂度O(logn)
  36.  
  37. upper_bound(v.begin(), v.end(), 100)
  38. auto it = upper_bound(v.begin(), v.end(), 100);
  39. // 返回前闭后开地址区间内 > 100 的第一个元素的迭代器
  40. // 这个查找必须在有序列里面,查询方式是二分,时间复杂度O(logn)

迭代器

  1. // 迭代器(可以暂时理解为STL的指针)
  2. vector<int>::iterator it = v.begin(); // 初始化
  3.  
  4. // 迭代器遍历模板(auto C++11后可用,自动判断后面的类型)
  5. for (auto it = v.begin(); it != v.end(); it ++) {
  6. cout << *it << endl;
  7. }

遍历新语法(C++11之后可以使用)

  1. for (int x : v) {
  2. cout << x << endl;
  3. }
  4. // 遍历每一个元素,每一次x作为每个元素,int 可改为 auto等
  5. // 普通数组、STL数组、vector 都可使用
  6.  
  7. // 不会改变原来的值
  8. for (int x : v) {
  9. x += 1;
  10. } // 改变的只是每次x的值,v中的每个元素都不会改变
  11. // 像下边这样
  12.  
  13. for (int i = 0; i < v.size(); i ++) {
  14. int x = v[i];
  15. x += 1;
  16. cout << v[i] << endl;
  17. }
  18. 但是加上 & 就能
  19. for (int &x : v) {
  20. x += 1;
  21. }
  22. // 加了是下边的效果
  23. for (int i = 0; i < v.size(); i ++) {
  24. int &x = v[i];
  25. x += 1;
  26. cout << v[i] << endl;
  27. }

存图(以后回来看)

  1. for (int i = 1; i <= m; i ++) {
  2. int u, v;
  3. scanf("%d%d", &u, &v);
  4. g[u].push_back(v);
  5. g[v].push_back(u);
  6. }
  7.  
  8. for (auto v : g[u]) {
  9.  
  10. }

STL-vector(ACM)的更多相关文章

  1. stl 在 acm中的应用总结

    总结一些在acm中常用的小技巧,小函数 之前尝试着总结过很多次.都失败了,因为总是担心不全,理解的也不是很透彻.这次再来一次...其实之前保存了很多的草稿就不发布了,当然,下面说的很不全面,路过的大牛 ...

  2. hdu5438 Ponds[DFS,STL vector二维数组]

    目录 题目地址 题干 代码和解释 参考 题目地址 hdu5438 题干 代码和解释 解答本题时参考了一篇代码较短的博客,比较有意思,使用了STL vector二维数组. 可以结合下面的示例代码理解: ...

  3. C++ STL vector容器学习

    STL(Standard Template Library)标准模板库是C++最重要的组成部分,它提供了一组表示容器.迭代器.函数对象和算法的模板.其中容器是存储类型相同的数据的结构(如vector, ...

  4. STL vector

    STL vector vector是线性容器,它的元素严格的按照线性序列排序,和动态数组很相似,和数组一样,它的元素存储在一块连续的存储空间中,这也意味着我们不仅可以使用迭代器(iterator)访问 ...

  5. STL vector用法介绍

    STL vector用法介绍 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和f ...

  6. STL vector+sort排序和multiset/multimap排序比较

    由 www.169it.com 搜集整理 在C++的STL库中,要实现排序可以通过将所有元素保存到vector中,然后通过sort算法来排序,也可以通过multimap实现在插入元素的时候进行排序.在 ...

  7. STL vector 用法介绍

    介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用.通 ...

  8. STL vector使用方法介绍

    介绍 这篇文章的目的是为了介绍std::vector,怎样恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用.通 ...

  9. stl——vector详解

    stl——vector详解 stl——vector是应用最广泛的一种容器,类似于array,都将数据存储于连续空间中,支持随机访问.相对于array,vector对空间应用十分方便.高效,迭代器使ve ...

  10. C++STL vector详解(杂谈)

    介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用.通 ...

随机推荐

  1. C++ 浮点数比较代码

    #include <algorithm> #include <cmath> #include <iostream> // 如果 a 和 b 之间的差异在 a 和 b ...

  2. import tensorflow出现ImportError: DLL load failed: 找不到指定的模块的问题(亲测可用)

    错误如下图所示: 在很长时间的查找后,网上的很多办法都不能很好的解决问题,但是基本上指向了一个问题--版本问题,所以接下来我安装了与python环境对应的tensorflow包. 首先用以下命令查找对 ...

  3. Three.js 进阶之旅:全景漫游-初阶移动相机版

    声明:本文涉及图文和模型素材仅用于个人学习.研究和欣赏,请勿二次修改.非法传播.转载.出版.商用.及进行其他获利行为. 摘要 3D 全景技术可以实现日常生活中的很多功能需求,比如地图的街景全景模式.数 ...

  4. 在k8s(kubernetes) 上安装 ingress V1.1.0

    Ingress 公开了从集群外部到集群内服务的 HTTP 和 HTTPS 路由.流量路由由 Ingress 资源上定义的规则控制. 下面是一个将所有流量都发送到同一 Service 的简单 Ingre ...

  5. 理解String、StringBuilder和StringBuffer

    1. String.StringBuilder和StringBuffer异同 相同点:底层都是通过char数组实现的 不同点: String对象一旦创建,其值是不能修改的,如果要修改,会重新开辟内存空 ...

  6. Buffer中的public void write(Buffer source, long byteCount)解析

    这个把source缓冲区中的数据写到当前缓冲区的方法是比较经典的: if (source == null) throw new IllegalArgumentException("sourc ...

  7. devops-5:从0开始构建一条完成的CI CD流水线

    从0开始构建一条完成的CI CD流水线 前文中已经讲述了静态.动态增加agent节点,以动态的k8s cloud为例,下面就以Maven构建Java程序为例,开始构建出一条完整的CI CD流水线. 实 ...

  8. Rust -- 模式与匹配

    1. 模式 用来匹配类型中的结构(数据的形状),结合 模式和match表达式 提供程序控制流的支配权 模式组成内容 字面量 解构的数组.枚举.结构体.元祖 变量 通配符 占位符 流程:匹配值 --&g ...

  9. MQTT.fx的安装和使用

    一.下载和安装 MQTT.fx支持Windows/Linux/Mac,附下载地址:http://www.jensd.de/apps/mqttfx/,下载完成之后双击进行安装. 二.配置使用 打开软件, ...

  10. 基于create-react-app构建静态博客

    前言: 用过hexo后,我被其强大的功能惊艳到了,于是便想自己也写一个静态博客生成器,并且可以发布到GitHub托管. 首先我们来看下效果图: 具体是怎么实现的呢? 我们通过create-react- ...