vector作為STL提供的標準容器之一,是經常要使用的,有很重要的地位,並且使用起來也是灰常方便。vector又被稱為向量,vector可以形象的描述為長度可以動態改變的數組,功能和數組較為相似。實際上更專業的描述為:vector是一個多功能的,能夠操作多種資料結構和演算法的模板類和函數庫,vector之所以被認為是一個容器,是因為它能夠像容器一樣存放各種類型的對象,簡單地說,vector是一個能夠存放任意類型的動態數組,能夠增加和壓縮資料。
vector的擴充機制:按照容器現在容量的一倍進行增長。 vector容器分配的是一塊連續的記憶體空間,每次容器的增長,並不是在原有連續的記憶體空間後再進行簡單的疊加, 而是重新申請一塊更大的新記憶體,並把現有容器中的元素逐個複製過去,然後銷毀舊的記憶體。 這時原有指向舊記憶體空間的迭代器已經失效,所以當操作容器時,迭代器要及時更新。
#include <stdio.h>#include <string.h>#include <algorithm>#include <math.h>#include <vector>#include <map>#include <iostream>using namespace std;vector<int>mem;int z, t, n;void declars() ///vector容器的聲明{ ///定義空的vector vector<int>mem1; ///產生大小為50的vector vector<int>mem2(50); ///產生大小為50,並且每個元素都是6的vector vector<int>mem3(50,6); int ans[5]={1,2,3,4,5}; vector<int>mem4(ans,&ans[5]);///以區間(begin,end)做為初值的vector}void cins() ///vector容器的輸入{ for(int i = 0; i < z; i++) { scanf("%d",&t); mem.push_back(t); ///在尾部添加元素 } ///mem.pop_back(); ///在尾部刪除元素}void couts() ///vector容器的輸出{ for(int i = 0; i < z - 1; i++) printf("%d ",mem[i]); printf("%d\n",mem[z-1]); vector<int>::iterator it; ///定義迭代器,通過迭代器來遍曆或者指向容器裡面的元素的,可以理解為容器指標 for(it = mem.begin(); it < mem.end() - 1; it++) printf("%d ",*it); printf("%d\n",*it);}void sizes() ///vector容器中的元素個數{ printf("%d\n",mem.size()); printf("%d\n",mem.max_size());///vector容器能容納的最大元素個數}void emptys() ///vector容器中是否為空白{ printf("%d\n",mem.empty()?0:1); ///空返回0,非空返回1}void sorts() ///vector容器的排序{ sort(mem.begin(),mem.end()); ///從小到大排序 reverse(mem.begin(),mem.end());///將從小到大排序翻轉,變為從大到小排序}void finds(int n)///用vector容器尋找到n的值,並返回n的位置{ ///vector<int>::iterator fd; vector<int>::iterator fd = find(mem.begin(),mem.end(),n); printf("%d\n",*fd);}struct strings{ char c; string s; int e;}str;void structs() ///vector容器在結構體中的應用{ vector<strings> maps; str.s = "Hellow word!"; str.e = 66666; str.c = 'A'; maps.push_back(str); cout << str.s << endl << str.c << endl << str.e << endl;}int main(){ while(~scanf("%d",&z)) { scanf("%d",&n); cins(); ///vector容器的輸入 couts(); ///vector容器的輸出 sorts(); ///vector容器的排序 couts(); ///vector容器的輸出 sizes(); ///vector容器中的元素個數 finds(n); ///用vector容器尋找到n的值,並返回n的位置 structs(); ///vector容器在結構體中的應用 mem.clear();///清空容器 vector <int>().swap(mem); ///清除容器並最小化它的容量, } return 0;}