发送 std::矢量<size_t>数组到函数和打印时出错

Error sending std::vector<size_t> array to function and printing

本文关键字:函数 出错 数组 打印 矢量 std lt size 发送 gt      更新时间:2023-10-16

考虑下面的程序。

#include <iostream>
#include <vector>
void printEm(std::vector<size_t>* array){
  std::cout << array[0] << "n";
}
  int main(){
  std::vector<size_t> array;
  return 0;
}

由于某种原因,每当我编译这个时,我都得到三页的价值或错误,我不知道为什么。我认为std::vector类型可能与cout所期望的不匹配。有人知道怎么解决这个问题吗?我会发布错误信息,但它们真的会一直持续下去。谢谢!

您的array参数是一个指针,因此您需要对其解引用。

void printEm(std::vector<size_t>* array)
{
    std::cout << (*array)[0] << "n";
}

或者通过引用传递:

void printEm(std::vector<size_t>& array)
{
    std::cout << array[0] << "n";
}

您将array传递为指针,因此您需要在使用[]操作符之前对其解引用。试试这个:

(*array)[0];

正如你的代码现在,你正试图访问元素0的数组std::vector<size_t>和打印它。

array是指向vector的指针,因此array[0]是vector本身,不能将vector写入流。

获取第一个元素需要(*array)[0] .

虽然通过(const)引用传递要好得多,但您现有的代码可以正常工作:

void printEm(const std::vector<size_t> & array)