求教:就语法层面,如何才算标准C++实现的数据结构?

2013-02-23 05:54:02 +08:00
 platoo
C++现在还在学习阶段,看完了C++ primer plus。特性都知道,不过具体的使用场景还是模糊,于是就想用C++写一遍数据结构和算法。就说链表,linked list。
我的问题:要怎样实现链表,才算是味道纯正的C++呢?我想到的有以下这几项:
1、使用template来编写 class LinkedList

2、struct Node,需要自带constructor:
Node (const & Object d = Object(), Node * p = NULL, Node * n = NULL)
: data(d), prev(p), next(n){}

3、用iterator来进行访问操作,需要同时提供const_iterator 和 iterator 这两个nested class。

4、对于iterator,需要对++itr; itr++; ==; != 这几项进行运算符重载。
现在能想到的就是这些了,不知道这样实现的C++代码,是否算得上是味道纯正的C++呢?不知道算不算执念,总觉得没有用到以上这些,至多算是用C 加上 STL和C++ library的拼凑。
耽误各位对C++有经验点儿时间,跪谢了!
3069 次点击
所在节点    程序员
3 条回复
iamduyu
2013-02-23 06:35:59 +08:00
执了。
class是数据结构和算法的集合体,仅仅谈数据结构,连class都没有必要用。
STL本身就是数据结构和算法的集合体(vector等等都是数据结构),
其用到了很多c++的特性,是为了有更大的抽象性来适应更多的应用场合,
自己编写的数据结构,够自己用就好。
coldear
2013-02-23 06:36:56 +08:00
首先,就像effective c++里面第一条说的一样,c++是个语言的联邦。它包括4个相对独立的部分:C,面向对象的C++,模板,STL。除了第一个,剩下的3个都可以算是“纯的”c++了。
coldear
2013-02-23 06:44:06 +08:00
具体用不用模板和STL里面的容器,迭代器和算法要看你的需求,如果只是学习算法或者面试,一般来说就用一些C++面向对象的部分和简单的容器,比如vector。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/61116

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX