1. 程式人生 > 其它 >C++基礎-vector資料結構(初始化,插入,刪除, 資料交換, 分配記憶體, 二維陣列 )

C++基礎-vector資料結構(初始化,插入,刪除, 資料交換, 分配記憶體, 二維陣列 )

1.vector的初始化 使用vector<int> myint{1, 2, 3, 4, 5}, 以及在vector中取資料, 使用.at或者[]

int main1()
{
    vector<int> myint{1, 2, 3, 4, 5};

    for(int i = 10; i < 20; i++)
    {
        myint.push_back(i);
    }
//    cout << myint.front() << endl; //儲存資料
//    cout << myint.back() << endl;
  
// for(auto i:myint) // { // cout << i << endl; //} //myint.resize(5); //動態調整大小 // myint.resize(6, 90); //vector只有6個數據, 緩衝有90 // for(auto ib=myint.begin(), ie = myint.end(); ie != ib; ib++) // { // cout << *ib << endl; // } // for(auto rb=myint.rbegin(), re = myint.end(); re != rb; rb++)
//{ // cout << *rb << endl; //} // for(int i = 0; i < myint.size();++i) // { // cout << myint[i] <<" " << myint.at(i) << endl; // } }

2.vector中插入資料, 使用myint.insert(it, 400) 根據位置插入資料, 以及插入陣列

int main2()
{
    //插入
    vector<int> myintX{11, 12, 13
, 14, 15}; vector<int> myint{1, 2, 3, 4, 5}; //myint.assign(7, 100); //重新初始化 auto it = myint.begin() + 3; int a[5] = {21, 22, 23, 24, 25}; // it = myint.insert(it, 400); //根據位置插入 // cout << *it << endl; // it = myint.insert(it, a, a+5); //插入一個數組 it = myint.insert(it, myintX.begin(), myintX.end()); //批量插入 for(auto i:myint) { cout << i << endl; } return 0; }

vector批量刪除資料,使用.erase進行資料刪除

int main3()
{
    vector<int> myint{1, 2, 3, 4, 5};
    auto it = myint.begin() + 3;
    //myint.erase(it);
    myint.erase(myint.begin(), myint.begin() + 3); //批量刪除, 不包含最後的位置
    for(auto i:myint)
    {
        cout << i << endl;
    }
    return 0;
}

vector資料交換, 使用.swap進行資料交換

int main4() {
    vector<int> myint{1, 2, 3, 4, 5};
    vector<int> myint2{3, 32, 33, 34, 35};
    myint.swap(myint2);
    for (auto i:myint) {
        cout << i << endl;
    }
    for (auto i:myint2) {
        cout << i << endl;
    }
}

vector獲取分配器分配記憶體

int main7() {
    vector<int> myint1;
    int *p = myint1.get_allocator().allocate(5); //獲取分配器分配記憶體
    cout << myint1.size() << endl;
    for (int i = 0; i < 5; i++) {
        cout << (p[i] = i) << myint1[i] << endl;
    }
    myint1.get_allocator().deallocate(p, 5); //釋放記憶體

    cin.get(); //自動管理記憶體
}

vector構造二維陣列, 使用vector<vector<int>>

int main()
{
    vector<int> myint1{1, 2, 3, 4, 5};
    vector<int> myint2{1, 2, 3, 4, 5, 6, 7};
    vector<int> myint3{1, 2, 3};
    vector<vector<int>>myallint{myint1, myint2, myint3}; //構造vector的二維陣列
    for(auto i:myallint)
    {
        for(auto j:i)
        {
            cout << j << " ";
        }
        cout << "\n";
    }
    cin.get();
}