C++ STL 容器基本範例實驗測試[02_CPP_STL_Vector ->純C++ Vector範例]

C++ STL 容器基本範例實驗測試[02_CPP_STL_Vector ->純C++ Vector範例]

C++ STL 容器基本範例實驗測試[02_CPP_STL_Vector ->純C++ Vector範例]


資料來源:https://www.cnblogs.com/skyfsm/p/6934246.html

http://larry850806.github.io/2016/06/06/STL1/
http://larry850806.github.io/2016/06/06/STL2/

GITHUB 完整資料: https://github.com/jash-git/Base_CPP_STL_Example


Vector 可以看成是一個動態陣列

用法跟陣列很像,基本功能有 :
    ▲ push_back: 把一個值加到尾巴
    ▲ pop_back: 把尾巴的值移除掉
    ▲ size: 得到目前長度(元素個數)
    ▲ []: 得到某一個位置的值
    ▲ clear: 把元素清空
Vector 的優點
    ▲ 宣告時可以不用確定大小
    ▲ 可以 Random Access
Vector 的缺點
    ▲ 在內部進行刪除時效率很低
本範例額外紀錄
    ▲ 純C數值(整數/浮點數)轉字串

    ▲ C++字串相加

#include <iostream>
#include <cstdio>
#include <cstdlib>/* malloc, free, rand */
#include <cstring>/*strncpy .....*/
#include <string>/*c++ string class*/
#include <vector>

using namespace std;
/*
Vector 可以看成是一個動態陣列
用法跟陣列很像,基本功能有 :
    ▲ push_back: 把一個值加到尾巴
    ▲ pop_back: 把尾巴的值移除掉
    ▲ size: 得到目前長度(元素個數)
    ▲ []: 得到某一個位置的值
    ▲ clear: 把元素清空
Vector 的優點
    ▲ 宣告時可以不用確定大小
    ▲ 可以 Random Access
Vector 的缺點
    ▲ 在內部進行刪除時效率很低
本範例額外紀錄
    ▲ 純C數值(整數/浮點數)轉字串
    ▲ C++字串相加
*/
void Pause()
{
    printf("Press Enter key to continue...");
    fgetc(stdin);
}

int main()
{
    vector<int> vec;    // 宣告一個裝 int 的 vector
                        // 現在 vec 是空的
    vec.push_back(10);
    vec.push_back(20);  // 經過三次 push_back
    vec.push_back(30);  // vec 是 [10, 20, 30]

    int length = vec.size();        // length = 3
    for(int i=0 ; i<length ; i++){
        cout << vec[i] << endl;     // 輸出 10, 20, 30
    }
    vec.clear();// 現在 vec 是空的


    for(int i=0 ; i<5 ; i++){
       vec.push_back(i * 10);       // [0, 10, 20, 30, 40]
    }

    for(int i=0 ; i<vec.size() ; i++){
        cout << vec[i] << endl;     // 輸出 0, 10, 20, 30, 40
    }
    vec.clear();// 現在 vec 是空的

    for(int i=0 ; i<5 ; i++){
       vec.push_back(i * 10);       // [0, 10, 20, 30, 40]
    }

    vec.pop_back();     // 移除 40
    vec.pop_back();     // 移除 30

    for(int i=0 ; i<vec.size() ; i++){  // vec.size() = 3
        cout << vec[i] << endl;         // 輸出 0, 10, 20
    }
    vec.clear();// 現在 vec 是空的

    vector<string> vecStr;
    string strbase = "value = ";
    for(int i=0 ; i<5 ; i++){
       strbase = "value = ";
       char buf[30];
       sprintf(buf,"%d",(i * 10));//純C數值(整數/浮點數)轉字串
       strbase = strbase + buf;//C++字串相加
       vecStr.push_back(strbase);       // [0, 10, 20, 30, 40]
    }
    for(int i=0 ; i<vecStr.size() ; i++){  // vec.size() = 3
        cout << vecStr[i] << endl;         // 輸出 0, 10, 20
    }
    vecStr.clear();
    Pause();
    return 0;
} 


發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *