為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中文網其他相關文章!