14 STL中容器vector(学自Boolean)
来源:互联网 发布:python项目交易平台 编辑:程序博客网 时间:2024/06/08 14:58
1、概述
vector容器是容器类和算法系统的一部分,支持面向容器的操作,如排序,插入,重新排序,搜索,数据转移等。
2、容器vector的结构
注意点:vector容器是线性结构,容器的大小不是固定的,可向容器的一端扩展数据。
3、测试代码头文件
#include <stdexcept>#include <string>#include <cstdlib> //abort()#include <cstdio> //_snprintf()#include <iostream>#include <ctime>#include <algorithm> //sort()#include <vector>using namespace std;using std::string;namespace hh02{void test_vector(long& value){cout << "test_vector().......... \n";vector<string> c;char buf[10];clock_t timeStart = clock();srand((unsigned)time(NULL));for (long i = 0; i < value; ++i){try{_snprintf(buf, 10, "%d", rand());c.push_back(string(buf));}catch (exception* p){cout << "i = " << i << " " << p->what() << endl;abort();}}cout << "milli-seconds : " << (clock() - timeStart) << endl; //耗时cout << "vector.max_size()= " << c.max_size() << endl;//vector最大容量cout << "vector.size()= " << c.size() << endl; //vecter的大小cout << "vector.front()= " << c.front() << endl; //vector的首值cout << "vector.back()= " << c.back() << endl;//vector的尾值cout << "vector.data()= " << c.data() << endl; //vector的地址cout << "vector.capacity()= " << c.capacity() << endl << endl; //vector的当前容量string target = get_a_target_string();timeStart = clock();auto pItem = ::find(c.begin(), c.end(), target); //全局的循序查找方法,返回iteratecout << "std::find(), milli-seconds : " << (clock() - timeStart) << endl;if (pItem != c.end())cout << "found, " << *pItem << endl << endl;elsecout << "not found! " << endl << endl;timeStart = clock();::sort(c.begin(), c.end()); //全局排序的方法cout << "sort(), milli-seconds : " << (clock() - timeStart) << endl;timeStart = clock();string* pItem1 = (string*)::bsearch(&target, (c.data()), //c提供的查找方法c.size(), sizeof(string), compareStrings);cout << "bsearch(), milli-seconds : " << (clock() - timeStart) << endl;if (pItem1 != NULL)cout << "found, " << *pItem1 << endl << endl;elsecout << "not found! " << endl << endl;}}解析:
a、该代码为头文件中的主要部分,要想顺利运行程序,要添加其余部分函数在13篇中的辅助函数所示;
b、声明了一个vector容器,存放的是string类型数据vector<string> c;
c、使用push_back()方法向容器尾部添加数据;
d、用cout方法打印输出容器的参数,如代码中大小size(),容量capacity(),首值front(),尾值back();
e、先使用全局循序查找方法find()搜索目标值,打印搜索时间;
f、再使用全局的排序方法sort()对vector进行排序,然后使用c的查找方法bsearch()进行查找;
4、主程序及输出
#include "vector.h" //辅助函数int _tmain(int argc, _TCHAR* argv[]){long value = 250000L;hh02::test_vector(value);return 0;}/*输出:test_vector()..........milli-seconds : 2483vector.max_size()= 153391689vector.size()= 250000vector.front()= 22680vector.back()= 10119vector.data()= 03981040vector.capacity()= 311073target (0~32767): 1200std::find(), milli-seconds : 14found, 1200sort(), milli-seconds : 10284bsearch(), milli-seconds : 0found, 1200*/解析:
a、传入250000数值,vector的大小为250000;
b、从输出结果看,vector的capacity()值大于size()值,是因为当往容器vevtor中增加数值时,是先双倍的增加空间;
c、使用全局sort()的时间非常慢,但是sort()后的查找时间非常快,接近0;
阅读全文
0 0
- 14 STL中容器vector(学自Boolean)
- 13 STL中数组容器array(学自Boolean)
- 20 容器vector的深度探索(学自Boolean)
- 15 STL中容器双向链表list和单向链表forward_list(学自Boolean)
- 16 STL集合和映射容器set/multiset_map/multimap(学自Boolean)
- 12 C++标准库中STL体系结构简介(学自Boolean)
- 学STL谈Vector容器(一)
- 介绍STL中vector容器
- 18 容器之list探索(学自Boolean)
- 21 容器deque&queue&stack深度探索(学自Boolean)
- C++STL中vector容器的用法
- STL中序列式容器之一vector
- vector -- STL中容器的常用函数
- STL中序列容器之Vector
- C++STL中vector容器的用法
- C++STL中vector容器的用法
- C++STL中vector容器的用法
- C++STL中vector容器的用法
- Hadoop基本知识点之HDFS
- CCF考试-折点计数(201604-1)
- 一个让我心态爆炸的bug
- js中进行金额计算
- 基于对象的数据筛选与排序(一)
- 14 STL中容器vector(学自Boolean)
- MySql数据引擎-MyISAM与InnoDB区别
- JavaSE基础Map集合
- c++中二维数组与二维向量的长度
- 读书笔记《C++ Primer》第五版——第九章 顺序容器
- 关于开关灯的问题
- matlab画图函数汇总(三)
- js_expresion&operator
- DOS 命令大全