vector 测试
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
(转载请注明出处,使用许可:署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议 。)
vector 测试的更多相关文章
- 02--STL序列容器(Vector)
一:vector容器简介 图片和顺序栈相似,但是vector数组是动态数组,支持随机存取--->但是在尾部添加或者溢出元素非常快速,中间插入删除费时 vector是将元素置于一个动态数组中加以管 ...
- C++ Vector实践
实践如下: #include <iostream> #include <vector> #include <typeinfo> using namespace st ...
- auto_ptr为什么不能做为vector的元素
昨天看effectve c++的时候,发现了auto_ptr这个东西.由于我待过的公司都是用的老版c++,代码里智能指针什么的完全没有出现过,都是直接操作的原始指针.虽说我很少出错,但是总归还是不太安 ...
- 侯捷STL课程及源码剖析学习1
1.C++标准库和STL C++标准库以header files形式呈现: C++标准库的header files不带后缀名(.h),例如#include <vector> 新式C hea ...
- word2vec训练中文模型
-- 这篇文章是一个学习.分析的博客 --- 1.准备数据与预处理 首先需要一份比较大的中文语料数据,可以考虑中文的维基百科(也可以试试搜狗的新闻语料库).中文维基百科的打包文件地址为 https: ...
- jvm高级特性(6)(线程的种类,调度,状态,安全程度,实现安全的方法,同步种类,锁优化,锁种类)
JVM高级特性与实践(十三):线程实现 与 Java线程调度 JVM高级特性与实践(十四):线程安全 与 锁优化 一. 线程的实现 线程其实是比进程更轻量级的调度执行单位. 线程的引入,可以把一个检查 ...
- Java中List效率的比较
Java Collections Framework(JCF) 是Java SE中一个基本的类集,几乎所有的项目都会用到,其中的List 则是JCF中最最常用的一个接口.围绕List 接口,有很多实现 ...
- 如何在List集合中去重
众所周知List集合中的元素是有序的,但是List中的元素同样是可以重复的,那么我们应该怎么在List集合中去重呢? 方法一: 对于方法一而言,这也许是一个小窍门.利用的是Set集合中不允许出现重复的 ...
- Vector使用测试
1.测试vector是否自动释放分配的空间 vector有大致两类申请空间的方式,一是vector(n,T()),一是vector(p,p+n)(p是自己申请的空间的指针). 其中第一种估计肯定会释放 ...
随机推荐
- C++ STL之LIST详解A
List 容器 list是C++标准模版库(STL,Standard Template Library)中的部分内容.实际上,list容器就是一个双向链表,可以高效地进行插入删除元素. 使用list容 ...
- Netflix的zuul使用
1.zuul出现的原因 2.zuul的介绍 3.zuul如何使用 4.zuul的一些注意事项
- Lowest Common Ancestor in a Binary Tree
二叉树最低公共祖先节点 acmblog If one key is present and other is absent, then it returns the present key as LC ...
- HDU 6006 状压dp
Engineer Assignment Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- Qt ------ 截图、获取鼠标指定的RGB值
获取RGB值思路:截图,获取图片的(0,0)的RGB值 int x = QCursor::pos().x(); int y = QCursor::pos().y(); // QPixmap pixma ...
- Ansible11:变量详解
目录 简单说明 一.在Inventory中定义变量 二.在Playbook中定义变量 1.通过vars关键字定义 2.通过vars_files关键字引入变量文件 3.通过vars_prompt来实现人 ...
- mac python2.7.10 升级到 3.6
第一步: 下载当前最新版本 Python3.6,下载地址:https://www.python.org/downloads/ 第二步: 安装下载好的包,安装完成后的目录如下: /Library/Fra ...
- python net-snmp使用
安装 官网:http://www.net-snmp.org/download.html 环境:CentOS 6.6 + python 2.7.10 1.下载安装包 net-snmp-5.6.2.1.t ...
- MVVM模式原则
1.MVVM简介 这个模式的核心是ViewModel,它是一种特殊的model类型,用于表示程序的UI状态.它包含描述每个UI控件的状态的属性.例如,文本输入域的当前文本,或者一个特定按钮是否可用.它 ...
- Java并发编程原理与实战九:synchronized的原理与使用
一.理论层面 内置锁与互斥锁 修饰普通方法.修饰静态方法.修饰代码块 package com.roocon.thread.t3; public class Sequence { private sta ...