1.vector構造函數
函數原型
vector<int> v? ?// 默認構造,size為0
vector(const_iterator beg, const_iterator end)? ?// 將v的[begin, end) 元素拷貝過來
vector(n, elem)? ? ?// 構造函數將n個elem拷貝到本身
vector(const vector & v)? ?// 拷貝構造
2.vector賦值操作
函數原型
vector & operator=(const vector& vec);? ? // 重載等號
assign(const_iterator beg, const_iterator end)? ? // 將【beg,end)區間數據拷貝給自己
3.vector容器容量和大小
函數原型
empty()? ? ?// 判斷容器是否為空
capacity()? ? // 容器的容量
size()? ? ? ? ?// 容器元素個數
resize(int num)? ?// 重新指定容器的長度為num,若容器邊長,則以默認值填充位置
? ? ? ? ? ? ? ? ? ? ? ? ? ?// 若容器變短,則超過的部分被刪除
4.vector數據的插入和刪除
函數原型
push_back(e)? ?// 尾部插入元素
pop_back()? ? // 刪除最后一個元素
insert(const_iterator pos, ele)? ? // 迭代器指向pos位置插入ele
erase(const_iterator pos)? ? ? ?// 刪除迭代器指向的元素
erase(const_iterator start, const_iterator end)? // 刪除從start到end的元素
clear()? ? ?// 清空容器
#include<iostream>
#include<vector>
using namespace std;
void print_vector(const vector<int> &v)
{for(int i = 0; i < v.size(); i++){cout << v[i];}cout << endl;
}
void test1()
{vector<int> v1;v1.push_back(1);v1.push_back(2);v1.push_back(3);v1.push_back(4);v1.push_back(5);print_vector(v1);v1.pop_back();print_vector(v1);v1.insert((v1.begin()+1), 100);print_vector(v1);v1.erase((v1.begin()+1));print_vector(v1);v1.erase(v1.begin(), (v1.end()-1));print_vector(v1);v1.clear();print_vector(v1);
}
int main()
{test1();return 0;
}
5.vector數據讀寫
函數原型
operator[]? // 返回索引idx所指的數據(因為vector的迭代器是隨機迭代器)
front()? ? ? ?// 返回容器中第一個數據元素
back()? ? ? ?// 返回容器最后一個數據元素
6.vector互換容器
函數原型:
swap(vec)? // 將vec與本身互換
實際用途來收縮內存空間
開始分配的內存空間很大,突然給把容器大部分內容刪除了,但是還是會分配那么大的空間
使用v1創建一個匿名對象,實際上是拷貝構造,他只會拷貝size大小的內存。當執行完畢這行代碼后,這個匿名對象就被釋放掉。
vector<int>(v1).swap(v1)
7.vector預留空間
函數原型:?
reserve(int len)? ? ?// 容器預留len個元素長度,預留位置不初始化,元素不可訪問
vector在添加元素的時候會動態擴容,它會把原來的空間釋放掉,把所有的內容放到新的更大的空間里面。下面的測試代碼就擴容了15次。
預留空間后,不會動態擴容,提高了運行效率。