为什么std::initializer_list<T>::iterator
定义为裸指针T const*
而不是random_access_iterator
概念?
问问题
202 次
1 回答
5
原因可能是来自标准的这个小花絮
第 18.9 节
initializer_list 类型的对象提供对 const E 类型的对象数组的访问。 [注意:一对指针或一个指针加上一个长度将是 initializer_list 的明显表示。initializer_list 用于实现 8.5.4 中指定的初始化列表。复制初始化列表不会复制底层元素。——尾注]
这表明初始化器列表在复制时将具有指针语义而不是值语义,这可能就是为什么它们的迭代器直接是指针而不是包装成“随机访问迭代器”类型的原因。
AFAIK 这是唯一的标准“容器”(注意这里的引号),具有指针语义而不是值语义。
于 2013-07-08T01:32:32.613 回答