< p >有没有什么理由让
std :: vector
的 operator []
只返回引用而不是插入新元素? vector :: operator
的cppreference.com页面说 在这里
< blockquote>
与 std :: map :: operator []
不同,此运算符从不在容器中插入新元素。
虽然 map :: operator []
的页面如下所述
“返回映射到等于键的密钥的值的引用,如果不存在这样的键,则执行插入。”
为什么不能通过调用 vector :: push_back
或 vector :: insert
来实现 vector :: operator []
,就像 map :: operator []
一样调用 insert(std :: make_pair(key,T()))。first-&gt; second;
?
std::map::operator[]
的方式已经造成了足够多的混淆。对于访问超出边界的std::vector
来说,UB是可以接受的。 - πάντα ῥεῖsome_vector
的大小为10时写入了some_vector[1000]
会发生什么。嗯,我不知道在中间的990个条目中该想象些什么。 - user2486888std::map::operator[]()
即使只是访问一个不存在的键,也会插入一个元素? - scottbb