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