gpt4 book ai didi

c++ - 为什么 f(x).swap(v) 可以,但 v.swap(f(x)) 不行?

转载 作者:可可西里 更新时间:2023-11-01 18:28:49 28 4
gpt4 key购买 nike

我们有:

vector<int> f(int);

vector<int> v;

这个有效:

f(x).swap(v);

这不是:

v.swap(f(x));

为什么?

最佳答案

swap()vector<int> 进行非常量引用.非常量引用不能绑定(bind)到右值(临时对象)。对按值返回的函数的调用(如 f )是右值。

f(x).swap(v)的原因有效是因为在 std::vector<int>::swap 里面, f(x) 返回的临时对象可以使用this来指代自己。 this不是右值。

关于c++ - 为什么 f(x).swap(v) 可以,但 v.swap(f(x)) 不行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4103852/

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