Vector容器的基本用法

來源:互聯網
上載者:User

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;}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.