附加向量。结果将无法打印

时间:2014-04-21 08:29:39

标签: c++ vector append

我试图为a和b输入整数,然后打印放在一起的整数。例如,输入1 2 3 4表示a和4 3 2 1表示b将产生:1 2 3 4 4 3 2 1.我不明白为什么我的程序不打印这个。每当我输入-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;

}

2 个答案:

答案 0 :(得分:1)

你有两个循环,一个用于输入向量a,另一个用于输入b。 点击-1一次只会终止第一个循环。第二个由eof终止,您仍然无法输入。因此,要么输入eof(特定于您的系统),要么让第二个循环终止于-1(在这种情况下,您需要再次输入-1)。

答案 1 :(得分:0)

你说

  

每当我输入-1时,没有任何反应。

那是因为你当时达到第二个cin >> temp语句(就在while.eof()循环之前)。那是你开始输入b向量的值的时候。你通过在流中输入EOF字符结束循环(Windows上的CTRL + Z,Linux上的CTRL + D)。