[英]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.