STL 学习之vector测试

vector 是向量数组,一端开口的数组,其内存结构图如下所示

可见其在尾部插入数据速度很快,而在其他地方插入数据将会很慢
void testVector()
{
    char buf[10] = { 0 };
    vector<string> test_vec;
    clock_t timeStart = clock();
    for(long i = 0; i < RAN_MAX;i++)
    {
        try{
            snprintf(buf,10,"%d",rand());
            test_vec.push_back(string(buf));
        }
        catch(exception& p)
        {
            cout<<"i = " << i << p.what()<< endl;
            abort();
        }
 
    }
    cout << "milli-seconds : " << (clock() - timeStart)<<endl;
    cout << "vector.size() = " << test_vec.size() <<endl;
    cout << "vector.front()  = " << test_vec.front() << endl;
    cout << "vector.back() = " <<test_vec.back() <<endl;
    cout << "vector.data() = " <<test_vec.data() << endl;
    cout << "vector.capactity() = "<< test_vec.capacity() << endl;
 
 
    int insertTimeBegein = clock();
    test_vec.insert(test_vec.begin(),100,"test");
    cout << "insert time = " << (clock() - insertTimeBegein)<< endl;
    cout << "insert string = " << test_vec.at(0);
 
 
}
 
int main()
{
    testVector();
    return 0;
}

输出结果如下

milli-seconds : 3522       //循环遍历1000000次消耗时间
vector.size() = 1000000 //当前vector数据大小
vector.front()  = 41    //第一个元素值
vector.back() = 12679 //最后一个元素值
vector.data() = 0x4b5f020 //vector首地址
vector.capactity() = 1048576 //当前vector的容量
insert time = 18   //在第一个元素插入数值耗时
insert string = test

由于vector的增长方式是2倍增长,所以vector.capactity()有的时候会比vector.size() 大很多,而在头部插入数据后由于所有数据都要往后移,并且调用string的析构与构造函数,所以耗时比较长

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值