簡體   English   中英

std :: map初始化列表構造函數

[英]std::map initializer list constructor

C ++標准使用std::initializer_list定義了一個std::map構造std::initializer_list

map( std::initializer_list<value_type> init, const Allocator& );

但是,在哪里定義了初始化程序列表包含重復鍵時會發生什么? 是第一個選擇鍵還是最后一個? 例如:

std::map<std::string, int> my_map {
  {"a", 1}, 
  {"a", 2}
};

在實踐中,它看起來像insert() ,因此地圖現在將包含{a:1}。

但是,我無法在C ++標准中找到任何關於此的內容。

N4296(~C ++ 14)

表102 - 關聯容器要求

X(il); | X(il.begin(), il.end())相同X(il.begin(), il.end())

然后從表中的上方,對於迭代器ctor:

效果:構造一個空容器並將范圍[i, j)元素插入其中; 使用c作為比較對象。

ij滿足輸入迭代器要求並引用可隱式轉換為value_type元素, [i,j)表示有效范圍,

請注意,此處的“和插入元素” 標記為表示insert函數,但我想我們可以這樣解釋它。 另請注意, ij輸入迭代器,因此必須按順序遍歷。

(找到這些信息稍微困難一些,因為相同的表格都有

il指定類型為initializer_list<value_type>的對象

在它們之上,所以可以通過搜索initializer_list找到,但是對於這個表,這個單詞被分成兩行,在斷點處有一個連字符。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM