用栈构造数组
#include<iostream>
#include<vector>
using namespace std;
class Solution{
public:
vector<string> out;
vector<string> line(vector<int>&target,int n)
{
int b = 1;
for(int i = 0;i < target.size();++i)
{
while(b <= n && b <= target[i])
{
if(b < target[i])
{
out.push_back(" ");
out.push_back("push");
out.push_back(" ");
out.push_back("pop");
out.push_back(" ");
out.push_back(" ");
}
else if(b == target[i])
{
out.push_back("push");
out.push_back(" ");
}
++b;
}
}
return out;
}
};
int main()
{
int n ;
int c;
vector<int> target;
vector<string> out1;
Solution m;
cout<<"请输入检测个数"<<endl;
cin>>n;
cout<<"请向目标向量中输入元素"<<endl;
while(cin >> c)
{
target.push_back(c);
}
out1 = m.line(target,n);
for(int i = 0;i < out1.size();++i)
{
cout<<out1[i];
}
return 0;
}
这部分代码可以解决这个问题,但是有一个问题没有解决,就是本代码只能先输入n,在输入target向量,因为在用while(cin)时,当退出循环后,cin缓冲器中保存着最后一个无效字符,这导致无法输入有效的n。