C++ Tuple::swap() 函数



C++ 的 std::tuple::swap() 函数用于交换两个相同类型元组的元素,它通过交换元组内的值来避免不必要的复制。此函数对于同时交换多个变量特别有用。

通过使用移动语义,swap() 函数通过移动元素而不是复制元素来提高性能。它提供了一种方便的方法来交换元组之间的值,而无需显式迭代每个元素。

语法

以下是 std::tuple::swap() 函数的语法。

void swap (tuple& tpl) noexcept

参数

tpl − 它是另一个相同类型的元组对象。

返回值

此函数不返回任何值。

示例

让我们来看下面的例子,我们将交换两个元组。

#include <iostream>
#include <tuple>
using namespace std;
int main()
{
    tuple<int, int> x = make_tuple(11,12);
    tuple<int, int> y = make_tuple(13,14);
    swap(x, y);
    cout << "x after swap: " << get<0>(x) << ", " << get<1>(x) << endl;
    cout << "y after swap: " << get<0>(y) << ", " << get<1>(y) << endl;
    return 0;
}

输出

让我们编译并运行上面的程序,这将产生以下结果:

x after swap: 13, 14
y after swap: 11, 12

示例

考虑另一种情况,我们将交换元组的元素。

#include <iostream>
#include <tuple>
using namespace std;
int main()
{
    tuple<int, string> x = make_tuple(1, "Vespa");
    tuple<int, string> y = make_tuple(2, "Activa");
    swap(get<1>(x), get<1>(y));
    cout << "x after swap: " << get<0>(x) << ", " << get<1>(x) << endl;
    cout << "y after swap: " << get<0>(y) << ", " << get<1>(y) << endl;
    return 0;
}

输出

如果我们运行上面的代码,它将生成以下输出:

x after swap: 1, Activa
y after swap: 2, Vespa

示例

在下面的例子中,我们将交换向量中的一个元组。

#include <iostream>
#include <vector>
#include <tuple>
int main()
{
    std::vector<std::tuple<int, int>> x{{1, 2}, {11, 22}};
    std::swap(x[0], x[1]);
    std::cout << "After swapping:\n";
    for (const auto& a : x) {
        std::cout << std::get<0>(a) << " " << std::get<1>(a) << std::endl;
    }
    return 0;
}

输出

以下是上述代码的输出:

After swapping:
11 22
1 2

示例

让我们考虑下面的例子,我们将交换空元组。

#include <iostream>
#include <tuple>
using namespace std;
int main()
{
    tuple<int, string> x;
    tuple<int, string> y;
    swap(x, y);
    cout << "x after swap: (" << get<0>(x) << ", " << get<1>(x) << ")" << endl;
    cout << "y after swap: (" << get<0>(y) << ", " << get<1>(y) << ")" << endl;
    return 0;
}

输出

上述代码的输出如下:

x after swap: (0, )
y after swap: (0, )
广告
© . All rights reserved.