C++ vector笔记

需包含的头文件

普通使用

指针方法

二维动态数组

【1】

【2】

作者: Leniy

Do not , for one repulse , give up the purpose that you resolved to effect .

本文著作版权归Leniy所有,并受法律保护。

转载、使用整体或任何部分的内容(包含但不限于各个页面的标题、评论框提示语)须经过Leniy的授权。

CopyRight © 2006-2017 Leniy.org all rights reserved.

77 thoughts on “C++ vector笔记

  1. Vespa

    专注STL30年不放弃。。。。虽然有些企业的项目里面明文说明了不许用STL。。。

    • Leniy

      这算是长期的积累吧。另外真心感觉你家的主机都好贵

  2. Yu Jing

    另外,动态插入数组我喜欢这么搞
    vector<vector<int>> v;
    for(blabla)
    {
    vector<int> line;
    for(blablabla2)
    {
    line.push_back(value);
    }
    v.push_back(line);
    }

    • Leniy

      先赋好line再压入v中,的确比先压入v再赋值逻辑性强。
      我果然好外行啊,连这种逻辑都没有想到过。哭

  3. Yu Jing

    想当年,我C++最初学的就是这个结构,然后用这东西做了:1 queue 2 stack 3 map 真是个万金油的东西

    • Leniy

      遍历起来就是方便,不过其实我也只会这种方法。

    • 死神的微笑

      当年,微软的STL还没出来的时候,只能用简单的数据结构来做queue、stack之类的东西。

    • Yu Jing

      还以为是有什么我不知道的典故来着…
      STL库的确方便了很多群众
      不过有时候也会误导不知情围观人员….比如某人曾曾尝试使用std::map构建一个巨大的索引,结果慢得要死还干掉了服务器

    • Leniy

      的确容易误导。我这个项目最初从fortran转到c++时,为了处理矩阵就装了STL和Boost,结果把我的C::B弄挂掉了,调试了好几天。
      后来才反应过来,为了实现点乘和叉乘没必要装这么大的库,直接用vector重写这个函数就好了,就有了这篇文章。

  4. Yu Jing

    “用v 输出”还有另一种用法,可以使用v.at(i) ,效果类似,但是做边界检查,代价是效率要降低一些

    • Yu Jing

      但是你v[i]的i如果大于等于size,而给这个地方赋值,就不是我们期待的效果了。
      at主要是省掉一句 if(i < v.size())
      所以才要按需要来来着

    • Leniy

      多执行一次判断,复杂度上升多少?
      我上课的时候,老师教的O(n)什么的完全不会

    • Yu Jing

      从复杂度看,无论时间复杂度和空间复杂度都不会上升的.
      复杂度主要是表示”数量极”的,
      但是,执行判断是O(1)的.所以at的时间是方括号操作符的常数倍,所以复杂度不变

    • Leniy

      原来复杂度是数量级的,我以前真的以为o(n)是加乘级别的,数量级的用O(n^n)。

    • Yu Jing

      所谓i复杂度,是指”随着处理数据的增加,工作量增加的量与数据量的增加的比值的数量极”
      额..前面那个定义是我描述的,如果表示这种描述不能理解,只是说明我语死早了..

    • Leniy

      C++中还真的没用过迭代器,对这个概念的界定也不是很清楚。
      倒是arm编程时,使用地址之间的跳转及枚举用的多些,算是迭代器么?

    • Leniy

      原来iterator就是迭代器啊,看Thinking in C++自学的表示完全对不上号。
      我只是看了个基础,高级用法完全不会

发表评论

电子邮件地址不会被公开。 必填项已用*标注