c – 将一对成员分配给变量

前端之家收集整理的这篇文章主要介绍了c – 将一对成员分配给变量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否可以在不创建临时对象的情况下分配一对成员?
#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)

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

猜你在找的C&C++相关文章