web前端
数据库
编程语言
搜索技术
关于本站
登录
登 录
下次自动登录
学步园
返回顶部
查看留言
转到底部
现在的位置:
首页
> 综合 > 正文
RSS
C++ 学习练手 – 数组型队列的模板实现
2018年04月06日
⁄ 综合
⁄ 共 2093字 ⁄ 字号
小
中
大
⁄
评论关闭
#ifndef __QUEUEPRACTICE_H__
#define
__QUEUEPRACTICE_H__ 1
namespace
FengChen
...
{
template
<
class
Type
>
class
Queue;
template
<
class
T
>
std::ostream
&
operator
<<
(std::ostream
&
os,
const
Queue
<
T
>&
Q)
...
{
os
<<
"
Queue:<Tail--
"
;
for
(
int
i
=
0
; i
<
Q.m_Count; i
++
)
os
<<
Q.m_Array[ (Q.m_Head
-
i)
%
Q.m_Capacity ]
<<
"
"
;
if
(Q.m_Count
<
1
) os
<<
"
Empty!
"
;
os
<<
"
--Head>
"
;
return
os;
}
template
<
class
Type
>
class
Queue
...
{
friend std::ostream
&
operator
<<
<
Type
>
(std::ostream
&
,
const
Queue
<
Type
>&
);
public
:
Queue(unsigned
int
Capacity): m_Head(
-
1
), m_Array(
0
),m_Capacity(Capacity),m_Count(
0
)
...
{
if
(m_Capacity
<
2
)
throw
std::range_error(
"
Invalid Queue Length, too small!
"
);
if
( (m_Array
=
new
Type[m_Capacity])
==
0
)
throw
std::runtime_error(
"
Not enough memory!
"
);
}
Queue(): m_Head(
-
1
), m_Array(
0
),m_Capacity(
64
),m_Count(
0
)
...
{
if
( (m_Array
=
new
Type[m_Capacity])
==
0
)
throw
std::runtime_error(
"
Not enough memory!
"
);
}
~
Queue()
...
{
delete [] m_Array;
}
const
Type
&
Head()
const
...
{
if
(m_Count
<
1
)
throw
std::domain_error(
"
Empty Queue!
"
);
return
m_Array[m_Head];
}
void
Enqueue(
const
Type
&
value)
...
{
if
(m_Count
>=
m_Capacity)
throw
std::domain_error(
"
Queue is full!
"
);
m_Array[(
++
m_Head)
%
m_Capacity]
=
value;
m_Count
++
;
}
void
Dequeue(Type
&
item )
...
{
if
(
this
->
IsEmpty ())
throw
std::domain_error(
"
Queue is empty!
"
);
item
=
m_Array[m_Tail()];
m_Count
--
;
}
bool
IsEmpty()
...
{
return
m_Count
==
0
; }
bool
IsFull()
...
{
return
m_Count
==
m_Capacity; }
size_t Count()
...
{
return
m_Count; }
private
:
unsigned
int
m_Capacity;
unsigned
int
m_Count;
Type
*
m_Array;
int
m_Head;
int
m_Tail()
...
{
return
( m_Head
-
m_Count
+
1
)
%
m_Capacity; }
}
;
}
#endif
当然没有STL里面的强大了,不过学习用途也不错。主要是为了学习C++。
返回
【上篇】
C++ 学习练手 – 数组型栈的模板实现
【下篇】
关于.net framework 2.0安装中出现的0×80131107错误的解决方案大全
作者:
prowler
该日志由 prowler 于4年前发表在综合分类下,最后更新于 2018年04月06日.
转载请注明:
C++ 学习练手 – 数组型队列的模板实现 | 学步园
+复制链接
抱歉!评论已关闭.
书签
招生
白云飘飘网
青岛房产网
最新文章New
网站优化可以收获更好的收益
robots在网页开发中起到了一定的
SEO引擎优化可以更好的方便搜索
Dreamweaver教程很实用,值得学习
很多的photoshop教程值得学习,你
编程语言很重要,特别是对于计算
数据库非常常见,也非常实用!
H5指的是第5代html,不同于传统企
HTML是什么,该怎么制作?
本站推荐
为什么PHP的吉祥物是一头大象
作业的提交和监控(二)
作业的提交和监控(一)
Boost – Function 分析
奇技淫巧 – C/C++ 宏自身
模板的 SFINAE 原则
Octopress 和 Git 的结合
Electric-fence 介绍