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

c – string :: insert中不同返回类型背后的原因是什么?

发布时间:2020-12-16 10:30:02 所属栏目:百科 来源:网络整理
导读:Click here看功能.如您所见,除了最后三个之外的所有内容都返回对字符串的引用.第三个最后一个重载返回一个迭代器,我猜测(我可能错了……)是因为参数中的迭代器在插入操作后可能变为无效. 最后两个功能怎么样?为什么他们没有返回对字符串的引用?这背后有什
Click here看功能.如您所见,除了最后三个之外的所有内容都返回对字符串的引用.第三个最后一个重载返回一个迭代器,我猜测(我可能错了……)是因为参数中的迭代器在插入操作后可能变为无效.

最后两个功能怎么样?为什么他们没有返回对字符串的引用?这背后有什么理由吗?

解决方法

这完全是关于历史的. std :: string是C中不应该存在的东西.不是因为C不应该有一个字符串类(当std :: string被处理时它必须有数万个),但是因为C标准化是为了编纂现有的实践,并且没有单一的字符串类仅仅是需要重命名为std :: string才能拥有标准化的字符串类.所以它是“委员会设计”,Stroustrup畏惧的东西,因此,C标准化努力开始避免.
然而,图书馆工作组从未找到他们喜欢的字符串类,因此他们开始创建自己的字符串类,违反了标准化过程的主要基本原则之一.

而且好像这还不够,就在预期的C标准化前几个月,Stroustrup遇到了Stepanov和他的STL.从C标准中尴尬地遗漏了一个容器和算法库,我猜想Stroustrup首先对Stepanov感兴趣. STL虽然看起来很奇怪我们所有人,他们到目前为止只接触过经典的OO图书馆,但却具有将某种(如果是外来的)优雅与效率相结合的独特优势,在这一点上,我们都认为是根本不可组合.
所以Stroustrup游说将STL纳入标准,最终成功,从而推迟了整整一年的标准. (并不是我们今天感谢这个延迟!我的意思是,没有STL,C会是什么?!)
在这个过程中,我们意识到std :: string也是一个容器,所以它通过在其已经相当臃肿的界面上添加一个STL容器接口,追溯性地变成了一个完整的STL容器.

这就是为什么std :: string现在除了那些获取和返回迭代器之外还有函数获取和返回索引.

(编辑:李大同)

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

    推荐文章
      热点阅读