![](/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.