打印向量 - 空输出

Printing Vectors - Empty output

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

我刚从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, " "));

您需要

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

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

要避免这样的未来麻烦,请查看文档。

而不是使用

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

尝试使用:

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

您应该传递模板向量的类型。它有效:)?

您的矢量中的ints被铸成chars,而chars 0,1,2,3不可打印,这就是为什么您要获得空输出。

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

for (char v = 'a'; i <= 'z'; ++v) {
    mutli_array.push_back(v);
}

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

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

您可能会查看一些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

您需要在 ostream_iterator peftintion中具有正确的数据类型:

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