C++ Vector 常见用法全解(代码版)

本文详细介绍C++标准库中的vector容器的使用方法,包括创建、插入、获取、删除等操作,并展示了如何利用迭代器进行遍历及自定义排序等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++ vector 用法: 

vector维护的是连续线性空间


void bianli(vector<int>& vt)
{
    //遍历1   c++11的新特性
    for (auto it : vt)
        cout<<it<<" ";
    cout<<endl;
    //遍历2   直接访问任意元素
    for (int i = 0; i < vt.size(); i++)
        cout<<vt[i]<<" ";
    cout<<endl;
    //遍历3   正向迭代器访问
    for (auto it = vt.begin(); it != vt.end(); it++)
        cout<<*it<<" ";
    cout<<endl;
}

bool compare(int a, int b)  //对于自定义类型,就需要自己写比较函数。用来sort等功能
{
    return a < b;
}

void vector_test()
{
    //创建
    vector<int> vt1;
    vector<int> vt2(3, 1);          //初始push进去3个1
    vector<int> vt3(vt2);           //用vt2构造vt3
    vector<int> vt4(vt2.begin() + 1, vt2.end() - 1);    //vt2的迭代器圈定的部分初始化vt4
    
    //插入
    vt1.push_back(2);
    vt2.insert(vt2.begin() + 2, 3); //在某个位置插入value。 注意vt.begin()是在第一个值的前面插入。
    vt2.insert(vt2.end(), 7, 2);   //vt.end()是在最后一个值后面插入7个2.
    vt1.insert(vt1.begin(), vt2.begin(), vt2.end());    //在vt1开头插入vt2。
    
    //获取
    vt2[1];                         //直接索引获取
    vt2.front();                    //第一个元素
    vt2.back();                     //最后一个元素
    vector<int>::iterator it1 = vt1.begin();     //获取迭代器首地址
    vector<int>::iterator it2 = vt1.end();       //获取迭代器最后一个元素后面那个迭代器
    
    vector<int>::reverse_iterator it3 = vt1.rbegin();           //反向迭代器,现在是指向最后一个元素了。具体用法如下。
    for (auto it4 = vt1.rbegin(); it4 != vt1.rend(); it4 ++)    //反向遍历数组
        cout<<*it4<<" ";
    cout<<endl;
    
    //删除
    vt2.pop_back();                             //删除最后一个
    vt2.erase(vt2.begin() + 3);                 //删除这个迭代器所指的元素(后面那个元素)
    vt2.erase(vt2.begin(), vt2.begin() + 2);    //删除这两个迭代器之间的元素。是[)。
    vt1.clear();                                //直接清空
    
    //其他
    vt2.empty();                                        //是否为空
    vt2.size();                                         //数组长度
    *max_element(vt2.begin(), vt2.end(), compare);      //返回最大值。对于自定义类型也还可以使用,最后加一个compare函数。
    *min_element(vt2.begin(), vt2.end(), compare);      //返回最小值。min_element函数返回的是一个迭代器。'*'这个符号取值。
    
    sort(vt2.begin(), vt2.end(), compare);              //实现排序,compare实现自定义排序
    vector<int>::iterator itt = unique(vt2.begin(), vt2.end()); //把排好序的数组中重复的放在后面。返回开始重复的点的迭代器。
    vt2.resize(itt - vt2.begin());                      //截取数组前n个。上面这三个实现:去重
    
    find(vt2.begin(), vt2.end(), 2);                    //查找是否有2。找到了返回迭代器;未找到返回vt2.end()。
    *upper_bound(vt2.begin(), vt2.end(), 2);            //upper_bound返回一个非递减序列[first, last)中的第一个 大于 值val的迭代器。
    *lower_bound(vt2.begin(), vt2.end(), 2);            //lower_bound返回一个非递减序列[first, last)中的第一个 大于等于 值val的迭代器。
    reverse(vt2.begin(), vt2.end());                    //反转数组
    
    bianli(vt2);
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值