[英]Get raw data pointer from empty std::vector
這是一個未定義的行為:
std::vector<int> v;
int const * a = &v[0];
我的目標是避免UB和vector::data()
函數起作用。 但是我需要在沒有>=C++11
。
例如,如果我要用vector::reserve
分配一些內存,那行得通嗎?
v.reserve(1);
int const * a = &v[0];
澄清:
我將指針指向該點后,向量不會更改,並且向量可能為空或包含數據。
只需在條件運算符中執行檢查即可:
int const * a = v.empty() ? NULL : &v[0];
與data()
,它具有更多的好處,您可以從指針本身檢查向量是否為空:如果為空,則a
為null。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.