簡體   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