gpt4 book ai didi

c++ - std::map 初始化列表构造函数

转载 作者:可可西里 更新时间:2023-11-01 15:23:56 38 4
gpt4 key购买 nike

C++ 标准使用 std::initializer_list 定义了一个 std::map 构造函数:

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

但是,如果初始化列表包含重复键,会发生什么情况?是选择第一个键还是最后一个?例如:

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

在实践中,它似乎表现得像 insert(),因此 map 现在将包含 {a: 1}。

但是,我无法在 C++ 标准中找到与此相关的任何内容。

最佳答案

N4296(~C++14)

Table 102 - Associative container requirements

X(il); | Same as X(il.begin(), il.end()).

然后从上面的表中,对于迭代器构造函数:

Effects: Constructs an empty container and inserts elements from the range [i, j) into it; uses c as a comparison object.

i and j satisfy input iterator requirements and refer to elements implicitly convertible to value_type, [i,j) denotes a valid range,

请注意,此处的“并插入元素”标记为表示 insert功能,但我想我们可以这样解释它。另请注意 ij输入迭代器,所以必须按顺序遍历。

.

(这个信息稍微难找一些,因为对应的表都有

il designates an object of type initializer_list<value_type>

在它们之上,因此可以通过搜索 initializer_list 找到, 但对于此表,该词分为两行,中间有一个连字符。)

关于c++ - std::map 初始化列表构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41184180/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com