2016-12-07 12 views
-1

これは私のコードの一部であり、残りの部分がコメントアウトされている唯一のアクティブな部分です。プレート10をスタックして新しいスタックを作成するスタックのベクトルを作成しようとしています。それは本当に私はベクトルを正しく宣言したかどうかわからないので、私は初めてスタックを使っています。ベクトル添字が範囲外になるのはなぜですか?

しかし、もっと重要なことに、私はforループを使ってスタックにアイテムをプッシュしようとすると、添字の範囲外の行:1234と私はどのようにスタックにプッシュする必要がありますか、またはtrains.push_back()を使用する方法があるかどうかはわかりません。 (たびにpush_backを試してみると、エラーが出ます)。

#include <stack> 
#include <iostream> 
using namespace std; 


int main() 
{ 
vector<stack<int>> plates; 
int numPlates,plateColor; 
int x = 0; 

cout << "Enter number of Plates" << endl; 
cin >> numPlates; 

for (int i = 0; i < numPlates; i++) { 
    if ((x + 1) % 10 == 0) // once plates are stacked ten high, start new stack 
     x++; 
    cin >> plateColor; 
    plates[x].push(plateColor); 
} 
+2

「電車」が定義されている場所あなたが表示されません。 。 [mcve]を投稿してください。 – OldProgrammer

+0

そのプレートと思われる..私はそれを修正した – alwaysLearning

+0

あなたのベクトルは空です。 'plates [x]'を使う前にいくつかの要素を入れなければなりません。 – Galik

答えて

1

スタックを作成して埋め込み、emplace_backを使用してベクトルに追加する必要があります。このような何か動作するはずです:

for (int i = 0; i < numPlates; i += 10) 
{ 
    stack<int> temp = stack<int>(); 
    for (int j = 0; j < 10 && j + i < numPlates; j++); 
    { 
     int plateColor = 0; 
     cin >> plateColor; 
     temp.push(plateColor); 
    } 
    plates.emplace_back(temp); 
} 
+0

ありがとうございます。申し訳ありませんが、もし私の質問があまりにも曖昧でしたが、これは私が知る必要があったものです。今すぐベクトル内のスタックの内容を出力する方法を理解する...ありがとう – alwaysLearning

+0

@alwaysLearning - 2つのネストされたループが必要です。 1はベクトルを反復し、もう1つは各スタックから個々の値を取得します。制限として、stack :: empty()関数を使用できます。最高の価値を得ることはそれを読むことを忘れないでください。次の値を読み取るには、値をポップする必要があります。 – tinstaafl

+0

私はそれをすべて考え出しました。感謝万円 – alwaysLearning

0

Xがインクリメントで0、またはいつでもXであるとき、あなたはプレートに新しいスタックをプッシュする必要がある[X]

関連する問題