这是一个创建于 4257 天前的主题,其中的信息可能已经有所发展或是发生改变。
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++有经验点儿时间,跪谢了!
3 条回复 • 1970-01-01 08:00:00 +08:00
|
|
1
iamduyu 2013-02-23 06:35:59 +08:00 1
执了。 class是数据结构和算法的集合体,仅仅谈数据结构,连class都没有必要用。 STL本身就是数据结构和算法的集合体(vector等等都是数据结构), 其用到了很多c++的特性,是为了有更大的抽象性来适应更多的应用场合, 自己编写的数据结构,够自己用就好。
|
|
|
2
coldear 2013-02-23 06:36:56 +08:00
首先,就像effective c++里面第一条说的一样,c++是个语言的联邦。它包括4个相对独立的部分:C,面向对象的C++,模板,STL。除了第一个,剩下的3个都可以算是“纯的”c++了。
|
|
|
3
coldear 2013-02-23 06:44:06 +08:00
具体用不用模板和STL里面的容器,迭代器和算法要看你的需求,如果只是学习算法或者面试,一般来说就用一些C++面向对象的部分和简单的容器,比如vector。
|