容器操作resize()的误用

本文详细介绍了C++标准库中容器的resize()方法的使用方法及其注意事项。resize()用于调整容器大小,若容器需要扩容,可指定默认填充值;若缩减容器,多余元素将被删除。文章通过一个具体的vector容器实例演示了resize()的使用过程。

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

    resize(n)一般是用来改变容器的大小,使其包含n个元素。如果n小于当前容器的个数,容器只保留n个元素,并删除多余的元素。如果n大于当前容器个数,则在容器末尾插入一定的元素直至扩展到n个。如果val被指定,新增加的元素被初始化为val的副本。如果n大于当前容器的个数,所需要的存储空间会自动进行分配。

// resizing vector
#include <iostream>
#include <vector>

int main ()
{
    std::vector<int> myVector;

    // push 10 element
    for (int i = 1; i <= 10; ++i) 
    {
        myVector.push_back(i);
    }

    myVector.resize(5);
    myVector.resize(8, 100);
    myVector.resize(12);

    std::cout << "myVector value:";
    for (size_t i = 0; i < myVector.size(); ++i)
    {
        std::cout << " " << myVector[i]; 
    }
    
    return 0;
}

Output:

myVector value: 1 2 3 4 5 100 100 100 0 0 0 0

    resize容易被误用来限定容器的大小,比如想限定容器的个数为n,就有可能会使用myVector.resize(n)。并且当容器的大小为n时,用push_back()压入一个元素后,以为元素会被压入第一个,而实际上是被压入到了第n+1个,如果push_back()n个元素,这时容器的大小已经变成了2n个,多出一倍的存储空间。因此如果想限定容器的大小,需要自己增加额外的代码进行判断,可以通过size()获取容器大小后进行处理,resize()只能用来调整容器大小为n个。使用resize()后,如果想把元素压入自己想要的位置,可以通过访问下标或者遍历容器来进行操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值