附加向量。结果不会打印

Appending vectors. Result won't print

本文关键字:打印 结果 向量      更新时间:2023-10-16

我正在尝试为a和b输入整数,然后将这些整数打印在一起。例如,输入1 2 3 4表示a,输入4 3 2 1表示b将得到:1 2 3 3 4 3 2。我不明白为什么我的程序不打印这个。每当我输入-1时,什么都不会发生。程序运行时,我是否做错了流程?感谢您的帮助。

#include <iostream>
#include <vector>
using namespace std;
vector<int> append(vector<int> a, vector<int> b)
{
    int n = a.size();
    int m = b.size();
    vector<int> c(n + m);
    int i;
    for (i = 0; i < n; i++)
        c[i] = a[i];
    for (i = 0; i < m; i++)
        c[n + i] = b[i];
    return c;
}
main()
{
    vector<int>a, b, c;
    int temp;
    cin >> temp;
    while (temp != -1) {
        a.push_back(temp);
        cin >> temp;
}
    cin >> temp;
    while (!cin.eof()) {
        b.push_back(temp);
        cin >> temp;
}
    c = append(a, b);
    for (int i = 0; i < c.size(); i++)
        cout << c[i] << " ";
    cout << endl;
}

您有两个循环,一个输入向量a,另一个输入b。一次命中-1只会终止第一个循环。第二个以您尚未输入的eof终止。因此,要么输入eof(特定于您的系统),要么让第二个循环终止于-1(在这种情况下,您需要再次输入-1)。

你说

每当我输入-1时,什么都不会发生。

这是因为您在那个时候(就在while.eof()循环之前)到达了第二个cin >> temp语句。从那时开始输入b矢量的值。通过在流中输入EOF字符(在windows中为CTRL+Z,在linux中为CTRL+T)来结束循环。