1. 程式人生 > >C++STL模板庫之vector

C++STL模板庫之vector

返回值 a + b 操作 增刪改查 val clear urn 開頭 !=

目錄

  • STL之Vecter
    • 一丶STL簡介
    • 二丶Vector用法
      • 1.vector容器的使用
      • 2.vector叠代器.
      • 3.vector中的方法.

STL之Vecter

一丶STL簡介

STL 是標準模板庫的意思. 就是數據結構,封裝成類讓我們使用. 使用的時候我們要了解數據結構才可以使用這些類.因為數據結構不知道是什麽結構你用類的話也用不明白.

二丶Vector用法

1.vector容器的使用

首先介紹的第一個序列容器就是 vector. 它底層是數組.可以理解為是動態數組.
我們自己也可以寫一個動態數組.然後 將運算符[] 進行重載.
使用之前需要包含頭文件,以及使用命名空間.std. 類是在這裏面定義的.

 #include<vector>
using namespace std;

因為是動態數組.所以vector容器操作的都是尾部操作.就也是數組後面進行增刪改查.

2.vector叠代器.

vector的叠代器有兩種.

vector<object>::const_iterator  const_iterator叠代器是不能修改內容的
vector<object>::iterator   iterator定義的叠代器是可讀可寫的.

編寫代碼如下:
棧代碼:

#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int main(char *argc,char *argv[]) 
{

    vector<int> a;
    a.push_back(1);
    a.push_back(2);

    vector<int>::const_iterator it = a.begin();
    while (it != a.end()) 
    {
        cout << *it << endl;
        ++it;
    }
    system("pause");

}

方法:
push_back(Value); 是往數組後面添加值.
begin(); 獲取第一個元素
end(); 獲取最後一個元素.

*it 獲取值.
上面的代碼使我們存放的int類型數據. 其實vector可以當做數組來用.是變長的數組.
跨平臺的. 我們不光可以存儲int 也可以存儲 基本類型.以及指針類型都是可以的.或者存儲
函數指針也可以.
例如下:

typedef int(*pFn)(int , int );
int Add(int a, int b)
{
    return a + b;
}
int main(char *argc,char *argv[]) 
{
    pFn p = Add;
    vector<pFn> pfnve;
    pfnve.push_back(p);
    vector<pFn>::iterator it = pfnve.begin();
    while (it != pfnve.end())
    {
        cout << (*it)(1, 2) << endl; //第一種輸出方式
        cout << it[0](1, 4) << endl; //使用[]操作符輸出
        it++;
    }
    system("pause");

}

結果第一個會輸出3,第二個會輸出五,因為我們存儲了一個函數指針.如果存儲多個.則可以進行多次調用.
堆代碼:
上面使用的 vector是在棧中定義的,我們也可以定義為指針.也就是在堆中使用.
代碼如下:

int main(char *argc,char *argv[]) 
{
    vector<int> *a = new vector<int>;
    a->push_back(1);
    a->push_back(2);
    a->push_back(4);
    a->push_back(3);
    a->push_back(5);

    vector<int>::const_iterator it = a->cbegin();
    while (it != a->cend())
    {
        cout << (*it) << endl;
        cout << it[0] << endl;
        it++;
    }
    cout << "---------------------------" << endl;

    system("pause");

}

cbegin(); 也是返回第一個元素,前提是你使用const_iterator 叠代器才可以. cbegin()c開頭就是const的意思.常量的意思.也就是說不能更改.

3.vector中的方法.

push_back(Value); 往vector容器後面添加一個數據.
begin(); 獲取第一個元素.
end(); 獲取最後一個元素.
size(); 容器中元素的個數,可以通過 for(i < xx.size());的方式遍歷
clear(); 清空容器中的所有元素
front(); 返回容器中第一個元素的值,跟begin()不同,它是返回值
back(); 返回容器中最後一個元素的值
pop_back(); 返回容器中最後一個元素的值,並且清空最後一個元素.
erase(); 刪除容器中任意一個位置的元素.

C++STL模板庫之vector