【问题标题】:Appending vectors. Result won't print附加向量。结果不会打印
【发布时间】:2014-06-05 07:12:39
【问题描述】:

我正在尝试为 a 和 b 输入整数,然后将这些整数放在一起打印。例如,为 a 输入 1 2 3 4 为 b 输入 4 3 2 1 将产生: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;

}

【问题讨论】:

  • 参数读取中的第二个 while 循环似乎是错误的。
  • 我正在做的是输入任何整数,例如“23432”并按回车键。然后键入另一个整数,例如“64364”并按回车键。然后我输入-1。我以为这会打印出“2343264364”。它只是打印一个空白。
  • 尽管不必要地复制了输入向量,但您的附加功能仍然有效。您应该缩小问题范围并删除不相关的代码。如果您对执行许多不同操作的代码有问题,请将其拆分为单一职责部分并依次测试每个部分。

标签: c++ vector append


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    你说

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

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

    【讨论】:

      猜你喜欢
      • 2018-03-18
      • 1970-01-01
      • 1970-01-01
      • 2019-01-07
      • 1970-01-01
      • 2019-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多