C++ 什么';cplusplus.com有什么问题吗?

C++ 什么';cplusplus.com有什么问题吗?,c++,C++,这也许不是一个完全适合这个问题的论坛,但让我试一试,冒着被转移的风险 < > C++标准库中有几个引用,包括非常宝贵的ISO标准,以及。就个人而言,编写C++时需要一个具有快速随机访问、短加载时间和使用示例的引用,并且我发现CPLUS PLSUSSO非常有用。然而,我在这里经常听到关于该网站的负面意见,所以我想具体说明: cplusplus.com给出的错误、误解或错误建议有哪些?使用它来做编码决策有什么风险 让我补充一点:我希望能够在这里用标准的准确引用回答问题,因此我想发布立即可用的链接,如

这也许不是一个完全适合这个问题的论坛,但让我试一试,冒着被转移的风险

< > C++标准库中有几个引用,包括非常宝贵的ISO标准,以及。就个人而言,编写C++时需要一个具有快速随机访问、短加载时间和使用示例的引用,并且我发现CPLUS PLSUSSO非常有用。然而,我在这里经常听到关于该网站的负面意见,所以我想具体说明:

cplusplus.com给出的错误、误解或错误建议有哪些?使用它来做编码决策有什么风险


让我补充一点:我希望能够在这里用标准的准确引用回答问题,因此我想发布立即可用的链接,如果不是因为这个问题,cplusplus.com将是我的首选网站。

编辑:自编写此答案以来,
std::remove
的文档已经修复。同样的事情也适用于
list::remove

让我给你举个例子来说明cpluscplus.com是如何出错的

考虑从
中删除
函数:

但是
cplusplus.com
提供了有关
std::remove
的错误信息

请注意,此函数不会改变经过新端点的图元,新端点保持其旧值,并且仍可访问

这是不对的。范围
[new\u end,old\u end)
中的迭代器仍然是可取消引用的,但这并不意味着它们保留旧值并且仍然可以访问。它们是未指定的


类似地,
cplusplus.com
也提供了有关
list::remove
的错误信息

请注意,存在一个全局算法函数remove,其行为类似,但在两个迭代器之间运行

这是完全错误的。全局删除即
std::remove
list::remove
不同,因为我们看到前者不会真正从容器中删除项,因为它不能,而后者(成员函数)确实会删除项,因为它可以

此答案摘自我在以下主题中的另一个答案,几乎没有修改:

注意:因为我最近在回答上述主题时遇到了这个问题,所以我记得它。在过去两年中我遇到了很多错误,我不记得了。如果我再次遇到,我可能会补充一些错误。

没有提到“如果复制发生在重叠的对象之间,则行为是未定义的。”(C89标准中的4.11.2.4。我手头没有C90的副本,这是C++03实际上所指的,但它们应该只在页码等方面有所不同。)cplusplus.com提供的文档通常不正确或不完整。

一旦创建了这样的示例,cplusplus.com上的
atoi
文档就可以了


在返回部分中,如果在使用函数时无法执行转换,则不会提及0返回值

cplusplus.comReturn部分声明“…如果转换的值超出可表示值的范围,则会导致未定义的行为。”

这是正确的,根据标准“如果字符串的数值不能用int表示,那么行为是未定义的”

但是,该部分不完整,因为它没有提到0作为返回值,这可能会产生误导。在前面的描述段落中会出现短语“…不执行转换,并且返回零”,但必须将其包含在返回部分中

cplusplus.com上提供的许多示例源代码不正确。
许多查阅这些参考资料的新手都会犯巴拉特错误

举一个例子:


编辑:我之前引用的例子是不正确的。

我将提供一个稍微相反的观点。cplusplus.com上有很多好的信息。把它挑到死,是的,它当然有它的问题,但哪个网站没有?当然不是这个网站。住在玻璃房子里的人不应该扔石头。有很多这里也有错误的信息。有被接受的答案是完全错误的,被否决的答案(有些是否定的!)是正确的

cplusplus.com的一个问题是它是一个封闭的网站;提到的大多数其他参考网站也是如此。这与Stack Overflow等社区开发网站的特点背道而驰。获得可信编辑的能力并不需要很长时间,即使是最新的新手也可以很容易地提出改进建议与cpluplus.com相比,如果你不在他们的员工中,你就是一个永远的新手。即使你是WG21的关键成员,如果你在该网站的某个地方看到bug,你也必须通过他们的电子邮件报告机制。讨厌


一个解决办法是让我们在这个网站上开发我们自己的C++参考。这需要相当多的工作。我们必须小心不要太迂腐/太技术化,很明显,CPLUPLPLUS至少雇佣了一些技术人员来保持学究的地位。我们必须保持信息的组织有序;这里的常见问题是N。组织得很好。我们还必须非常小心,不要直接从标准中说出太多内容;这是非法的。

关于
type\u info
的文档试图首先解释
typeid
,但失败了:

typeid可以直接应用于 类型,在这种情况下,它将返回 信息;或对象,其中 case返回有关
 v.erase(std::remove(v.begin(), v.end(), 10), v.end());