继续使用高级C++的最佳方法是什么?

Fan*_*c23 9 c++ programming-languages

对于那些可能被称为中级C++程序员的人来说,你有什么建议转向下一级C++编程?

中级程序员:合理地理解ISO C++,能够运气好读取和修改其他代码,很好的数据结构和算法但不是很好

  1. 学习C++ 0x
  2. 了解为不同的构造类型生成哪种汇编代码,可能是x86
  3. 忘记语言的细微差别并从Sipser或Papadimitriou这样的地方获得基础知识 - 自动机理论
  4. 如果你知道OOP或至少认为你这样做,请考虑如何将功能编程技巧与C++结合起来
  5. 在编译器和开源(如LLVM或GNU工具链)上处理某些事情
  6. 整个想法被破坏 - 下一级意味着更复杂的数据结构.因此,如果您了解AVL,请考虑学习左倾红黑树等

现在显然没有人可以在没有优先级的情况下完成此列表中的所有操作,因此我们需要一些关于可能是最佳前进方向的建议.

注意:谢谢大家的非常有帮助的回复.

Jer*_*fin 14

我会说你可以在列表上做所有事情,但不是一次全部.至少IMO,你看起来有些倒退了.学习C++(或任何其他语言)是达到目的的手段,而不是目的本身.

学习更高级的语言技术,更先进的数据结构等,应该在完成某些事情时根据需要进行.你当然需要一个合理的起始"基础"来做很多事情,但除了一小部分基础知识外,大多数先进技术,数据结构等也是相对专业的.

写一些代码,而不是试图为它自己学习一些东西.当某些东西看起来笨拙,不必要的困难,不灵活等等时,找到一种更好的方法来处理它.通过这种方式,您不仅可以学习更高级的技术,数据结构等,还可以了解它真正实现的目标,这样您就可以很好地了解何时,如何以及为何使用它(以及同样重要的是,至少有一些关于其局限性的想法以及它何时可能适用或有用.


小智 9

回答您的具体问题:

学习C++ 0x

你肯定需要这样做.所以你可能在那里有你的答案......

了解为不同的构造类型生成哪种汇编代码,可能是x86

我会说学习如何理解编译器生成的汇编语言,如果不是详细的话.但是,你当然不应该试图预测编译器会做什么.

忘记语言的细微差别并从Sipser或Papadimitriou这样的地方获得基础知识 - 自动机理论

如果它让你开启,我想......

如果你知道OOP或至少认为你这样做,请考虑如何将功能编程技巧与C++结合起来

在C++支持的所有范例中,函数式编程可能是最差的 - 如果你想学习FP,学习Haskell(或其他),而不是C++.

在编译器和开源(如LLVM或GNU工具链)上处理某些事情

GNU是用C语言编写的,所以它不太可能提高你的C++技能 - 我对LLVM知之甚少.

整个想法被破坏 - 下一级意味着更复杂的数据结构.因此,如果您了解AVL,请考虑学习左倾红黑树等

RB树并不比AVL树复杂得多 - 相同的基本概念.如果您了解数据结构教科书中涵盖的基本结构,我认为不需要进一步挖掘,除非该主题特别引起您的兴趣.


Rod*_*ddy 8

我会了解BOOST.

你可以通过使用它来开始零碎,随着你对图书馆的深入了解,你会发现自己在想"这有什么作用?".

  • 使用它将使您成为更高效和更好的C++程序员!
  • 了解它的工作原理将为您带来"大师"徽章!
  • 贡献并扩展它将确保永生!