-2

ヘッダーファイルからスタッククラスを実装しようとしています。stack.h、stack.cpp、main.cppの3つのファイルを使用して記述しました。

要素を見つけるために、stack.cppで次のコードを使用しています。

bool stack::find (const string &elem) const
{
    vector<string>::const_iterator it = _stack.begin();
    return ::find(it,_stack.end(),elem))!=_stack.end();
}

ただし、findは常にfalseを返し続けます。毎回「単語が見つかりません」というメッセージが表示されます。これを手伝ってくれませんか。

コードのペーストビンリンクは次のとおりです。PasteBinリンク

4

1 に答える 1

1

反復ルックアップを行っている場合、スタックは使用したいデータ構造ではありません。スタックのポイントは、要素にアクセスするには要素をポップオフする必要があるということです。検索ですべての要素を調べている場合、スタックの状態を保持する唯一の方法は、すべての要素を別のコンテナーに保存し、検索が完了した後にそれらをスタックにプッシュすることです。もしそうなら、std::vector のようなランダム アクセス コンテナーを使用しないのはなぜでしょうか?

したがって、あなたの質問に対する答えは次のとおりです。そうしないでください。別のコンテナを使用してください。

于 2012-09-09T07:37:47.330 に答える