gpt4 book ai didi

c++ - 在 C++ 中,A+=B 是否优于 A=A+B,就像++A 优于 A++ 一样?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:12:39 24 4
gpt4 key购买 nike

在 C++ 中,A+=B 是否优于 A=A+B,就像++A 优于 A++ 一样?

我知道“++A”预增量保证至少与“A++”后增量一样快。这在很多地方都有讨论,包括 herehere .同样,A+=B 预计至少与 A=A+B 一样快,如 here .

我在看这个是为了++:

//From https://herbsutter.com/2013/05/13/gotw-2-solution-temporary-objects/
T T::operator++(int)() {
auto old = *this; // remember our original value
++*this; // always implement postincr in terms of preincr
return old; // return our original value
}

我的推理是,在最坏的情况下(可能来自复杂的对象类型)A=A+B 必须检索并存储 A 并添加 B,然后再将其保存回原始 A 位置,而 A+=B 将需要B 直接加到 A 上。我的推理是否正确?

预计基本类型在编译时被重新排列为相同,这实际上只适用于需要运算符重载的复杂对象。

这是否普遍适用于大多数命令式语言?

最佳答案

我想说的原因并不完全相同。我更喜欢 A += B 而不是 A = A + B 的主要原因是简洁。 A += B 明确指出您要将 B 添加到 A。如果 A 是一个更复杂的表达式,则尤其如此:

node_capacities[std::make_pair(node1,node2)] += edge.capacity;

我也从未发现 A += B 的性能比 A = A + B 差。

关于c++ - 在 C++ 中,A+=B 是否优于 A=A+B,就像++A 优于 A++ 一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37768662/

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