这是我的代码的一部分,也是它现在唯一活跃的部分,其余部分被注释掉了,我正在尝试创建一个堆栈向量,它将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);
}
答案 0 :(得分: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);
}
答案 1 :(得分:0)
当X为0时,或者每当X递增时,你需要将一个新的堆栈推入板[x]