我试图为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;
}
答案 0 :(得分:1)
你有两个循环,一个用于输入向量a
,另一个用于输入b
。
点击-1一次只会终止第一个循环。第二个由eof
终止,您仍然无法输入。因此,要么输入eof
(特定于您的系统),要么让第二个循环终止于-1(在这种情况下,您需要再次输入-1)。
答案 1 :(得分:0)
你说
每当我输入-1时,没有任何反应。
那是因为你当时达到第二个cin >> temp
语句(就在while.eof()
循环之前)。那是你开始输入b
向量的值的时候。你通过在流中输入EOF字符结束循环(Windows上的CTRL + Z,Linux上的CTRL + D)。