以 Char 陣列形式存取原始向量資料
考慮需要在函數中使用 std::vector 作為 char 陣列需要一個空指標。最初,使用常規字元數組很簡單。然而,切換到 std::vector 的靈活性在存取其原始資料方面提出了挑戰。
將向量指標傳遞給函數
立即嘗試將向量&something 或其迭代器&something.begin() 傳遞給函數,因為void 指標沒有產生所需的結果。相反,&something 傳回 std::vector 物件的位址,而不是資料本身,而 &something.begin() 提供迭代器的位址,不允許將其作為左值。
尋址索引 0 處的元素
解決方案在於檢索向量中第一個元素的位址。這可以透過多種方法來實現。一種方法是使用 &something[0],它給出索引 0 處元素的位址。另一個選擇是使用 &something.front(),它執行相同的任務。
Data() C 11 中的函數
對於C 11 及更高版本,std::vector 中引入了一個名為data() 的便利成員函數。此函數直接傳回容器中初始元素的位址。它的優點在於即使容器為空也可以安全使用。
結論
要將 std::vector 資料傳遞給接受 void 指標的函數,它需要擷取向量中第一個元素的位址。這可以使用 &something[0]、&something.front() 或 data() 函數來完成,這取決於 C 版本和容器大小。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3