假设您正在编写一个接受名为std::initializer_list
的{{1}}的函数,并且该函数需要随机访问list
的元素。写list
代替list[i]
会很方便。那么为什么list.begin()[i]
没有提供std::initializer_list
的定义?
我无法想到任何operator[]
返回operator[]
的定义不明确的情况。效率似乎不是问题,因为const T&
别名为std::initializer_list<T>::iterator
,显然是随机访问迭代器。
答案 0 :(得分:11)
根据Bjarne Stroustrup在C ++编程语言第17版第17.3.4.2节(第497页)中的说明:
不幸的是,initializer_list不提供下标。
没有进一步的理由。
我的猜测是,这是其中一个原因: