《深入实践C++模板编程》之六——标准库中的容器

void main()
{
int array[] = { , , , , };
std::vector<int> v; v.reserve();
v.assign(array, array + ); typedef std::vector<int>::iterator iterator;
iterator p = v.begin();
iterator q = v.end() - ; v.erase(p + , p + ); v.insert(v.end(), array, array + ); getchar();
}
std::stack<int, std::vector<int>> vector_stack; //用vector实现stack
std::stack<int> deque_stack; //用deque实现stack
std::queue<char, std::list<char>> queue; //用list实现queue
std::queue<char> deque_queue; //用deque实现queue
#include <iostream>
#include <queue>
#include <vector> struct my_pair
{
int first;
int second;
}; struct comp_my_pair//这是一个函数对象
{
bool operator()(my_pair const &left,
my_pair const &right)
{
return left.first == right.first ?
left.second > right.second :
left.first > right.first;
}
}; void main()
{
my_pair array[] = {{, }, {, }, {, }, {, }, {, }};
using std::priority_queue;
using std::vector; priority_queue<my_pair, vector<my_pair>, comp_my_pair> pq(array, array + );
while(!pq.empty())
{
std::cout << pq.top().first << ", " << pq.top().second << std::endl;
pq.pop();
} return;
}
typedef std::set<int> int_set;
typedef void func_type(int*, int*); float measure(func_type func, int *start, int *end)
{
//int start_clock = clock();
func(start, end);
//int end_clock = clock();
return ;
//return float(end_clock - start_clock) / CLOCKS_PER_SEC;
} void test_plain_insert(int *start, int *end)
{
int_set s;
s.insert(start, end);
for(int_set::iterator it = s.begin(); it != s.end(); it++)
{
printf("%d ", *it);
}
printf("\n");
} void test_smart_insert(int *start, int *end)
{
int_set s;
int_set::iterator prev = s.begin();
for(; start != end; ++start)
{
prev = s.insert(prev, *start);
for(int_set::iterator it = s.begin(); it != s.end(); it++)
{
printf("prev:%d ;", *prev);
printf("%d ", *it);
}
printf("\n"); } printf("\n");
} void main()
{ const int num = ;
const int half = num / ; int array1[num];
int array2[num];
for(int i = ; i < num; ++i)
{
array1[i] = i;
array2[i] = (i & ) ? (i - num) : (num - i);
} measure(test_plain_insert, array2, array2 + num -);
measure(test_smart_insert, array2, array2 + num -);
//measure(test_plain_insert, array1, array1 + num -1);
//measure(test_smart_insert, array1, array1 + num -1);
return;
}
《深入实践C++模板编程》之六——标准库中的容器的更多相关文章
- STL标准库中的容器
容器:顾名思义,我的理解就是把同一种数据类型括起来,作为一捆.如vector<int> ,vector就是个容器,里面全是一个个的int型数据. 容器包括三大块: 顺序型容器: (1)ve ...
- STL笔记(6)标准库:标准库中的排序算法
STL笔记(6)标准库:标准库中的排序算法 标准库:标准库中的排序算法The Standard Librarian: Sorting in the Standard Library Matthew A ...
- 用CAS操作实现Go标准库中的Once
Go标准库中提供了Sync.Once来实现"只执行一次"的功能.学习了一下源代码,里面用的是经典的双重检查的模式: // Once is an object that will p ...
- 彻底弄清c标准库中string.h里的常用函数用法
在我们平常写的c/c++程序,一些算法题中,我们常常会用到c标准库中string.h文件中的函数,这些函数主要用于处理内存,字符串相关操作,是很有用的工具函数.而且有些时候,在笔试或面试中也会出现让你 ...
- 通过atomic_flag简单自旋锁实现简单说明标准库中锁使用的memory_order
在使用标准库中的加锁机制时,例如我们使用std::mutex,写了如下的代码(下面的代码使用condition_variable可能更合适) std::mutex g_mtx; int g_resNu ...
- Python 标准库中的装饰器
题目描述 1.简单举例 Python 标准库中的装饰器 2.说说你用过的 Python 标准库中的装饰器 1. 首先,我们比较熟悉,也是比较常用的 Python 标准库提供的装饰器有:property ...
- (转)python标准库中socket模块详解
python标准库中socket模块详解 socket模块简介 原文:http://www.lybbn.cn/data/datas.php?yw=71 网络上的两个程序通过一个双向的通信连接实现数据的 ...
- c/c++标准库中的文件操作总结
1 stdio.h是c标准库中的标准输入输出库 2 在c++中调用的方法 直接调用即可,但是最好在函数名前面加上::,以示区分类的内部函数和c标准库函数. 3 c标准输入输出库的使用 3.1 核心结构 ...
- C标准库中atoi的一种可能的实现
为避免与标准库中的atoi产生歧义, 我将自己编写的函数命名为strToInt, 以下是示例代码 #include <stdio.h> int strToInt(const char *s ...
随机推荐
- 解决虚拟机上的tomcat无法被主机访问的问题
在wmware中安装linux后安装好数据库,JDK及tomcat后启动服务,虚拟机中可以访问,但是主机却无法访问,但是同时主机和虚拟机之间可以ping的通. 网上查阅资料后 第一种解决方法是 ...
- vue 动态渲染数据很慢或不渲染
vue 动态渲染数据很慢或不渲染 原因是因为vue检测速度很慢,因为多层循环了,在VUE 2.x的时候还能渲染出来,1.x的时候压根渲染不出来.解决方式:在动态改变数据的方法,第一行加上 this.$ ...
- 信息学竞赛一本通提高版AC题解—例题1.1活动安排
书中代码有误.书中为sort(a+1,a+n+1,Cmp). // // Created by yuxi on 19-1-13. // /* * * <信息学竞赛一本通-提高版>全部AC解 ...
- 抓包工具Fiddler使用
1.参考博客 https://blog.csdn.net/ychgyyn/article/details/82154433 https://www.cnblogs.com/miantest/p/728 ...
- 解决Ubuntu MySQL服务无法远程登录
一.10061错误 Ubuntu安装MySQL . sudo apt-get install mysql-server . apt-get isntall mysql-client . sudo ap ...
- SSM+form表单文件上传
这里介绍SSM如何配置上传文件 配置springmvc.xml: <!--配置上传下载--> <bean id="multipartResolver" class ...
- mongodb操作二
{ "_id" : ObjectId("5d4d74e1685764420c4f9337"), "createTime" : ISODate ...
- MATLAB学习(六)绘图图形功能
>> x=0:.1:2*pi;plot(x,sin(x),x,cos(x)) >> plot(x,sin(x),'p ...
- golang实现生产者消费者模型
生产者消费者模型分析 操作系统中的经典模型,由若干个消费者和生产者,消费者消耗系统资源,生产者创造系统资源,资源的数量要保持在一个合理范围(小于数量上限,大约0).而消费者和生产者是通过并发或并行方式 ...
- launchImage设置后在启动时无法显示
有人问我他的APP设置了启动页,然后居然不显示.....我觉得应该不可能啊,然后我自己再次实现了一下设置启动页,这个问题好像以前从来没有注意过,也没有很深刻的掌握APP启动页的设置和注意事项,今天遇到 ...