我正在尝试将 cin
中的输入元素作为 cin>>ngarmy[]i
但在整个程序中所有元素都保持为零
谁能告诉我 vector 有什么问题?
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
vector <int> ngarmy(100);
vector <int> nmarmy(100);
int main() {
int t;
cin >> t;
while (t--) {
int ng, nm;
cin >> ng >> nm;
for (int i = 0; i < ng; i++) {
cin >> ngarmy[i];
}
for (int i = 0; i < nm; i++) {
cin >> nmarmy[i];
}
sort(ngarmy.begin(), ngarmy.end());
sort(nmarmy.begin(), nmarmy.end());
int i = 0, j = 0;
int ans = 0;
while (1) {
if (ngarmy[i] < nmarmy[j]) {
i++;
if (i == ng) {
ans = 1;
break;
}
}
else {
j++;
if (j == nm) {
ans = 2;
break;
}
}
}
if (ans == 1)
cout << "MechaGodzilla" << endl;
else
cout << "Godzilla" << endl;
}
}
最佳答案
vector 大小为 100,但大部分为零,因为您没有 100 个输入。当您对 vector 进行排序时,所有零都位于 vector 的开头,因为零是最小的数字。
您错误地读取了 vector 。与其让 vector 的大小始终为 100
,不如让它们的大小与您拥有的输入数量相同。从大小为零的 vector 开始,并在读取数字时使用 push_back
增加 vector 的大小。
像这样
vector <int> ngarmy; // vectors are size zero
vector <int> nmarmy;
for (int i = 0; i < ng; i++) {
int n;
cin >> n;
ngarmy.push_back(n); // add n to the vector
}
for (int i = 0; i < nm; i++) {
int n;
cin >> n;
nmarmy.push_back(n); // add n to the vector
}
或者如评论中所建议的那样,您可以将 vector 调整
到合适的大小
vector <int> ngarmy;
vector <int> nmarmy;
ngarmy.resize(ng);
for (int i = 0; i < ng; i++) {
cin >> ngarmy[i];
}
nmarmy.resize(nm);
for (int i = 0; i < nm; i++) {
cin >> nmarmy[i];
}
关于c++ - vector 不从 cin 获取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54502927/