加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 为什么std :: vector erase中需要begin()?

发布时间:2020-12-16 10:06:00 所属栏目:百科 来源:网络整理
导读:为什么我们要编写v.erase(v.begin(),v.begin()3)? 为什么它不被定义为erase(int,int)所以你可以编写v.erase(0,2)并且实现负责begin()s? 解决方法 接口container.erase(iterator,iterator)更通用,适用于没有索引的容器,如std :: list.如果您编写模板并且不
为什么我们要编写v.erase(v.begin(),v.begin()3)?

为什么它不被定义为erase(int,int)所以你可以编写v.erase(0,2)并且实现负责begin()s?

解决方法

接口container.erase(iterator,iterator)更通用,适用于没有索引的容器,如std :: list.如果您编写模板并且不确切地知道代码要处理哪个容器,这是一个优势.

原始设计旨在尽可能通用,迭代器比索引更通用.设计人员可以为vector添加额外的基于索引的重载,但决定不这样做.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读