C++ Deque::swap() 函式



C++ 的 std::deque::swap() 函式用於雙端佇列容器,用來交換雙端佇列的內容。它在兩個雙端佇列之間交換元素,確保兩個雙端佇列最終都擁有最初屬於另一個雙端佇列的元素。此操作通常比手動在容器之間複製元素更快。

swap() 函式可以兩種方式呼叫:作為成員函式或作為非成員函式。當用作成員函式時,swap() 的時間複雜度為常數,即 O(1);當用作非成員函式時,其時間複雜度為線性,即 O(n)。您可以在下面找到兩種方法的語法。

語法

以下是 std::deque::swap() 函式的語法。

void swap (deque& x);
or
void swap (deque<T,Alloc>& x, deque<T,Alloc>& y);

引數

  • x − 指示另一個相同型別的雙端佇列容器。
  • x, y − 指示相同型別的雙端佇列容器。

x − 另一個相同型別的雙端佇列物件。

返回值

此函式不返回任何值。

異常

此函式從不丟擲異常。

示例

在下面的示例中,我們將考慮 swap() 函式的基本用法。

#include <iostream>
#include <deque>
int main()
{
    std::deque<char> a = {'A', 'B', 'C'};
    std::deque<char> b = {'X', 'Y', 'Z'};
    a.swap(b);
    std::cout << "After swapping:\n";
    std::cout << "a: ";
    for (auto& elem : a)
        std::cout << elem << " ";
    std::cout << "\nb: ";
    for (auto& elem : b)
        std::cout << elem << " ";
    std::cout << "\n";
    return 0;
}

輸出

以上程式碼的輸出如下:

After swapping:
a: X Y Z 
b: A B C

示例

考慮以下示例,我們將交換一個空佇列和一個非空佇列。

#include <iostream>
#include <deque>
int main()
{
    std::deque<int> a;
    std::deque<int> b = {11,22,33,4};
    a.swap(b);
    std::cout << "After swap:" << std::endl;
    std::cout << "Size of 1st deque : " << a.size() << std::endl;
    std::cout << "Size of 2nd deque : " << b.size() << std::endl;
    return 0;
}

輸出

以上程式碼的輸出如下:

After swap:
Size of 1st deque : 4
Size of 2nd deque : 0

示例

讓我們來看下面的示例,我們將使用 swap 來清空雙端佇列。

#include <iostream>
#include <deque>
int main()
{
    std::deque<char> a = {'A', 'B', 'C'};
    std::cout << "Before clearing:\n";
    std::cout << "Deque: ";
    for (auto& elem : a)
        std::cout << elem << " ";
    std::cout << "\n";
    std::deque<char>().swap(a);
    std::cout << "After clearing:\n";
    std::cout << "Deque: ";
    for (auto& elem : a)
        std::cout << elem << " ";
    std::cout << "\n";
    return 0;
}

輸出

如果我們執行以上程式碼,它將生成以下輸出:

Before clearing:
Deque: A B C 
After clearing:
Deque: 
deque.htm
廣告