gpt4 book ai didi

c++ - 从空 std::vector 获取原始数据指针

转载 作者:行者123 更新时间:2023-11-30 03:33:37 29 4
gpt4 key购买 nike

这是一个未定义的行为:

std::vector<int> v;
int const * a = &v[0];

我的目标是避免 UB 并且 vector::data() 函数会起作用。但是我需要在没有 >=C++11 的情况下完成它。

例如,如果我用 vector::reserve 分配一些内存,它会起作用吗?

v.reserve(1);
int const * a = &v[0];

澄清:

在我取指针之后 vector 没有改变, vector 可能为空或包含数据。

最佳答案

只需在条件运算符内执行检查:

int const * a = v.empty() ? NULL : &v[0];

这比 data() 有额外的好处,您可以从指针本身检查 vector 是否为空:如果是,a 为空。

关于c++ - 从空 std::vector 获取原始数据指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42695609/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com