gpt4 book ai didi

c++ - 将一对成员分配给变量

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

是否可以在不创建临时对象的情况下分配一对成员?

#include <tuple>
using namespace std;

pair< bool, int > foo()
{
return make_pair( false, 3 );
}

int main()
{
int x;
bool y;

auto z = foo();
x = z.second;
y = z.first;

return 0;
}

在上面的代码中,对象 auto z 需要在剖析它之前“保存”这对,但在实际代码中它的创建可能是昂贵的。

最佳答案

是的; std::tie为此发明:

#include <tuple>
#include <iostream>

std::pair<bool, int> foo()
{
return std::make_pair(false, 3);
}

int main()
{
int x;
bool y;

std::tie(y, x) = foo();
std::cout << x << ',' << y << '\n';
}

// Output: 3,0

( live demo )

当然你仍然会有一个临时对象某处(模常数优化),但这是你可以编写代码的最直接的方法,除非你初始化xy 直接来自它们的最终值,而不是首先在 foo() 中创建一对。

关于c++ - 将一对成员分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31792910/

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