C++中vector的使用總結


vector簡單說明

vector也是一個容器,並且是個順序容器。順序容器有可變長數組vector雙向鏈表list雙端隊列deque
順序容器的定義,是因為容器元素的位置和他們的值大小無關,也就是說順序容器不排序。
所有的容器都有以下兩個方法:

    int size() : 返回容器對象中元素的個數
    bool empty(): 判斷容器對象是否為空

順序容器還有以下成員函數:

begin():返回指向容器中第一個元素的迭代器。

end():返回指向容器中最后一個元素后面的位置的迭代器。

rbegin():返回指向容器中最后一個元素的反向迭代器。

rend():返回指向容器中第一個元素前面的位置的反向迭代器。

erase(...):從容器中刪除![](https://img2018.cnblogs.com/blog/1169804/201903/1169804-20190310230711138-1115905688.png)

一個或幾個元素。該函數參數較復雜,此處省略。

clear():從容器中刪除所有元素。

front():返回容器中第一個元素的引用。

back():返回容器中最后一個元素的引用。

push_back():在容器末尾增加新元素。

pop_back():刪除容器末尾的元素。

insert(...):插入一個或多個元素。該函數參數較復雜,此處省略。

迭代器的使用

迭代器是一個變量,迭代器可以指向容器中的元素,和指針類似。
迭代器的定義方式有以下幾種:

  1. 正向迭代器

    容器類名::iterator 迭代器名;

  2. 反向迭代器

    容器類名::reverse_iterator 迭代器名;

  3. 常量正向迭代器

    容器類名::const_iterator 迭代器名;

  4. 常量反向迭代器

    容器類名::const_reverse_iterator 迭代器名;

迭代器的使用示例

vector<int> a;
vector<int>::iterator pr;
for(int i = 0; i < 3; i++)
{

    a.push_back(i);
}

cout << a.size()<<endl;
cout << a.back()<<endl;

cout << "使用數組形式遍歷vector內容"<< endl;
for(int i = 0; i < a.size(); i++){
    cout << a[i] << "  " ;
}

cout << "使用正向迭代器形式遍歷vector內容"<< endl;
for(pr = a.begin(); pr != a.end(); pr++){

    //這里*pr就是迭代器pr指向的元素
    cout << *pr << "  ";
}

cout << endl;

cout << "使用反向迭代器形式遍歷vector內容"<< endl;
vector<int>::reverse_iterator prr;

for(prr = a.rbegin(); prr != a.rend(); prr++){

    cout << *prr * 3 << "  ";
}

cout << endl;

vector的成員函數以及作用

vector()                        無參構造函數,將容器初始化為空

vector(int n)                 將容器初始化為有 n 個元素

vector(int n, const T & val)             假定元素的類型是 T,此構造函數將容器初始化為有 n 個元素,每 個元素的值都是 val

vector(iterator first, iterator last)            first 和 last 可以是其他容器的迭代器。一般來說,本構造函數初始化的結果就是將 vector 容器的內容變成與其他容器上的區間 [first, last) —致

void clear()                                    刪除所有元素

bool empty()                                  判斷容器是否為空

void pop_back()                            刪除容器末尾的元素

void push_back( const T & val)    將 val 添加到容器末尾

int size()                                        返回容器中元素的個數

T & front()                                      返回容器中第一個元素的引用

T & back()                                      返回容器中最后一個元素的引用

iterator insert(iterator i, const T & val)            將 val 插入迭代器 i 指向的位置,返回 i

iterator insert( iterator i, iterator first, iterator last)            將其他容器上的區間 [first, last) 中的元素插入迭代器 i 指向的位置

iterator erase(iterator i)                    刪除迭代器 i 指向的元素,返回值是被刪元素后面的元素的迭代器

iterator erase(iterator first, iterator last)                刪除容器中的區間 [first, last)

void swap( vector <T> & v)             將容器自身的內容和另一個同類型的容器 v 互換

vector的示例用法

#include<iostream>
#include<vector>

int main(){

int a[4] = {1,3 ,2, 5};

vector<int> v(a,a+4); //將數組a的內容寫入v
cout << "1) v.size = " << v.end() - v.begin() << endl;

cout << "2) " << "use iterator ";
vector<int>::iterator p ;
for(p = v.begin(); p != v.end();p++)
    cout << *p << " ";
cout << endl;

//刪除第二個元素
v.erase(v.begin() + 1);
cout << "3) " << "after delete second element ";
for(p = v.begin(); p != v.end();p++)
    cout << *p << " ";
cout << endl;

//在第二個元素后加入13
v.insert(v.begin()+1,13);
cout << "4) " << "insert 13 after second element ";
for(p = v.begin(); p != v.end();p++)
    cout << *p << " ";
cout << endl;


//使用vector的其他構造函數
vector<int> pa(5,10);
cout << "5) " << "use another struct function ";
for(p = pa.begin(); p != pa.end();p++)
    cout << *p << " ";
cout << endl;

//將V插在pa開頭
pa.insert(pa.begin(),v.begin(),v.end());
cout << "6) " << "insert all of v into pa ";
for(p = pa.begin(); p != pa.end();p++)
    cout << *p << " ";
cout << endl;

//刪除第二個到第四個之間的元素
pa.erase(pa.begin() + 1,pa.begin()+3);
cout << "7) " << "after delete elements that locate at 2th and 4th ";
for(p = pa.begin(); p != pa.end();p++)
    cout << *p << " ";
cout << endl;

return 0;
}

輸出結果如下所示:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM