天天看點

淺談vector容器的奇技淫巧

淺談vector容器的奇技淫巧

本篇随筆簡單講解一下C++STL中vector容器的一些其他操作。

一、insert函數

insert函數的時間複雜度是\(O(n)\)的,就是暴力,要慎用。

大體用法是這樣:

#include <bits/stdc++.h>
using namespace std;
int main()
{
    vector<int> v(4);
    v[0]=2;
    v[1]=7;
    v[2]=9;
    v[3]=5;//此時v為2 7 9 5

    v.insert(v.begin(),8);//在最前面插入新元素,此時v為8 2 7 9 5
    v.insert(v.begin()+3,1);//在疊代器中下标為3的元素前插入新元素,此時v為8 2 7 1 9 5
    v.insert(v.end(),3);//在向量末尾追加新元素,此時v為8 2 7 1 9 5 3
    v.insert(v.end(),3,0);//在尾部插入3個0,此時v為8 2 7 1 9 5 3 0 0 0

    int a[] = {1,2,3,4};
    v.insert(v.end(),a[2],a[1]);//在尾部插入a[2]個a[1],此時v為8 2 7 1 9 5 3 0 0 0 2 2 2

    vector<int>::iterator it;
    for(it=v.begin(); it!=v.end();it++)
    {
        cout<<*it<<" ";
    }
    cout<<endl;
}
           

二、erase函數

同樣,也是暴力删除一個位置的數,時間複雜度還是\(O(n)\)。

用法大緻相同