1. 程式人生 > >C++標準模板庫(STL)的學習

C++標準模板庫(STL)的學習

一、向量(vector)

1.所在標頭檔案:#include<vector>

2.本質:對陣列的封裝。

3.特點:讀取能在常數時間完成且大小可根據需要去改變。

4.初始化:

初始化舉例:

vector<int> ivec1;
vector<int> ivec2(ivec1);

vector<string> svec1;
vector<string> svec2(ivec);

vector<int> ivec4(10,-1);
vector<string> svec(10,"hi!"); 

5.常用函式:

 使用舉例:

#include<iostream>
#include<vector>
using namespace :: std;

int main()
{
    vector<int> vec;
    vec.push_back(3);
    vec.pop_back();

    cout << vec.size() << endl;

    return 0;
}

結果為0。

6.如何遍歷vector?

法一(常見遍歷陣列方法):

    for(int i = 0;i < vec.size();i++){
        cout << vec[i] << endl;
    }

法二(迭代器方法):

    vector<int>::iterator itor = vec.begin();
    for(;itor != vec.end();itor++){
        cout << *itor << endl;
    }

二、連結串列(list)

1.所在標頭檔案:#include<list>

3.特點:資料插入速度快。

4.使用方法:與vector使用方法類似。但要注意一點,在list中的遍歷只支援迭代器方式的遍歷,

不支援

    for(int i = 0;i < list1.size();i++){
        cout << list1[i] << endl;
    }

三、對映(map)

1.所在標頭檔案:#include<map>

2.原理:

3.使用方法:

map需要與pair一起使用,用來儲存多個key-value對。

    map<int,string> m;
    pair<int,string> p1(10,"hello");
    pair<int,string> p2(20,"world");
    m.insert(p1);
    m.insert(p2);

    cout << m[10] << endl;
    cout << m[20] << endl;

    map<string,string> m;
    pair<string,string> p1("H","hello");
    pair<string,string> p2("W","world");
    m.insert(p1);
    m.insert(p2);

    cout << m["H"] << endl;
    cout << m["W"] << endl;

如何遍歷map?

    map<string,string>:: iterator itor = m.begin();
    for(;itor != m.end();itor++){
        cout << itor->first << endl;
        cout << itor->second << endl;
    }

其中itor->first是列印key的值,itor->second是列印value的值。