[英]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
作為比較對象。
和
i
和j
滿足輸入迭代器要求並引用可隱式轉換為value_type
元素,[i,j)
表示有效范圍,
請注意,此處的“和插入元素” 未標記為表示insert
函數,但我想我們可以這樣解釋它。 另請注意, i
和j
是輸入迭代器,因此必須按順序遍歷。
。
(找到這些信息稍微困難一些,因為相同的表格都有
il
指定類型為initializer_list<value_type>
的對象
在它們之上,所以可以通過搜索initializer_list
找到,但是對於這個表,這個單詞被分成兩行,在斷點處有一個連字符。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.