假设您正在编写一个接受名为“list”的std :: initializer_list的函数,并且该函数需要随机访问列表元素。编写list [i]而不是list.begin()[i]会很方便。那么,为什么std :: initializer_list不提供operator []的定义?
我无法想到任何情况下operator []返回const T&不是良好定义的。效率似乎不是这里的问题,因为std :: initializer_list :: iterator别名为const T *,这显然是一个随机访问迭代器。
我无法想到任何情况下operator []返回const T&不是良好定义的。效率似乎不是这里的问题,因为std :: initializer_list :: iterator别名为const T *,这显然是一个随机访问迭代器。
allocator.construct(p, v)
构造块中的元素。虽然列表仍然按顺序处理,但外部 for 循环已经有一个计数器,适合使用operator[]
语法。 - void-pointeruninitialized_copy
会更优雅地完成工作。Brb,我得重构一些代码=) - void-pointer.begin()[N]
就会起作用。 - Yakk - Adam Nevraumont