博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(原創) 如何使用queue? (C/C++) (STL)
阅读量:6922 次
发布时间:2019-06-27

本文共 1277 字,大约阅读时间需要 4 分钟。

此范例demo如何使用STL的queue container,要将数据加进queue时,只要用q.push(item)即可,但要取出数据时,并不是用q.pop(),而是用q.front()取出最前面的数据,q.pop()则是将最前面的数据取出queue,其回传值为void。

 1
ExpandedBlockStart.gif
ContractedBlock.gif
/**/
/* 
 2InBlock.gif(C) OOMusou 2006 http://oomusou.cnblogs.com
 3InBlock.gif
 4InBlock.gifFilename    : Queue.cpp
 5InBlock.gifCompiler    : Visual C++ 8.0
 6InBlock.gifDescription : Demo how to use queue
 7InBlock.gifRelease     : 11/25/2006
 8ExpandedBlockEnd.gif*/
 9
None.gif#include 
<
conio.h
>
 
//
 for _getch()
10
None.gif
#include 
<
queue
>
   
//
 for std::queue
11
None.gif
#include 
<
iostream
>
12
None.gif
13
None.gifstd::queue
<
char
>
 charQueue;
14
None.gif
15
ExpandedBlockStart.gifContractedBlock.gif
int
 main() 
dot.gif
{
16InBlock.gif  char c;
17ExpandedSubBlockStart.gifContractedSubBlock.gif  while(c = _getch()) dot.gif{
18ExpandedSubBlockStart.gifContractedSubBlock.gif    switch(c) dot.gif{
19InBlock.gif      case '1':
20InBlock.gif      case '2':
21InBlock.gif      case '3':
22InBlock.gif      case '4':
23InBlock.gif        charQueue.push(c);
24InBlock.gif        break;
25InBlock.gif      case 'q':
26InBlock.gif        goto stop;
27InBlock.gif        break;
28ExpandedSubBlockEnd.gif    }
29ExpandedSubBlockEnd.gif  }
30InBlock.gif
31InBlock.gif  stop:
32ExpandedSubBlockStart.gifContractedSubBlock.gif  while(!charQueue.empty()) dot.gif{
33InBlock.gif    std::cout << charQueue.front() << std::endl;
34InBlock.gif    charQueue.pop();
35ExpandedSubBlockEnd.gif  }
36InBlock.gif
37InBlock.gif  return 0;
38ExpandedBlockEnd.gif}
在以前Turbo C时代,在<stdio.h>中有getch()可抓取输入的char值,且不在屏幕上出现,但Visual C++已经无getch()了,取而代之的是<conio.h>的_getch(),据MSDN Library的  所述,_getch()为ISO C++所定义的,但我在Linux的gcc并无法使用_getch()。
此范例还demo了C++独特的switch fall through写法,这种写法在C#并不允许,理由是很多人因为在switch中少写了break而造成程序错误,所以强制switch中一定要使用break,但C++则允许不写break,不写break的优点是可以多个case共享一个叙述,如19行到22行,若使用if搭配||当然可以写出来,但程序的可读性差很多。第26行虽然动了goto,但goto只要是往下跳则还可接受,不太影响程序阅读,但goto往上跳则严格禁止。
Reference
C++标准链接库 中文版 P.444 ~ P.447, Nicolai M. Josuttis 着,侯捷/孟岩 译, Addison Wiseley/碁峰出版社

转载地址:http://etkjl.baihongyu.com/

你可能感兴趣的文章
crontab执行shell脚本日志中出现乱码
查看>>
aix中的几个小技巧与日志
查看>>
企业集群平台架构实现与应用实战(HAproxy+keepalived篇)
查看>>
京东商城IPO 大平台局面形成的几个因素
查看>>
【博客话题】我的技术之旅
查看>>
DB2中如何快速定位锁等待语句
查看>>
渠道下沉的京东家电,将如何平衡服务和产品差异化?
查看>>
培养情商,现在也不晚
查看>>
使用NAP控制***客户端拨入公司网络
查看>>
SystemCenter2012SP1实践(24)【录像】创建私有云
查看>>
演示:思科设备基于物理接口帧中继(fame-relay)的配置
查看>>
Puppet扩展篇3-如何扩展master的SSL传输性能(apache)
查看>>
An Interesting Interview(有趣的面试经历)
查看>>
网络游戏性能测试的几点想法
查看>>
用百度推荐提升PV和收益的小方法
查看>>
scp 是我小看了你-基于密钥传输!
查看>>
GTAC 2011 talks
查看>>
淘宝 Web 服务器 Tengine 正式开源
查看>>
[C++]VC 6.0 fatal error LNK1120: 1 unresolved externals
查看>>
oracle创建表之前判断表是否存在,如果存在则删除已有表
查看>>