[小丁笔记] vector

vector 那些一直没记住的函数详解

构造函数

  • vector( int size, T init )
    第一个参数设置容量
    第二个参数设置统一的初始值

  • vector( vec )
    拷贝一个vector
    用vector( std::move(vec) )则是不拷贝的移动,原因在于std::move()

  • vector( &a[l], &a[r]+1 )
    从数组a中拷贝[l,r]区间的数据并构造vector

  • vector( vec.begin()+l, vec.begin()+r+1 )
    从vec中拷贝[l,r]区间的数据并构造vector

.resize(int n)

重新设置vector实例的大小。
变大时会将新数字赋值为0。 如果vector的内容是结构体,则会调用构造函数。
变小时会丢弃末尾,这个丢弃过程是不可找回的。

.reserve(int n)

预留空间到n,
如果当前capacity大等n则无事发生

.shrink_to_fit()

将capacity缩小至和size相同

.at(int pos)

同vec[pos],但会有越界检查和抛出错误

swap(vec1, vec2)

是O(1)的

卡常小知识

  • vector的动态空间总用时是O(log size)的,由于小于线性所以不明显
    但单次reserve是O(1)的

  • insert() 和 erase() 都是线性的,除非是为了节省码量否则不建议使用

posted @ 2022-02-06 16:33  Aireen_Ye  阅读(28)  评论(0编辑  收藏  举报
底部 顶部 留言板 归档 标签
Der Erfolg kommt nicht zu dir, du musst auf den Erfolg zugehen.