第78章 QUEUEクラスの例


今回も、QUEUEクラスを使った簡単なサンプルを作ってみます。 前章でも書いたようにこのクラスには、データを最後に追加して、最初からしか取得できません。 2番目、3番目の要素を取得するには先頭データから、1つずつ削除していくしかありません。



今回は、文字列をどんどん格納して、これを先頭から読み出してみるプログラムを作ります。 読み出す前であれば、何回もデータを格納できます。 読み出した後では、最初からデータを入れることになります。

では、サンプルを見てみましょう。

// queue02.cpp

#include <iostream>
#include <queue>
#include <string>
#include <conio.h>

using namespace std;

int menu();
int myinput();
int myread();

queue<string>  qu;

int main()
{
    menu();

    return 0;
}

int menu()
{
    string no;
    int nNo;

    while (1) {
        cout << "*************************" << endl;
        cout << "1.データの格納" << endl;
        cout << "2.データの読み出し" << endl;
        cout << "0.終了" << endl;
        cout << "*************************" << endl;
        cout << "選択番号----";
        cin >> no;

        nNo = atoi(no.c_str());

        switch (nNo) {
            case 0:
                return 0;
            case 1:
                myinput();
                break;
            case 2:
                myread();
                break;
            default:
                cout << "番号が不正です" << endl;
                continue;
        }
    }
    return 0;
}

int myinput()
{
    string data;

    while (1) {
        cout << "文字列(eで終了)---";
        cin >> data;
        if (data == "e")
            break;
        qu.push(data);
    }
    return 0;
}

int myread()
{
    int i, j;

    j = (int)qu.size();

    if (j == 0) {
        cout << "読み出すデータがありません" << endl;
        return -1;
    }

    cout << "読み出すとデータは無くなります" << endl;

    for (i = 0; i < j; i++) {
        cout << qu.front() << endl;
        qu.pop();
    }

    cout << "何かキーを打つとメニューに戻ります" << endl;
    getch();
    return 0;
}
あまり意味のないプログラムです。

main関数からはmenu関数が呼ばれているのみです。 menu関数では、ユーザーの指定した番号に従ってmyinputまたは、myread関数を 呼んでいます。

いろいろ改良して遊んでみてください。


[C++Index] [総合Index] [Previous Chapter] [Next Chapter]

Update Jun/21/2004 By Y.Kumei
当ホーム・ページの一部または全部を無断で複写、複製、 転載あるいはコンピュータ等のファイルに保存することを禁じます。