std::vector与std::list的执行速度比较 (C/C++) (STL)
来源:互联网 发布:富兰克林罗斯福知乎 编辑:程序博客网 时间:2024/05/20 20:18
STL中的container各有专长,最常用的是std::vector,可以完全取代array,第二常用的是std::list。std::vector的优点在于non-sequential access超快,新增数据于数据后端超快,但insert和erase任意资料则相当缓慢;std::list则是insert和erase速度超快,但non-sequential access超慢,此范例以实际时间比较vector和list间的优缺点。
1/*
2(C) OOMusou 2006 http://oomusou.cnblogs.com
3
4Filename : VectorVsList.cpp
5Compiler : Visual C++ 8.0
6Description : Demo the performance difference between std::vector and std::list
7*/
8#include <iostream>
9#include <ctime>
10#include <vector>
11#include <list>
12
13// Add to Vector at end
14void addToVectorAtEnd();
15// Add to List at end
16void addToListAtEnd();
17// Calculate time for adding to end
18void addToEnd();
19
20// Add to Vector anywhere
21void addToVectorAnywhere();
22// Add to List anywhere
23void addToListAnywhere();
24// Calculate time for adding anywhere
25void addAnywhere();
26
27// Remove from Vector anywhere
28void removeFromVectorAnywhere();
29// Remove from List anywhere
30void removeFromListAnywhere();
31// Calculate time for removing anywhere
32void removeAnywhere();
33
34// Non-sequential access to Vector
35void nonSequentialAccessToVector();
36// Non-sequential access to List
37void nonSequentialAccessToList();
38// Caculate time for non-sequential access to
39void nonSequentialAccess();
40
41std::vector<int> vector1;
42std::list<int> list1;
43
44int main() {
45 // Calculate time for adding to end
46 addToEnd();
47
48 // Calculate time for adding anywhere
49 addAnywhere();
50
51 // Calculate time for removing anywhere
52 removeAnywhere();
53
54 // Caculate time for non-sequential access to
55 nonSequentialAccess();
56}
57
58// Add to Vector at end
59void addToVectorAtEnd() {
60 for(int i=0; i != 1000000; ++i) {
61 vector1.push_back(i);
62 }
63}
64
65// Add to List at end
66void addToListAtEnd() {
67 for(int i=0; i != 1000000; ++i) {
68 list1.push_back(i);
69 }
70}
71
72// Calculate time for adding to end
73void addToEnd() {
74 clock_t addToVectorAtEndClock = clock();
75 addToVectorAtEnd();
76 addToVectorAtEndClock = clock() - addToVectorAtEndClock;
77
78 std::cout << "Vector Insertion at the end Process time:" << (double)addToVectorAtEndClock/CLOCKS_PER_SEC << " sec" << std::endl;
79
80 clock_t addToListAtEndClock = clock();
std::vector与std::list的执行速度比较 (C/C++) (STL)
std::vector与std::list的执行速度比较 (C/C++) (STL)
std::vector与std::list的执行速度比较 (C/C++) (STL)
std::vector与std::list的执行速度比较 (C/C++) (STL)
std::vector与std::list的执行速度比较 (C/C++) (STL)
std::vector与std::list的执行速度比较 (C/C++) (STL)
std vector与std list的效率比较
std vector与std list的效率比较
【语言-C++】STL std::list的使用
【c++】std vector的介绍
C++-std::Vector
C/C++字符串处理(4):std::vector与std::StringBuilder
C/C++字符串处理:std::vector与std::StringBuilder
std::vector,std::deque,std::list的区别的使用
std::set, std::list, std::vector在erase的区别
std::vector和std::list访问元素的速度真的很慢吗?
C++/STL std::string 的用法
[C/C++标准库]_[初级]_[std::deque和std::vector比较]
Linux 下获取某虚拟地址对应的页表信息
Linux(Fedora和Ubuntu等)下android真机调试
2010年的最后一周
std::vector与std::list的执行速度比较 (C/C++) (STL)
DVT和ADVT - 为数不多的DICOM测试工具说明AND下载
std::vector与std::list的执行速度比较 (C/C++) (STL)
Dcmtk 在 PACS 开发中的应用
床边数字x线机--概念机
使用网上邻居传文件
正反说QT
Spring 调度任务
使用内存映射比较两个wave文件的异同
xv6内存布局详解
把它发给你最爱的人吧!真的很好啊.
2(C) OOMusou 2006 http://oomusou.cnblogs.com
3
4Filename : VectorVsList.cpp
5Compiler : Visual C++ 8.0
6Description : Demo the performance difference between std::vector and std::list
7*/
8#include <iostream>
9#include <ctime>
10#include <vector>
11#include <list>
12
13// Add to Vector at end
14void addToVectorAtEnd();
15// Add to List at end
16void addToListAtEnd();
17// Calculate time for adding to end
18void addToEnd();
19
20// Add to Vector anywhere
21void addToVectorAnywhere();
22// Add to List anywhere
23void addToListAnywhere();
24// Calculate time for adding anywhere
25void addAnywhere();
26
27// Remove from Vector anywhere
28void removeFromVectorAnywhere();
29// Remove from List anywhere
30void removeFromListAnywhere();
31// Calculate time for removing anywhere
32void removeAnywhere();
33
34// Non-sequential access to Vector
35void nonSequentialAccessToVector();
36// Non-sequential access to List
37void nonSequentialAccessToList();
38// Caculate time for non-sequential access to
39void nonSequentialAccess();
40
41std::vector<int> vector1;
42std::list<int> list1;
43
44int main() {
45 // Calculate time for adding to end
46 addToEnd();
47
48 // Calculate time for adding anywhere
49 addAnywhere();
50
51 // Calculate time for removing anywhere
52 removeAnywhere();
53
54 // Caculate time for non-sequential access to
55 nonSequentialAccess();
56}
57
58// Add to Vector at end
59void addToVectorAtEnd() {
60 for(int i=0; i != 1000000; ++i) {
61 vector1.push_back(i);
62 }
63}
64
65// Add to List at end
66void addToListAtEnd() {
67 for(int i=0; i != 1000000; ++i) {
68 list1.push_back(i);
69 }
70}
71
72// Calculate time for adding to end
73void addToEnd() {
74 clock_t addToVectorAtEndClock = clock();
75 addToVectorAtEnd();
76 addToVectorAtEndClock = clock() - addToVectorAtEndClock;
77
78 std::cout << "Vector Insertion at the end Process time:" << (double)addToVectorAtEndClock/CLOCKS_PER_SEC << " sec" << std::endl;
79
80 clock_t addToListAtEndClock = clock();
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
水龙头有空气怎么办
水龙头总是溅水怎么办
我想干代驾司机怎么办
苏马荡小产权房怎么办?
德国队土豆怎么办
意大利火车误点怎么办
法院胜诉不还钱怎么办
驾校怎么办营业执照
钢轨轨距超限怎么办
卫星轨道相同怎么办
起诉书送达不到怎么办
广州火车晚点怎么办
易邮柜网络异常怎么办
邮政易邮柜没电怎么办
快递太大了怎么办
速递易超期怎么办
e栈闪退怎么办
无人机航时短怎么办
取消收费站员工怎么办
高速上爆胎怎么办
高速公路上爆胎了怎么办
高速公路爆胎怎么办
买不起房了怎么办
2018基金大跌怎么办
演唱会不连坐怎么办
小娃儿发烧怎么办
小娃儿咳嗽怎么办
不好买火车票怎么办
12306不支付怎么办
公司车票报销怎么办
外国人护照过期怎么办
12306客服忙怎么办
买不到火车票怎么办
日本旅游怎么办签证
重庆韩国签证怎么办
k3丢包率高怎么办
邮轮晕船怎么办
设计院画图慢怎么办
手机屏拉不下来怎么办
工程量清单丢失怎么办
ae安装完打不开怎么办