133*_*nja 4 c++ dictionary stl vector
有没有任何理由std::vector的operator[],只是返回一个引用而不是插入一个新的元素呢?cppreference.com页面在这里vector::operator说
与
std::map::operator[]此不同,此运算符永远不会将新元素插入容器中.
虽然页面map::operator[] 说
"返回对映射到等效于键的键的值的引用,如果此类键尚不存在则执行插入."
为什么无法vector::operator[]通过调用vector::push_back或vector::insert如何map::operator[]调用来实现insert(std::make_pair(key, T())).first->second;?
很简单:因为它没有意义.你能指望什么
std::vector<int> a = {1, 2, 3};
a[10] = 4;
Run Code Online (Sandbox Code Playgroud)
去做?即使您指定索引10,也要创建第四个元素?创建元素3到10并返回对最后一个的引用?两者都不是特别直观的.
如果你真的想使用operator[]代替值来填充矢量push_back,你可以resize在设置它们之前调用矢量来创建元素.
编辑:或者,如果你真的想要一个关联容器,除了排序之外索引很重要,std::map<int, YourData>实际上可能更有意义.