zoukankan      html  css  js  c++  java
  • exceptional c++ 读书笔记 一 . vector 的使用

     
     

    一. at() 与 operator[]

    void f(vector<int>& v) {
      v[0];
      v.at(0);
    }
    

    对于 vector 中的元素的随机访问有两种方式operator[] 和 at() , 两种方式的区别主要就是

    • at() 函数会进行边界检查,对于越界会抛出异常std::out_of_range
    • operator[] 不会进行边界检查,如果越界可能直接引起程序crash

    正因为上述区别,at() 每次都会进行边界检查,因此导致速度不如 operator[] 快。

    二. resize,size 与 reserve,capacity

    • size()返回一个vector中的元素个数
    • capacity()返回当前vector具有的容量大小,即最多可以容纳多少个元素而不需要重新申请内存。

    需要注意capacity()返回的大小与元素个数之前的区别

    int main() {
      vector<int> v;
      v.push_back(1);
      v.push_back(2);
      v.push_back(3);
      cout <<"size: " << v.size() << " ,capacity: " << v.capacity() << endl;
    return 0;
    }
    

    -程序结果: size: 3 ,capacity: 4

    • void resize (size_type n, value_type val = value_type()); 重置vector中元素的个数,如果size() > n,则多余的会被舍弃,如果size() < n 则将在尾部插入部分数据,插入的数据即可以通过val制定定值,也可以不指定,会根据类型设定不同的默认值
    • void reserve (size_type n); 重置vector的容量,如果 n > capacity(),则将重新按照 n 的大小申请一块新的内存,如果小于则不会进行缩小。
      ps:缩小容量可以通过 vector(v).swap(v); 实现
     
  • 相关阅读:
    sprintf的用法
    sscanf
    Decode the tape
    poj 1579 Function Run Fun
    Where's Waldorf?
    uva Andy's First Dictionary
    UVA Hangman Judge
    UVa Automatic Editing
    界面设计规范
    web标准下的web开发流程思考
  • 原文地址:https://www.cnblogs.com/nicganon/p/5459887.html
Copyright © 2011-2022 走看看