vector 测试

*/-->

div.org-src-container {
font-size: 85%;
font-family: monospace;
}
pre.src {
background-color:#2e3436;
color:#fefffe;
}

p {font-size: 15px}
li {font-size: 15px}

写个简单的东西来测试一下数据很多时候几种创建 vector 的方法,结果有点意思:

#include <iostream>
#include <sys/time.h>
#include <vector>
using namespace std;
typedef unsigned int uint32; struct Obj
{
Obj(int a1, int b1, int c1) : a(a1), b(b1), c(c1) {}
Obj(){};
int a;
int b;
int c;
}; static inline uint32 get_timems()
{
struct timeval tv;
return gettimeofday(&tv, NULL) == 0 ? \
(tv.tv_sec * 1000 + tv.tv_usec / 1000):0;
} #define N 10000000
#define LOG(X) printf(X ", costs: %u msecs\n", get_timems() - ts);
#define ITS() ts=get_timems() int main(int argc, char *argv[])
{
uint32 ts = get_timems();
vector<Obj> v;
for (int i = 0; i < N; ++i)
{
v.push_back(Obj(i, i-1, i-2));
} LOG("Create and push_back"); ITS();
vector<Obj> v4;
vector<Obj>::const_iterator iter = v.begin();
vector<Obj>::const_iterator end = v.end();
for (; iter != end; ++iter)
{
Obj o(iter->a, iter->b * 2, iter->c * 3);
v4.push_back(o);
}
LOG("Create and modify and push_back"); ITS();
vector<Obj> v5;
v5.resize(N);
for (int i = 0; i < N; ++i)
{
v5[i].a = v[i].a;
v5[i].b = v[i].b*2;
v5[i].c = v[i].c*3;
}
LOG("Resize and modify"); ITS();
vector<Obj> v6;
v5.reserve(N);
for (int i = 0; i < N; ++i)
{
v6.push_back(Obj (iter->a, iter->b * 2, iter->c * 3));
}
LOG("Reserver and push_back"); return 0;
}

输出如下:

Welcome to the Emacs shell

~/tmp $ ~/tmp $ ./test
Create and push_back, costs: 1057 msecs
Create and modify and push_back, costs: 1244 msecs
Resize and modify, costs: 447 msecs
Reserver and push_back, costs: 1181 msecs

vector 测试的更多相关文章

  1. 02--STL序列容器(Vector)

    一:vector容器简介 图片和顺序栈相似,但是vector数组是动态数组,支持随机存取--->但是在尾部添加或者溢出元素非常快速,中间插入删除费时 vector是将元素置于一个动态数组中加以管 ...

  2. C++ Vector实践

    实践如下: #include <iostream> #include <vector> #include <typeinfo> using namespace st ...

  3. auto_ptr为什么不能做为vector的元素

    昨天看effectve c++的时候,发现了auto_ptr这个东西.由于我待过的公司都是用的老版c++,代码里智能指针什么的完全没有出现过,都是直接操作的原始指针.虽说我很少出错,但是总归还是不太安 ...

  4. 侯捷STL课程及源码剖析学习1

    1.C++标准库和STL C++标准库以header files形式呈现: C++标准库的header files不带后缀名(.h),例如#include <vector> 新式C hea ...

  5. word2vec训练中文模型

    --  这篇文章是一个学习.分析的博客 --- 1.准备数据与预处理 首先需要一份比较大的中文语料数据,可以考虑中文的维基百科(也可以试试搜狗的新闻语料库).中文维基百科的打包文件地址为 https: ...

  6. jvm高级特性(6)(线程的种类,调度,状态,安全程度,实现安全的方法,同步种类,锁优化,锁种类)

    JVM高级特性与实践(十三):线程实现 与 Java线程调度 JVM高级特性与实践(十四):线程安全 与 锁优化 一. 线程的实现 线程其实是比进程更轻量级的调度执行单位. 线程的引入,可以把一个检查 ...

  7. Java中List效率的比较

    Java Collections Framework(JCF) 是Java SE中一个基本的类集,几乎所有的项目都会用到,其中的List 则是JCF中最最常用的一个接口.围绕List 接口,有很多实现 ...

  8. 如何在List集合中去重

    众所周知List集合中的元素是有序的,但是List中的元素同样是可以重复的,那么我们应该怎么在List集合中去重呢? 方法一: 对于方法一而言,这也许是一个小窍门.利用的是Set集合中不允许出现重复的 ...

  9. Vector使用测试

    1.测试vector是否自动释放分配的空间 vector有大致两类申请空间的方式,一是vector(n,T()),一是vector(p,p+n)(p是自己申请的空间的指针). 其中第一种估计肯定会释放 ...

随机推荐

  1. java程序文件读取与保存实例代码

    class RadioHere extends JFrame implements ActionListener { private JTextArea ta=new JTextArea(10,20) ...

  2. node中异步IO的理解

    解释性语言和编译型语言的区别: 计算器不能直接的理解高级语言,只能理解机器语言,所以必须把高级语言翻译为机器语言,翻译的方式有两种,一个是编译,一个是解释. 解释性语言的程序不需要编译,它是在运行程序 ...

  3. Linux下U盘、SD卡挂载与卸载

    1.手动挂载/卸载U盘.SD卡 对于ARM Linux来说,第一次使用U盘或SD时,U盘这个文件目录是不能直接进入的,我们需要对其进行挂载,然后再接下来的使用中就可以直接进行使用了.通过再网上查资料, ...

  4. MySQL数据库应用 从入门到精通 学习笔记

    以下内容是学习<MySQL数据库应用 从入门到精通>过程中总结的一些内容提要,供以后自己复现使用. 一:数据库查看所有数据库: SHOW DATABASES创建数据库: CREATE DA ...

  5. 2017 国庆湖南 Day1

    卡特兰数 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ] ...

  6. 搭建SVN+APACHE环境

    项目需求 根据开发需求,建立svn环境,同时建立source.bd分支,source分支所有人都能访问,bd分支管理员kazihuo可访问.同时,在此基础上构建apache,以便于相关人员能通过浏览器 ...

  7. [NOIP提高&洛谷P1024]一元三次方程求解 题解(二分答案)

    [NOIP提高&洛谷P1024]一元三次方程求解 Description 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d 均为实数),并约 ...

  8. Oracle分析函数Over()

    一.Over()分析函数 说明:聚合函数(如sum().max()等)可以计算基于组的某种聚合值,但是聚合函数对于某个组只能返回一行记录.若想对于某组返回多行记录,则需要使用分析函数. 1.rank( ...

  9. Python练习-猜年龄的LowB游戏

    Alex大神今天让我做一个猜年龄的游戏: 第一个游戏是你只能猜三次:真的很LowB啊~ # 编辑者:闫龙 #猜年龄游戏,3次后程序自动退出! ages = 29; #for循环3次 for i in ...

  10. [Openwrt 扩展下篇] Openwrt搭建私有云Owncloud 9

    网上很多资料讲用Linux打造owncloud构建私有云 ,花了些时间研究了下,我将之前的需求打造成了Openwrt下的Owncloud 9.其实网上还有Seafile.大家对比来看下知乎的评论,其实 ...