gpt4 book ai didi

c++ - 哪个 vector 地址更安全?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:57:13 25 4
gpt4 key购买 nike

假设一个函数需要一个指向类型 T 的 vector 的指针,但是当我只有一个类型为 T 的 vector 的 vector 时(不能保证类型是 POD),这是吗

std::vector<std::vector<T>> input;
auto selectedVectorPtr=&input[j];

比这个安全

std::vector<std::vector<T>> input;
auto selectedVectorPtr=&(input[j]);

还假设输入的范围直到以 selectedVectorPtr 作为参数的函数才结束。

我的担忧(/误解)是:

  • () 是否创建任何临时对象?那么采取地址是不好的吗?
  • 类型 T 上 & 或 [] 的运算符重载对更改运算符优先级的优先级有任何影响吗?
  • 如果 vector (或两者)在获取地址后被调整大小怎么办?

最佳答案

operator[] has higher precedence then operator& (后缀运算符的优先级最高),所以这里先求值,不需要括号。这里的&input[j]&(input[j])没有区别。


另一种更简单的语法:

auto selectedVectorPtr = input.data() + j;

这里也不需要 std::addressof

关于c++ - 哪个 vector 地址更安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52478556/

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