如何使用queue? (C/C++) (STL)

來源:互聯網
上載者:User

此範例demo如何使用STL的queue container,要將資料加進queue時,只要用q.push(item)即可,但要取出資料時,並不是用q.pop(),而是用q.front()取出最前面的資料,q.pop()則是將最前面的資料取出queue,其回傳值為void。

 1/**//* 
 2(C) OOMusou 2006 http://oomusou.cnblogs.com
 3
 4Filename    : Queue.cpp
 5Compiler    : Visual C++ 8.0
 6Description : Demo how to use queue
 7Release     : 11/25/2006
 8*/
 9#include <conio.h> // for _getch()
10#include <queue>   // for std::queue
11#include <iostream>
12
13std::queue<char> charQueue;
14
15int main() {
16  char c;
17  while(c = _getch()) {
18    switch(c) {
19      case '1':
20      case '2':
21      case '3':
22      case '4':
23        charQueue.push(c);
24        break;
25      case 'q':
26        goto stop;
27        break;
28    }
29  }
30
31  stop:
32  while(!charQueue.empty()) {
33    std::cout << charQueue.front() << std::endl;
34    charQueue.pop();
35  }
36
37  return 0;
38}

在以前Turbo C時代,在<stdio.h>中有getch()可抓取輸入的char值,且不在螢幕上出現,但Visual C++已經無getch()了,取而代之的是<conio.h>的_getch(),據MSDN Library的ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_vccrt/html/d3a0b744-d63c-4f71-960e-24e619dccd01.htm 所述,_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往上跳則嚴格禁止。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.