huyutian
他强由他强,清风拂山岗;他横由他横,明月照大江。他自狠来他自恶,我自一口真气足
C++博客
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
20 随笔 :: 47 文章 :: 22 评论 :: 0 Trackbacks
<
2011年7月
>
日
一
二
三
四
五
六
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(15)
给我留言
查看公开留言
查看私人留言
随笔档案
2015年12月 (1)
2015年3月 (3)
2015年2月 (1)
2014年12月 (1)
2014年2月 (1)
2013年10月 (1)
2012年10月 (1)
2012年4月 (1)
2011年7月 (2)
2011年6月 (2)
2010年11月 (1)
2010年8月 (1)
2010年7月 (3)
2010年2月 (1)
文章分类
编程技巧(24)
(rss)
汇编逆向(3)
(rss)
金融股票(2)
(rss)
嵌入系统(10)
(rss)
网络编程(8)
(rss)
系统其他(4)
(rss)
文章档案
2016年4月 (1)
2016年2月 (1)
2016年1月 (1)
2015年11月 (1)
2015年8月 (1)
2015年6月 (1)
2015年4月 (1)
2015年3月 (1)
2015年2月 (1)
2014年10月 (1)
2014年7月 (1)
2014年2月 (7)
2013年9月 (1)
2013年4月 (1)
2012年11月 (2)
2012年10月 (1)
2012年8月 (3)
2012年1月 (1)
2011年9月 (1)
2011年8月 (2)
2011年6月 (1)
2011年4月 (1)
2010年9月 (1)
2010年8月 (3)
2010年2月 (6)
2010年1月 (2)
2009年11月 (3)
相册
EC2108
搜索
最新评论
1. re: Windows系统三种定时器的分析
评论内容较长,点击标题查看
--Apophis
2. re: Windows系统三种定时器的分析
不是三种,还有另两种高精度定时器,其中一种是 timerSetEvent,不过一个进程中它只支持创建16个,还有一个是 mci 的定时器
--Apophis
3. re: 编译Zlib 1.2.5遇到的问题
在lgnore libraries输入MSVCRT(这个默认库和zlib库会有冲突)
--Nightingale
4. re: 注意TA-LIB与国内股票软件的技术指标计算方式的区别[未登录]
评论内容较长,点击标题查看
--李浩
5. re: 华为EC2108机顶盒刷安卓系统
@哎吆喝吆喝
你的杜邦线没有接好
--etg00556
阅读排行榜
1. 解决visual studio 2010下warning LNK4099: PDB 'vc100.pdb' was not found问题(21953)
2. pandas使用HDF5格式存储需要注意的问题(11862)
3. 注意TA-LIB与国内股票软件的技术指标计算方式的区别(8718)
4. 编译Zlib 1.2.5遇到的问题(6637)
5. 推荐一款轻巧好用的编辑软件MadEdit(6131)
评论排行榜
1. 编译Zlib 1.2.5遇到的问题(4)
2. 解决visual studio 2010下warning LNK4099: PDB 'vc100.pdb' was not found问题(2)
3. 注意TA-LIB与国内股票软件的技术指标计算方式的区别(1)
4. vc不同版本项目转换工具(1)
5. 学习关于STL标准容器(0)
转贴:STL之Deque使用小结
/**/
/*
deque: 是一个double-ended queue,
1)支持随即存取,也就是[]操作符,
2)支持两端操作,push(pop)-back(front),在两端操作上与list效率差不多
因此在实际使用时,如何选择这三个容器中哪一个,应根据你的需要而定,一般应遵循下面的原则:
1、如果你需要高效的随即存取,而不在乎插入和删除的效率,使用vector
2、如果你需要大量的插入和删除,而不关心随即存取,则应使用list
3、如果你需要随即存取,而且关心两端数据的插入和删除,则应使用deque。
*/
#include
<
iostream
>
#include
<
deque
>
using
namespace
std;
void
printDeque(deque
<
int
>
d)
{
//
使用下标
//
for (unsigned int i = 0; i < d.size(); i++)
//
{
//
cout<<"d["<<i<<"] = "<<d[i]<<", ";
//
}
//
使用迭代器
//
deque<int>::iterator iter = d.begin();
//
for (;iter != d.end(); iter ++)
//
{
//
cout<<"d["<<iter-d.begin()<<"] = "<<(*iter)<<", ";
//
}
//
使用迭代器指针
deque
<
int
>
::iterator
*
pIter
=
new
deque
<
int
>
::iterator;
if
( NULL
==
pIter )
{
return
;
}
for
(
*
pIter
=
d.begin();
*
pIter
!=
d.end(); (
*
pIter)
++
)
{
cout
<<
"
d[
"
<<*
pIter
-
d.begin()
<<
"
]=
"
<<**
pIter
<<
"
,
"
;
}
if
(NULL
!=
pIter)
{
delete pIter;
pIter
=
NULL;
}
cout
<<
endl;
}
void
main()
{
//
创建deque
deque
<
int
>
d1;
//
创建一个没有任何元素的deque对象
deque
<
int
>
d2(
10
);
//
创建一个具有10个元素的deque对象,每个元素值为默认
deque
<
double
>
d3(
10
,
5.5
);
//
伊妹一个具有10个元素的deque对象,每个元素的初始值为5.5
deque
<
double
>
d4(d3);
//
通过拷贝一个deque对象的元素值, 创建一个新的deque对象
int
iArray[]
=
{
11
,
13
,
19
,
23
,
27
}
;
deque
<
int
>
d5(iArray, iArray
+
5
);
//
将迭代器区间[first, last)所指的元素拷贝到一个新创建的deque对象中
//
初始化赋值:同vector一样,使用尾部插入函数push_back()
for
(
int
i
=
1
; i
<
6
; i
++
)
d1.push_back(i
*
10
);
//
遍历元素: 1-下标方式 2-迭代器方式 反向遍历(略)
cout
<<
"
printDeque(d1) :
"
<<
endl;
printDeque(d1);
//
元素插入:尾部插入用push_back(),头部插入用push_front(),其它位置插入用insert(&pos, elem)
cout
<<
"
d1.push_front(100):
"
<<
endl;
d1.push_front(
100
);
printDeque(d1);
cout
<<
"
d1.insert(d1.begin()+3, 200):
"
<<
endl;
//
支持随机存取(即[]操作符),所以begin()可以+3
d1.insert(d1.begin()
+
2
,
200
);
printDeque(d1);
//
元素删除 尾部删除用pop_back();头部删除用pop_front();
//
任意迭代位置或迭代区间上的元素删除用erase(&pos)/erase(&first, &last);删除所有元素用clear();
cout
<<
"
d1.pop_front():
"
<<
endl;
d1.pop_front();
printDeque(d1);
cout
<<
"
d1.erase(d1.begin()+1):
"
<<
endl;
d1.erase(d1.begin()
+
1
);
//
删除第2个元素d1[1]
printDeque(d1);
cout
<<
"
d1.erase(d1.begin(), d1.begin() + 2) =
"
<<
endl;
d1.erase(d1.begin(), d1.begin()
+
2
);
printDeque(d1);
cout
<<
"
d1.clear() :
"
<<
endl;
d1.clear();
printDeque(d1);
//
其它常用
cout
<<
"
其它常用用法:
"
<<
endl;
int
flag
=
0
;
while
(flag
<
2
)
{
if
(
0
==
flag )
{
for
(
int
i
=
1
; i
<
6
; i
++
)
//
恢复
d1.push_back(i
*
10
);
}
else
{
d1.clear();
cout
<<
"
after d1.clear() , d1.front(), d1.back() is abnormal! other info.:
"
<<
endl;
}
cout
<<
"
d1.empty() =
"
<<
d1.empty()
<<
endl;
cout
<<
"
d1.size() =
"
<<
d1.size()
<<
endl;
cout
<<
"
d1.max_size() =
"
<<
hex
<<
d1.max_size()
<<
endl;
if
(
!
d1.empty())
{
cout
<<
"
d1.front() =
"
<<
d1.front()
<<
endl;
cout
<<
"
d1.back() =
"
<<
d1.back()
<<
endl;
}
flag
++
;
}
//
交换
cout
<<
"
d1.swap(d5)=
"
<<
endl;
d1.swap(d5);
cout
<<
"
d1 =
"
;
printDeque(d1);
cout
<<
"
d5 =
"
;
printDeque(d5);
//
printDeque(d)
}
posted on 2010-02-07 23:58
胡雨田
阅读(1805)
评论(0)
编辑
收藏
引用
所属分类:
编程技巧
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
关于pandas的DataFrame的一个性能问题
关于python字典key值查找效率的测试
从dll文件自动生成lib文件
python自学笔记(六)
python自学笔记(五)
python技巧摘录(一)
python自学笔记(四)
python自学笔记(三)
python自学笔记(二)
python自学笔记(一)
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © 胡雨田