STL中的vector与list插入数据速度比较

来源:互联网 发布:Ubuntu 安装 login 编辑:程序博客网 时间:2024/06/05 05:01

对于忘list中插入数据,很好理解,分配一个新的结点空间,添加到链表尾部即可;对于往vectorz中添加数据,需要判断当前控件是否够用,不够用的话需要再次分配稍大的一些空间,然后把已有的元素拷贝到新的空间区域,然后释放已有的空间。也许有人觉得这个拷贝操作很费时,觉得没有list添加的速度快,然而,事实并不是这样…..

#include <iostream>#include <time.h> #include <list>#include <vector> using namespace std; const long num = 1000 * 1000 * 100; //添加数据个数//void test_vector_list(long n){    vector<int> num1;    list<int> num2;    clock_t num1_start = clock();    for(int i=0;i<n;i++){        num1.push_back(i);    }    clock_t num1_end = clock();    cout<<"Running time vector:"<<static_cast<double>(num1_end - num1_start)/CLOCKS_PER_SEC * 1000 <<"ms"<<endl;    clock_t num2_start = clock();    for(int i=0;i<n;i++){        num2.push_back(i);    }    clock_t num2_end = clock();    cout<<"Running time list:"<<static_cast<double>(num2_end - num2_start)/CLOCKS_PER_SEC * 1000 <<"ms"<<endl;} int main(int argc, char** argv) {    test_vector_list(num);    return 0;}

这里写图片描述

0 0