首頁  >  文章  >  後端開發  >  如何從`std::vector`取得原始資料指標?

如何從`std::vector`取得原始資料指標?

Susan Sarandon
Susan Sarandon原創
2024-11-21 22:57:11208瀏覽

How to Obtain a Raw Data Pointer from a `std::vector`?

為std::vector 提供原始資料指標

使用std::vector 作為char 陣列時,可能會出現需要將原始資料指標傳遞給需要void 指標的函數。最初,字元陣列用於此目的,如程式碼所示:

char something[] = "my data here";
process_data(something);

但是,std::vector 的動態性是可取的,導致以下嘗試:

vector<char> something;
*cut*
process_data(something);

挑戰在於將char向量傳遞給函數,以便它可以存取向量的原始資料data.

傳遞原始資料指標

使用&something 傳遞向量物件的位址是不正確的,因為它不提供資料的位址。同樣,使用 &something.begin() 也是不標準的,會產生警告。

正確的做法是取得容器初始元素的位址,可以透過以下方式實現:

&something[0] // or &something.front()
&*something.begin()

在C 11 中,std::vector 類別引入了一個新的成員函數data (),其作用與上述方法相同。它傳回容器的初始元素的位址,即使容器為空也可以安全使用。

以上是如何從`std::vector`取得原始資料指標?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn