打印矢量 - 空输出

时间:2016-11-29 14:04:54

标签: c++ vector

我刚开始用C ++和im学习矢量。做了一个循环,将值添加到向量表中,然后尝试使用以下方法将其打印出来:

std::copy(multi_array.begin(), multi_array.end(), std::ostream_iterator<char>(std::cout, " "));

但是在控制台窗口上打印一个空字符串。

这里是代码:

  vector<int> multi_array;
  for(int v=0;v <= 3; v++){
    multi_array.push_back(v);
  }
  std::copy(multi_array.begin(), multi_array.end(), std::ostream_iterator<char>(std::cout, " "));

5 个答案:

答案 0 :(得分:2)

你需要

std::ostream_iterator<int>(std::cout, " ")
                      ^^^

int s。第一个模板参数必须是要打印的类型。

为了避免将来出现问题,请查看the docs

答案 1 :(得分:2)

而不是使用

std::ostream_iterator<char>(std::cout, " "))

尝试使用:

std::ostream_iterator<int>(std::cout, " "))

您应该将矢量类型传递给模板。它有用吗??

答案 2 :(得分:2)

你在向量中的整数被转换为字符,而字符0,1,2,3是不可打印的,这就是你得到空输出的原因。

您需要输入可打印的字符,以查看实际输出。

std::ostream_iterator<int>(std::cout, " ");

或者您需要指定要打印的有效类型:

{{1}}

答案 3 :(得分:2)

您可以查看一些C ++教程或其中的udemy课程。比使用复制功能更直接的打印方式是:

vector<int> multi_array;
for(int v=0;v <= 3; v++){
    multi_array.push_back(v);
    cout << multi_array.back() << " ";
}

cout << endl;

别忘了#include iostream

答案 4 :(得分:2)

您需要在ostream_iterator定义中使用正确的数据类型:

std::copy(multi_array.begin(), multi_array.end(), ostream_iterator<int>(std::cout, " "));