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

时间:2015-10-10 23:03:23

标签: c++

考虑以下计划。

#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的期望值不匹配。有谁知道如何解决这一问题?我会发布错误消息,但它们真的会永远存在。谢谢!

3 个答案:

答案 0 :(得分:6)

您的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";
}

答案 1 :(得分:1)

您将array作为指针传递,因此在使用[]运算符之前需要取消引用它。试试这个:

(*array)[0];

由于您的代码现在正在尝试访问std::vector<size_t>数组的元素0并打印出来。

答案 2 :(得分:1)

array是指向矢量的指针,因此array[0]是矢量本身,您无法将矢量写入流。

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

虽然通过(const)引用会更好,但现有代码才能正常工作:

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