C++ Queue::swap() 函数



C++ 的std::queue::swap()函数用于交换两个队列的内容。它作用于包含相同类型元素的队列。它提供了一种高效的方式来交换元素,而无需单独复制它们。

swap() 函数可以通过两种方式调用:作为成员函数或作为非成员函数。当用作成员函数时,swap() 的时间复杂度为常数,即 O(1),否则当用作非成员函数时,时间复杂度为线性,即 O(n)。您可以在下面找到这两种方式的语法。

语法

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

void swap (queue& x) noexcept;
or
void swap (queue<T,Container>& q1, queue<T,Container>& q2) noexcept;

参数

  • x - 表示另一个相同类型的队列对象。
  • q1 - 表示第一个队列对象。
  • q2 - 表示第二个队列对象。

返回值

此函数不返回任何值。

示例

让我们看下面的例子,我们将交换两个整数队列的内容。

#include <iostream>
#include <queue>
int main()
{
    std::queue<int> a, b;
    for(int x = 1; x <= 4; ++x)
        a.push(x);
    for(int x = 11; x <= 14; ++x)
        b.push(x);
    a.swap(b);
    std::cout << "Queue 1: ";
    while (!a.empty()) {
        std::cout << a.front() << " ";
        a.pop();
    }
    std::cout << "\nQueue 2: ";
    while (!b.empty()) {
        std::cout << b.front() << " ";
        b.pop();
    }
    return 0;
}

输出

以上代码的输出如下:

Queue 1: 11 12 13 14 
Queue 2: 1 2 3 4 

示例

考虑另一种情况,我们将交换两个字符串队列的内容。

#include <iostream>
#include <queue>
#include <string>
int main()
{
    std::queue<std::string> x, y;
    x.push("AB");
    x.push("BC");
    x.push("CD");
    y.push("DE");
    y.push("EF");
    x.swap(y);
    std::cout << "Queue 1 : ";
    while (!x.empty()) {
        std::cout << x.front() << " ";
        x.pop();
    }
    std::cout << "\nQueue 2 : ";
    while (!y.empty()) {
        std::cout << y.front() << " ";
        y.pop();
    }
    return 0;
}

输出

以下是以上代码的输出:

Queue 1 : DE EF 
Queue 2 : AB BC CD 

示例

在下面的示例中,我们将交换空队列和非空队列,并观察输出。

#include <iostream>
#include <queue>
int main()
{
    std::queue<int> a, b;
    a.push(11);
    a.push(222);
    a.swap(b);
    std::cout << "Queue 1: ";
    while (!a.empty()) {
        std::cout << a.front() << " ";
        a.pop();
    }
    std::cout << "\nQueue 2: ";
    while (!b.empty()) {
        std::cout << b.front() << " ";
        b.pop();
    }
    return 0;
}

输出

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

Queue 1: 
Queue 2: 11 222 

示例

以下是一个示例,我们将交换空队列,并在交换后检索队列的大小。

#include <iostream>
#include <queue>
int main()
{
    std::queue<int> a;
    std::queue<int> b;
    a.swap(b);
    std::cout << "Size of queue1 after swap: " << a.size() << std::endl;
    std::cout << "Size of queue2 after swap: " << b.size() << std::endl;
    return 0;
}

输出

以下是以上代码的输出:

Size of queue1 after swap: 0
Size of queue2 after swap: 0
queue.htm
广告