繁体   English   中英

发送std :: vector时出错 <size_t> 阵列功能和打印

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

考虑以下程序。

#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];

由于您的代码正确,因此您正在尝试访问std::vector<size_t>数组的元素0并进行打印。

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

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

尽管更好的方法是传递(const)引用,但现有代码可以正常工作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM