第一第四题比较类似,对于push和add的操作我都是直接getline一行的,然后再把数字提取出来,为什么都不成功呀,有大佬能帮我看看问题出在哪里么?
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
void push(vector<int> &data, int x)
{
data.push_back(x);
}
void top(vector<int> &data)
{
if (data.empty()) cout << -1 << endl;
else {
cout << data[0] << endl;
}
}
void pop(vector<int> &data)
{
if (data.empty()) cout << -1 << endl;
else {
vector<int>::iterator k = data.begin();
data.erase(k);
}
}
void size(vector<int> &data)
{
cout << data.size() << endl;
}
void clear(vector<int> &data)
{
data.clear();
}
int main()
{
int T;
cin >> T;
cin.ignore();
vector<vector<string>> vec;
vector<int> data;
for (int i = 0; i < T; ++i)
{
int Q;
cin >> Q;
cin.ignore();
vector<string> temp;
for (int j = 0; j < Q; ++j)
{
string s;
getline(cin, s);
temp.push_back(s);
s.clear();
}
vec.push_back(temp);
temp.clear();
}
for (int i = 0; i < vec.size(); ++i)
{
for (int j = 0; j < vec[i].size(); ++j)
{
if (vec[i][j] == "TOP") top(data);
else if (vec[i][j] == "POP") pop(data);
else if (vec[i][j] == "SIZE")size(data);
else if (vec[i][j] == "CLEAR") clear(data);
else {
auto kongge = vec[i][j].find_first_of(' ');
vec[i][j].erase(0, 5);
int temp;
stringstream ss(vec[i][j]);
ss >> temp;
push(data, temp);
}
}
}
return 0;
}
全部评论
(16) 回帖