以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 版本和容器大小。
以上是如何在 C 中以字元數組形式存取原始向量資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!