C++ Array::swap() 函式



C++ 的 std::array::swap() 函式用於交換兩個相同型別和大小的陣列物件的內容。它高效地交換兩個陣列之間的元素,無需顯式地逐個元素複製。它確保兩個陣列在交換後都保持其大小和型別的完整性。

語法

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

void swap (array& x) noexcept(noexcept(swap(declval<value_type&>(),declval<value_type&>())));

引數

  • x − 指示相同型別的陣列容器。

返回值

它不返回任何值。

異常

時間複雜度

線性,即 O(n)

示例 1

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

#include <iostream>
#include <array>
int main() {
   std::array < int, 3 > x = {1,3,5};
   std::array < int, 3 > y = {2,4,6};
   x.swap(y);
   std::cout << "\n\nAfter swap:" << std::endl;
   std::cout << "x: ";
   for (int num: x) std::cout << num << " ";
   std::cout << "\ny: ";
   for (int num: y) std::cout << num << " ";
   return 0;
}

輸出

上述程式碼的輸出如下:

After swap:
x: 2 4 6 
y: 1 3 5

示例 2

考慮下面的示例,我們將交換不同大小的陣列並觀察輸出。

#include <iostream>
#include <array>
int main() {
   std::array < int, 2 > x = {1,2};
   std::array < int, 3 > y = {4,5,6};
   x.swap(y);
   return 0;
}

輸出

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

main.cpp: In function 'int main()':
main.cpp:7:12: error: cannot convert 'std::array<int, 3>' to 'std::array<int, 2>&'
    7 |     x.swap(y);
      |            ^
      |            |
      |            std::array<int, 3>

示例 3

讓我們看下面的示例,我們將交換雙精度值的陣列。

#include <iostream>
#include <array>
int main() {
   std::array < double, 2 > x = {1.2,3.4};
   std::array < double, 2 > y = {0.3,0.6};
   x.swap(y);
   std::cout << "x after swap: ";
   for (double num: x) std::cout << num << " ";
   std::cout << "\ny after swap: ";
   for (double num: y) std::cout << num << " ";
   return 0;
}

輸出

以下是上述程式碼的輸出:

x after swap: 0.3 0.6 
y after swap: 1.2 3.4 
array.htm
廣告