zoukankan      html  css  js  c++  java
  • 陣列型式(Array idiom) vector

    http://caterpillar.onlyfun.net/Gossip/CppGossip/vector1.html
    您可以使用vector來替代陣列,並使用陣列型式(Array idiom)的方式來操作vector,要使用vector,必須含入vector表頭檔:
    #include <vector>

    要建立vector型態的物件(Object),您必須提供元素型態與長度資訊,例如下例中建立int元素的vector,並擁有10個元素:
    vector<int> ivector(10);

    您可以模彷陣列中存取元素的方式來存取vector的元素,使用下標(Subscript)運算子並指定索引來取得指定的元素,例如:


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

    int main() {
    vector<int> ivector(10);

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

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

    return 0;
    }

    執行結果:
    0 1 2 3 4 5 6 7 8 9

    與陣列型態不同的是,vector記得自己的長度資訊,您可以使用size()查詢vector的元素長度,或是使用empty()測試長度是否為0。

    當您宣告vector物件時,所有的元素值會有與型態相應的初始值,例如算術相關型態會被初始為0,指標型態初始為0(表示不指向任何位址),如果您打算將所有元素初始為指定的值,則可以如下:
    vector<int> ivector(10, 5);

    上例中將宣告有10個元素的vector,並將所有的元素值初始為5。

    如果您願意,您可以使用一個陣列來作為建構vector的引數(Argument),如此建構出來的vector會擁有陣列所指定的元素初值,在這之前,您要先知道,宣告一個陣列時,陣列名稱所儲存的是第一個元素在記憶體中的位址值,對該位址值加一,表示移至下一個元素,當使用陣列來建構vector時,要指定的是元素的起始位址與最後一個元素的下一個位址,例如以整個陣列來建構vector的話,可以這麼撰寫:

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

    int main() {
    int iarr[] = {1, 2, 3, 4, 5};

    vector<int> ivector(iarr, iarr + 5);

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

    return 0;
    }

    執行結果:
    1 2 3 4 5

    如果打算只使用陣列中的某個範圍來建構vector,例如複製索引1到3的元素,則可以如下:

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

    int main() {
    int iarr[] = {1, 2, 3, 4, 5};

    vector<int> ivector(iarr + 1, iarr + 4);

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

    return 0;
    }

    執行結果:
    2 3 4

    vector可以使用另一個vector作為引數來建構,例如以ivector1作為引數來建構ivector2:
    vector<int> ivector1(5, 1);
    vector<int> ivector2(ivector1);

    vector可以使用=直接指定給另一個vector,這會將vector的值複製給被指定的vector,例如:


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

    int main() {
    vector<int> ivector1(5, 1);
    vector<int> ivector2; // 定義一個空的vector

    ivector2 = ivector1;

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

    ivector2[0] = 2;

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

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

    return 0;
    }

    由於指定時是將值一一複製加入目標vector,所以您改變目標vector的值,並不會影響原來的vector,執行結果如下:
    1 1 1 1 1
    2 1 1 1 1
    1 1 1 1 1
  • 相关阅读:
    多项输入
    输出多项数据
    圆的面积
    计算并显示
    半径计算圆的周长和面积
    三角形的面积
    显示数据二进制形式
    将一批数据以二进制形式存放在磁盘文件中
    读入字符存入磁盘文件
    数组送到磁盘文件存放
  • 原文地址:https://www.cnblogs.com/nickchan/p/3104417.html
Copyright © 2011-2022 走看看