c++ - vector 不从 cin 获取输入

标签 c++ vector

我正在尝试将 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/

相关文章:

c++ - 错误 : expression must be a modifiable lvalue

c++ - 在 C++11 中初始化 std::vector<std::string> 不起作用?

c++ - 如何设置 "discrete_distribution"c++的 vector

c++ - 插入特定数据结构时我做错了什么?

C++ - UInt32 上的堆损坏*

c++ - 正确使用模板将函数传递给线程池

Python:区分行向量和列向量

c++ - std::vector 大小在尝试填充后保持为零

vector - Threejs - 如何按距离偏移二维几何体上的所有点

c++ - 使用分配器覆盖的数组支持 vector - 一个坏主意?