cpp vector resize和重新生成新的vector耗时比较

本文探讨了在C++中,当需要扩大vector容量并填充默认值时,使用`resize()`与直接创建新vector的时间效率差异。通过编写代码进行性能测试,结果显示`resize()`操作的速度显著快于多次创建新vector。
摘要由CSDN通过智能技术生成

1.问题背景

在工作过程中遇到一个需要使用vector.resize(size),之后将vector中的数据统一重置为0的场景,然后想了一下,如果从一个比较小的内存区域resize到一个比较大的内存区域,就需要重新开一块内存空间,并且将原来空间的数据复制一遍,个人怀疑会不会直接用vector的构造函数来重新生成一块空间会比较好,上网搜了一下,都是讨论resize和reserve的,可能是这个问题太简单了,所以没人发到网上,所以我自己写了几行代码验证了一下。

2.代码验证

#include <iostream>
#include<memory>
#include <typeinfo>
#include<string>
#include <ctime>
#include <vector>
#include <cmath>
#include <cstdlib>
#include "base.h"

void printFunctionTime(void(*f)(const std::vector<int>&),const std::vector<int>& sizes)
{
    printf("the before time %d\n",time(nullptr));
    f(sizes);
    printf("the after time %d\n",time(nullptr));
}

void testResize(const std::vector<int>& sizes)
{
    std::vector<char> vec(1);
    for(auto i:sizes)
    {
        vec.resize(i);
    }
}

void testReG
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值