c++--vector的函数总结

本文介绍了C++标准库中的vector容器的一些基本操作,包括通过迭代器访问元素,使用reserve设置最小容量,push_back添加元素,resize改变大小,以及insert和erase进行元素插入与删除。同时,提到了at方法的安全访问和front/back获取首尾元素。

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

* begin--指向第一个元素的迭代器

* end--指向最后一个元素的下一个的迭代器

* front--返回第一个元素

* back--返回最后一个元素

* assign--对vector中元素赋值

* at--返回指定位置的元素值

* resize--返回元素数量的大小

* reserve--设置vector最小的元素容量

* clear--清空 * empty--空

* size--大小 * capacity--容量

* insert--插入* erase--删除指定元素

* push_back--尾巴进 * pop_back--尾巴出


capacity():返回重新分配空间前所能容纳的元素最大数量

reserve():如果容量不足,扩大之

void main()
{
    int i;
    vector<int> v;
    v.reserve(10);//最小的容纳
    for (i = 0; i < 20; i++)
        v.push_back(i);//push_back空间不够可以扩容
//    v.resize(5);//改变空间的大小//指定容纳多少个
    cout << v.size() << endl;//size 目前容器中存储的个数
    cout << v.capacity() << endl;//capacity-容量//最大可以容纳数据的个数
}

c.assign(n,elem):复制n个elem,赋值给c

c.assign(beg,end):将区间[beg,end)内的元素赋值给c

void main()
{
    int arr[5] = { 1,2,3,4,5 };
    vector<int>v(arr, arr + 3);v:1,2,3
    vector<int>v1(arr, arr + 5);v1:1,2,3,4,5
    v.assign(5, 3);//重新赋值5个3
    v.assign(v1.begin(), v1.begin()+4);
}

c.at(index):返回索引为index的元素,如果越界,则抛出异常

c[index]:返回索引为index的元素,不检查错误

for (i = 0; i < v1.size(); i++)
    {
        cout << v1[i] << " " << v1.at(i) << endl;
        //at就是[]的意思,就是取i所对应的值;函数做越界报错处理
    }

c.push_back(elem):在尾部添加一个elem

c.append:追加字符

void main()
{
    vector<string>v;//二维数组//保存的一维数据
    vector<vector<string>> vv;//三维数组//保存的二维数据
    int i, j;
    for (i = 0; i < 3; i++)
    {
        v.push_back(" ");//
        v[i].append(5, '*');//追加五个*
    }
    for (i = 0; i < 3; i++)
        cout << v[i] << endl;
    for (i = 0; i < 4; i++)
    {
        vv.push_back(vector<string>());
        for (j = 0; j < 5; j++)
        {
            vv[i].push_back("11111 ");
            cout << vv[i][j] <<"|";
        }
        cout << " "<<endl;
    }
}

运行结果:

c.insert(pos,elem):

在pos位置上插入一个elem,并返回新元素位置

c.insert(pos,n,elem):

在pos位置插入n个elem,无返回值

c.insert(pos,beg,end):

在pos位置插入区间[beg,end]内的所有元素副本,无返回值

c.pop_back():

移除最后一个元素(但不回传)

c.erase(beg,end):

移除[beg,end]区间内的所有元素,返回下一个元素的位置

c.erase(beg,end):

移除[beg,end]区间内的所有元素,返回下一个元素的位置

c.front():

返回第一个元素,不检查第一个元素是否存在

c.back():

返回最后一个元素,不检查最后一个元素是否存在

void main()
{
    int arr[] = { 1,2,3,4,5 };
    vector<int> v(arr,arr+3);
    vector<int>v1;
    v1.push_back(10);
    v1.push_back(20);
    v1.push_back(30);
    //v.clear();
    v.insert(v.begin(), 100);//100 1 2 3 
    v.insert(v.begin()+2, arr,arr+4);//100 1 1 2 3 4 2 3
    v.insert(v.begin(), v1.begin(),v1.end());//10 20 30 100 1 1 2 3 4 2 3
    v.insert(v.end()-1, 3,40);//10 20 30 100 1 1 2 3 4 2 3 40 40 40
    cout << "front :" << v.front() << endl;//front是值
    cout << "back :" << v.back() << endl;//back是值
    v.pop_back();//删掉最后一个//10 20 30 100 1 1 2 3 4 2 3 40 40
    cout << "size :" << v.size() << endl;
    v.erase(v.begin());
    v.erase(v.begin(),v.begin()+3);
}

运行结果

c.resize(num):

将元素数量改为num(如果size变大,多出来的新元素都需以默认构造函数构造)

c.resize(num,elem):

将元素数量改为num(如果size变大,多出来的新元素都是elem的副本)

c.resize(num):

将元素数量改为num(如果size变大,多出来的新元素都需以默认构造函数构造)

c.resize(num,elem):

将元素数量改为num(如果size变大,多出来的新元素都是elem的副本)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值