public member function
<utility>

std::pair::operator=

note
// implicitly declared:
copy (1)
pair& operator= (const pair& pr);
copy (1)
pair& operator= (const pair& pr);template <class U, class V>  pair& operator= (const pair<U,V>& pr);
move (2)
pair& operator= (pair&& pr)           noexcept (is_nothrow_move_assignable<first_type>::value &&                     is_nothrow_move_assignable<second_type>::value);template <class U, class V>  pair& operator= (pair<U,V>&& pr);
分配內容
pr 分配為 pair 物件的新內容。

成員 first 被賦值 pr.first,成員 second 被賦值 pr.second

複製形式 (1) 執行復制賦值,其引數的元素在呼叫後保留其值。 而移動形式 (2) 執行移動賦值(如同為每個元素呼叫 forward 一樣),對於支援移動語義的型別的元素,這意味著 pr 的這些元素處於未指定但有效的狀態。

引數

pr
另一個 pair 物件。
這可以是相同型別的物件,也可以是元素型別可以隱式轉換的 pair 型別。

返回值

*this

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// pair::operator= example
#include <utility>      // std::pair, std::make_pair
#include <string>       // std::string
#include <iostream>     // std::cout

int main () {
  std::pair <std::string,int> planet, homeplanet;

  planet = std::make_pair("Earth",6371);

  homeplanet = planet;

  std::cout << "Home planet: " << homeplanet.first << '\n';
  std::cout << "Planet size: " << homeplanet.second << '\n';
  return 0;
}
輸出
Home planet: Earth
Planet size: 6371


資料競爭

訪問所有複製的元素。
物件及其 firstsecond 成員都會被修改。
如果 pr 的任何元件型別支援此賦值的移動語義,則移動賦值 (2) 也會修改 pr

異常安全

如果對 pair 成員執行的任何單個賦值操作都不會丟擲異常,則該函式永遠不會丟擲異常(無丟擲保證)。
否則,如果呼叫了將右值引用作為引數的任何形式,並且 pair 中的至少一種型別可以使用移動語義進行賦值,則該操作可能會將 pair 物件置於無效狀態(無保證)。
否則,該操作保證在發生異常的情況下,所涉及的兩個 pair 物件最終都處於有效狀態(基本保證)。

另見