public member function
<vector>

std::vector::swap

void swap (vector& x);
交換內容
交換容器的內容和 x 的內容,x 是另一個同類型的 vector 物件。大小可能不同。

呼叫此成員函式後,此容器中的元素將是呼叫前 x 中的元素,而 x 中的元素將是此容器中的元素。所有迭代器、引用和指標在交換後的物件中仍然有效。

請注意,存在一個同名非成員函式 swap,它透過一個最佳化行為類似於此成員函式的演算法過載了該演算法。

關於 allocator 無具體說明。 [矛盾的說明]
容器的 allocator 是否也被交換未定義,除非在適當的 allocator traits 明確指示它們應 傳播 的情況下。

要放回的字元的boolvector 的特化提供了此函式的附加過載(請參閱 vector<bool>::swap)。

引數

x
同類型的另一個 vector 容器(即,使用相同的模板引數例項化,TAlloc)其內容與此容器的內容交換。

返回值



示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// swap vectors
#include <iostream>
#include <vector>

int main ()
{
  std::vector<int> foo (3,100);   // three ints with a value of 100
  std::vector<int> bar (5,200);   // five ints with a value of 200

  foo.swap(bar);

  std::cout << "foo contains:";
  for (unsigned i=0; i<foo.size(); i++)
    std::cout << ' ' << foo[i];
  std::cout << '\n';

  std::cout << "bar contains:";
  for (unsigned i=0; i<bar.size(); i++)
    std::cout << ' ' << bar[i];
  std::cout << '\n';

  return 0;
}

輸出
foo contains: 200 200 200 200 200 
bar contains: 100 100 100 


複雜度

常量。

迭代器有效性

指向兩個容器中元素的 所有迭代器、指標和引用在呼叫後都保持有效,並且現在指向呼叫前它們所指向的相同元素,但位於另一個容器中,它們現在會遍歷。
請注意,end iterators 不指向元素,並且可能會失效。

資料競爭

容器和 x 都被修改。
呼叫不訪問任何包含的元素(儘管請參閱上文的iterator validity)。

異常安全

如果兩個 vector 中的 allocators 比較相等,或者它們的 allocator traits 指示 allocators 應 傳播,則該函式永遠不會丟擲異常(無異常保證)。
否則,將導致未定義行為

另見