C++标准库 - 何时应该使用它,何时不应该使用它?

Rus*_*sel 36 c++ algorithm header

我想知道人们实际使用大部分标准c ++库的频率,特别是<algorithm><numeric>标题中的东西.教科书似乎推荐它们,但是我没有看到它们在我筛选过的各种项目中都使用过(巧合?)而且个人似乎每次都自己编写适当的简单算法而不是记忆或者更容易每次都参考这些标题的参考.我只是懒惰或顽固?使用这些库时,实际上是否有性能提升等?

谢谢,

[R

Joh*_*ing 45

你可能会变得懒惰或顽固.就个人而言,我一直在生产代码中使用它们.

我不喜欢这样做,我不这样做,因为我喜欢写"太空时代码".相反,我之所以这样做是因为我是一个偏执的程序员,而且我知道生产环境是一个充满敌意的地方,如果有机会的话,会破坏代码并减少我的程序,以吸取成堆的无用字节.

我这样做是因为我的座右铭是"最好的代码,就是你从未写过的代码." 这需要时间来学习如何使用STL和标准库有效,但一旦你做,你会发现它可以使用,因此,现在是什么1000行代码变为100或者100的那些可能采取只要是写原来1000,但失败点较少.如果你站在别人的肩膀上,代码可以更强大.

  • 这看起来几乎适用于任何常见的库,而不仅仅是STL. (14认同)
  • "如果有足够的眼球,所有的虫子都很浅".与几乎任何其他C++项目相比,STL确实有更多的眼球. (6认同)
  • 确实如此,但这取决于相关公共库的资格和文档 (2认同)

Cra*_*lus 8

你应该尽可能多地使用stl.
它是由非常复杂的程序员编写的,你不太可能编写任何stl内容的更优化版本.
不要重新发明轮子

  • ...它使用了正确的类型,如`size_t`,`ptrdiff_t`等.我刚发现Qt使用`int`作为容器大小,这意味着它在x86_64上不是64位清理. (2认同)

Pet*_*der 6

只是使用C++使用STL的每个人,尤其是 <algorithm>.你真的不想自己编写排序函数; 你最终会犯错误,最终表现可能会更糟.

是否有性能提升显然取决于你所比较的.一般来说,使用STL算法通常比编写自己的函数更快 - 除非你碰巧有一个适用于你的用例的特殊技巧,可以给你带来优势.如果您自己编写一个标准的快速排序,它可能会慢于STL中的标准快速排序.