c++中的array數組和vector數組


我覺得實驗一下會記得比較牢,話不多直接上代碼。

下面是array數組,感覺用的不多。

//cpp 風格數組 array
#include <iostream>
#include <array>
#include <vector>

using namespace std;

int main()
{
    array<int , 6> myint = {1 , 2 , 34, 45 , 0 , -2};
    for(int i = 0 ; i < myint.size() ; i++)  //size 獲取長度,vector也是這樣獲取長度的
        cout << myint[i] <<"  " << (void *)&myint[i] << endl;

    array<int  , 5> a1 = {1 , 2 ,3  ,4 ,5};
    array<int ,  5> a2 = {0 , -1 , -2 , -3 , -5};
    array <int , 5> a3 = {8, 9 , 10 , 11 , 22};
    array<array<int , 5> , 3> a = {a1 , a2 , a3};


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

    for(auto i : a)  //c++11語法
    {
        for(auto j : i)
            cout << j << " ";
        cout <<endl;
    }
    cout <<endl;
}

下面是vector數組,覺得挺強大的。

一些基本的操作函數也不過 push_back() 尾部插入, pop_back() 尾部刪除, size() 獲取大小, erase() 指定位置刪除, clear() 清空, insert() 指定位置插入 , empty() 判斷數組是否為空 為空返回true, front() 返回第一個元素的引用, back() 返回最后一個元素的引用, begin() 返回首元素的迭代器, end() 返回尾元素的迭代器。

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

int main()
{
    vector<double>db;  //數組的大小可變 堆上的數組不一定是連續的
    double m;
    for(int i = 0 ; i < 4 ; i++)
    {
        cin >> m;          //不能直接cin輸入到db中  因為還沒分配內存
        db.push_back(m); //插入數據  自動變長
        cout << db[i] << "   " << (void*)&db[i] <<endl;
    }
        cout << db[1] << "   " << (void*)&db[1] << endl << endl;

        cout << &db <<endl;  //db不是指針

    for(auto i : db)  //這些i 和下面的ia ib ....都在棧上
    {
        cout << i << "  " << (void *)&i << endl;  //&i只能取首地址
    }

    cout << endl << endl;

    auto ia = db.begin();  //開始
    auto ib = db.end(); //結束
    for( ; ia != ib ; ia++)
    {
        cout << *ia << "   ";
    }
    cout <<endl;

    auto iia = db.rbegin();  //從尾部
    auto iib = db.rend();
    for( ; iia != iib ; iia++)
    {
        cout << *iia << " - ";
    }
}
#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<int >a1 , a2;
    vector<int >a3;

    a1.push_back(2);

    a2.push_back(3);
    a2.push_back(4);
    a2.push_back(5);

    a3.push_back(10);
    a3.push_back(99);

    vector<vector<int>> a = {a1 , a2 , a3};
    for( auto i : a)
    {
        for(auto j : i)
            cout << j << "   ";
        cout <<endl;
    }

    //多個vector可以實現嵌套  實現鋸齒多維數組  長度可以不確定
    //多個array嵌套可以實現多維數組 但是長度必須等長

}
#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector <string> str;

    str.push_back("WEL come!");
    str.push_back("Hello");
    str.push_back("World");
    str.push_back("China");
    str.pop_back(); //尾部刪除一個
    //str.clear(); //清空

    for(auto ia = str.begin() ; ia != str.end() ; ia++)
    {
        if((*ia) == "Hello")
        {
            str.erase(ia);          //刪除之后begin會發生變化
         //   break;
        }
        cout << *ia << endl;
    }

    str.erase(str.begin() + 1); // 刪除

    cout << endl;

    for(auto i : str)  // 兩種遍歷輸出  下面是另一種
    {
        cout << i << "    ";
    }
    cout << endl;
    str.insert(str.begin() +1 , "HHHH"); //不能越界插入  可以在范圍內插入 

     for(auto i : str)  // 兩種遍歷輸出  下面是另一種
    {
        cout << i << "    ";
    }
}

 


免責聲明!

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



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