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 << "
";
    }
    cin.get();
}
原文地址:https://www.cnblogs.com/my-love-is-python/p/14941968.html