【筆記】常用C++ STL:vector

  • vector:動態陣列,使用上比array更有彈性。
  • 宣告:
    • vector<int> v; 宣告一個空的vector,長度不定。
    • vector<int> v(5); 宣告一個長度為 5 的vector。
    • vector<int> v(5, 0); 宣告一個長度為 5 的vector,且每個元素的初始值為 0。
    • vector<int> v2 = v; 宣告一個新的vector v2,並賦予v的內容。
    • vector<int> v3[2]; 宣告兩個空的vectors,分別是v3[0]、v3[1]。
  • 取值:
    • 與陣列相同,透過下標取值,例如v[0]為vector v中index=0對應的元素,v[1]為vector v中index=1對應的元素,以此類推。
    • v.front():取出vector v 中的第一個元素。
    • v.back():取出vector v 中的最後一個元素。
  • 把元素加進vector:
    • v.push_back(x):在vector v的尾端增添一個元素x。
  • 把元素插入vector:
    • v.insert(v.begin() + i, x):在vector v中 index=i 的位置放進x,原本在 index=i 的元素及其後的所有元素,後推一個位置。
  • 刪除元素:
    • v.pop_back():刪除最後一個元素
    • v.erase(v.begin()+i):刪除 index=i 的元素
    • v.erase(v.begin(), v.begin()+i):刪除 index=0 到 index=i (不含)的元素
    • v.clear():清空整個vector
  • 判斷vector的長度:
    • v.size()
  • 判斷是否為空的vector:
    • v.empty() 回傳true
    • v.size() 回傳零
#include <iostream>
#include <vector>
using namespace std;

void print_vector(vector<int> v){
	for (int i=0; i<v.size(); i++)
		cout << v[i] << ' ';
	cout << endl;
}

int main() {
	vector<int> v;
	for (int i=0; i<5; i++){
		v.push_back(2 * i);
	}
	print_vector(v); //0 2 4 6 8 

	v.insert(v.begin()+1, 9); //0 9 2 4 6 8
	print_vector(v);

	v.erase(v.begin()+1, v.begin()+3);
	print_vector(v); //0 4 6 8 

	return 0;
}
分享本文 Share with friends