![](/img/trans.png)
[英]Why is size_type in std::array size_t and in std::vector usually 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.