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