STL: vector容器成员函数resize的作用
来源:互联网 发布:新手怎么样开淘宝店 编辑:程序博客网 时间:2024/06/10 09:01
#include <iostream>#include <vector>#include <time.h>#include <algorithm>#define SIZE 5000000using namespace std;class A{public: int operator()() { return x++; } static int x;};int A::x = 0;int main(){ vector<int> s; clock_t start1 = clock(); //对clock函数不理解的,可以看我之间关于<time.h>头文件的帖子! for (int i = 0; i < SIZE; ++i) { s.push_back(i); } clock_t end1 = clock(); cout << "直接往容器内添加元素所花费的时间:" << end1 - start1 << endl; vector<int> w; w.resize(SIZE); clock_t start2 = clock(); for (int i = 0; i < SIZE; ++i) { s[i] = i; } clock_t end2 = clock(); cout << "先申请了10000个字节的空间后往容器内添加元素所花费的时间:" << end2 - start2 << endl; vector<int> q; q.resize(SIZE); clock_t start3 = clock(); generate(q.begin(), q.end(), A()); clock_t end3 = clock(); cout << "通过使用算法,先申请空间后,再往容器内添加元素所花费的时间:" << end3 - start3 << endl; system("pause"); return 0;}
以下为在vs2013下的运行结果,时间的单位为毫秒.就会发现结果相差甚远,当数据量更多的时候,又会发生什么呢?
原来当容器内的元素超过容器的容量时,容器是如何扩充容量的呢?原来是重新找了一块更大的内存,然后把原容器内的元素进行拷贝到新容器内,然后在释放原容器所释放的空间.所以每当容量需要扩充时,就多进行了一个拷贝的过程.所以在使用容器时,最好事先分配好一部分的元素空间,而不是要多次扩充容量.
阅读全文
0 0
- STL: vector容器成员函数resize的作用
- vector容器成员函数resize与reserve的区别
- vector的成员函数resize分析
- STL中容器的几个容易混淆的成员函数-size, capacity, resize, reserve
- STL中容器的几个容易混淆的成员函数-size, capacity, resize, reserve
- STL中容器的几个容易混淆的成员函数-size, capacity, resize, reserve
- STL vector的成员函数
- STL容器的reserve()函数和resize()函数解析
- C++容器vector的常用成员函数
- vector -- STL中容器的常用函数
- stl::vector reserve和resize的区别
- STL 中vector的reserve()和resize()
- stl vector resize reserve
- STL之vector成员函数
- STL之vector成员函数
- stl 容器 reserve resize
- C++STL中vector容器 assign()函数的用法
- STL remove 和容器的成员函数erase
- mybatis的延迟加载、一级缓存、二级缓存
- C++时间日期的使用
- 【安全牛学习笔记】信息统计
- servlet是单例还是多例?如果是单列怎么保证线程安全?
- 1039. 到底买不买(20)
- STL: vector容器成员函数resize的作用
- Idea配置Github
- DEFINE_PER_CPU(struct runqueue, runqueues)宏
- 第一条博客啊哈哈
- 轻松理解 struct pid
- 关于DPL,CPL与RPL的一个很精妙的解释
- Linux进程:Linux切换机制主流程
- 关于表格的jquery插件
- 《Linux内核情景分析》经典解说--进程