Why std::initializer_list<T>::iterator
被定义为裸指针T const*
而不是一个random_access_iterator
概念 ?
原因可能是来自标准的这个小花絮
第 18.9 条
类型initializer_list的对象提供对数组的访问
const E 类型的对象。 [ 注:一对指针或一个指针加
长度是初始化器列表的明显表示。
initializer_list 用于实现指定的初始值设定项列表
在 8.5.4 中。复制初始值设定项列表不会复制底层
元素。 ——尾注]
这表明初始值设定项列表在复制时将具有指针语义而不是值语义,这可能就是为什么它们的迭代器是直接指针而不是包装成“随机访问迭代器”类型的原因。
AFAIK这是唯一的标准“容器“(注意这里的引号),具有指针语义而不是值语义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)