首页 > 感觉C++好坑,不适合作为数据结构和算法的实现啊

感觉C++好坑,不适合作为数据结构和算法的实现啊

我知道问题比较傻逼。

情况是这样的,我们学校用C++作为数据结构的实现语言。
然后,我写的很痛苦。原因很简单、我对这个语言不熟。但当我请教一个比较熟的人的时候,面对template+友元+stl的类库,我基本就残了。

我发现C++的细节实在好多。作为数据结构跟算法的实现,我感觉我的大部分时间花费在语法上面了。
当然我知道我的语法不熟是个重点。但是,跟其他语言相比它实在、有些麻烦

为什么还是选它做教材?

---|---|---|---|---|---|---|--
首先感谢一下回答者
我再完善一下问题。

我的老师,基本是给个头文件。让我们实现,其中包括template,friend,这个确实不能算特性多。不过这两个真的有点复杂。。我在考虑自己用C实现,不过有点顾虑考试是C++的。

现在的情况是,都说数据结构重要,得好好学。但是在学什么呢?算法那部分我能感受的到。
但是数据结构,真的模糊啊。学的应该是怎么将实际问题中的数据,抽象成通用方便的,有组织的数据吧?这个应该是解决实际问题的一部分吧?

看到几个网友提到了python,ruby对于数据结构的要求问题。我觉得如果说“数据结构”,只有链表,堆栈什么的,那我没话说。
但是看定义“数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成”(百度百科的)

我觉得数据结构学的应该是怎么整理数据,把它结构的化的一种理论,然后这种理论显然应该基于大量实践。
而上课给我的感觉,就是照书来,有些数据结构,真的是感觉生搬硬套的用某种东西。


其实这个问题更多的是在想讨论教育问题。
我感觉教材选用C++或者还有些是用java,是因为用的人多,工业界需要,而不是这个语言真的完全适合拿来讲计算机的理论。

而大多数的回答者是在批评我没有好好学习C++、没有好好看书。理由集中在C++和C很好了。
当然我之前的表述是很糟糕。而大家的意图就变成了,如何帮我好好完成那门课。
其实这个问题更像,“哪个语言是世界上最好的语言”,不过在这儿就是哪个语言是最适合用来教"数据结构"的。


还行吧, 用C++学习的数据结构。。 不行就用int和string配合着意思下, 少用template, friend这种高级特性就是了。 还不是 可以 可以解决问题。 学习用, 又不是写库。


数据结构就是在一大块内存上玩的游戏.
C语言玩数据结构才叫过瘾, 其他的都弱暴了.

而真正在实战上用到的语言, 比如python, ruby等, 已经不会在数据结构上要求你那么多了.


我觉得学习算法和数据结构,推荐的语言就是c了,你的想法没有错。c++我不熟,但是你可以不用那些高级特性啊,至少面向过程部分是差不多的吧。


楼主补充那些说的有道理,数据结构不是专指链表这类东西,这类东西可以算是数据结构的基本构成元素,掌握这些东西对设计实现数据结构很有帮助。但是实战中的数据结构是千变万化的,是面向具体问题的,仅仅掌握这些基本构成元素还远远不够,还需要你在对实际问题有深刻理解基础上进行建模


同意三楼的答案,数据结构很少用到C++的特性。你可以考虑忘记那些特性的东西。就当是一个C一样的用就可以了。


数据结构的话应该是基本只用上了C++中C语言的那一部分面向过程的特性,就当C用就好了~


我就说一下自己学习的体会吧,在oj刷题的时候用c++还是比c要简单一点的,因为c++提供了标准库,还有在一些
题目中使用自定义类的面向对象过程会比较简单。首先你不必担心考试时用c++而不敢用c嘛,毕竟在c++的oj上提交c代码也一样能ac。如果你希望能将数据结构学扎实,同时对一些标准库的底层实现有更加深入的理解,推荐用c来实现书本上的代码,绝对是受益匪浅。另外推荐一本书《Mastering Algorithms with C》,O'REILLY的书


面向过程才是王道~


问题在于 想的是学习数据结构与算法,而行动上在实践项目,忘记模板友元stl,只用c++ 中 属于 c 的那块


我觉得学校学数据结构,有点重新发明轮子的味道。事实上有STL,好好应用就好了嘛。我也觉得C++语法过于复(dan)杂(teng),当年我们学校是用绿皮的王红梅等人编著的《数据结构(C++版)》,不过还好这本不怎么难,基本上给出了数据结构最轻量级的实现,但是工业界的人来看一定是太学院,太toy了。其他的一些国外教材,比如《数据结构与算法分析(C++版)》(Cliff A.Shaffer)里面的实现就比较接近工业界一些。我现在转到Java了,可能因为我也是个间歇性语法障碍症患者吧。据说,相同的功能C++要100行,java要50行,Python要20行。


我们打ACM的时候。。。基本都用的C++,ACM比赛里的数据结构已经足够复杂和偏门了,C++表现的都 很完美(你要说ACM的代码用不到实现工程上这个我承认,但是改起来也不是什么太大的工程)。。。我觉得LZ需要的是足够的实践,而不是费时间找一种新的语言来。。。

一点浅见,轻拍 :-)


数据结构课程里没有用到C++的高级特性吧,只是相当于一个稍微方便一点的C语言罢了,用C/C++能看到数据是怎样真实地在物理区域存储的,这都不适合学习数据结构还有什么语言适合?


你仔细看教材的话,就会发现其实使用C++作为描述的数据结构教材里并没有用到太多的C++语言特性。这个问题实际上是出在某些C++程序员身上(比如你的朋友),有些人一旦了解(有时甚至并不完全理解)了某些特性以后,很有可能会大量使用这些特性,几乎不考虑别人是否能看懂。“如果一个工具很好用,那么它一定会被滥用”。这也正是Linus所说的“C++是一门很恐怖的语言,而比它更恐怖的是很多不合格的程序员在使用着它”。

【热门文章】
【热门文章】