gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 19:44:30 28 4
gpt4 key购买 nike

Click here查看功能。如您所见,除了最后三个之外,所有的都返回对字符串的引用。最后第三个重载返回一个迭代器,我猜(我可能错了......)是因为参数中的迭代器在插入操作后可能变得无效。

最后两个函数呢?为什么他们不返回对字符串的引用?这背后有什么原因吗?

最佳答案

这都是关于历史的。 std::string 是 C++ 中根本不应该存在的东西。不是因为 C++ 不应该有一个字符串类(当处理 std::string 时它一定有数万个),而是因为 C++ 标准化是为了编码 existing practice,并且没有任何一个字符串类只需重命名为 std::string 即可拥有标准化的字符串类。所以它是“由委员会设计”,这是 Stroustrup 所害怕的,因此,C++ 标准化工作着手避免。
然而,图书馆工作组从未找到他们喜欢的字符串类,因此他们开始创建自己的字符串类,这违反了标准化过程的主要基本原则之一。

似乎这还不够,就在预期的 C++ 标准化前几个月,Stroustrup 遇到了 Stepanov 和他的STL。令人尴尬的是,C++ 标准中缺少一个容器和算法库,我猜这正是 Stroustrup 首先对 Stepanov 感兴趣的原因。 STL,虽然对我们所有人来说都很奇怪,到目前为止我们只接触过经典的 OO 库,但它具有结合某些(如果是外来的)组合的独特优势strong>优雅与高效,当时我们所有人都认为两者根本不可兼得。
因此 Stroustrup 游说将 STL 纳入标准,并最终成功,从而将标准推迟了大概一整年。 (我们难道不感谢今天的延迟吗!我的意思是,如果没有 STL,C++ 会怎样?!)
在这个过程中,意识到std::string也是一个容器,所以追溯成一个成熟的STL通过添加一个 STL 容器接口(interface) 到它已经相当臃肿的接口(interface)。

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

关于c++ - string::insert 中不同返回类型背后的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7458200/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com