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
廣告

© . All rights reserved.