V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
platoo
V2EX  ›  程序员

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

  •  
  •   platoo · 2013-02-23 05:54:02 +08:00 · 3032 次点击
    这是一个创建于 4291 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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
    iamduyu
        1
    iamduyu  
       2013-02-23 06:35:59 +08:00   ❤️ 1
    执了。
    class是数据结构和算法的集合体,仅仅谈数据结构,连class都没有必要用。
    STL本身就是数据结构和算法的集合体(vector等等都是数据结构),
    其用到了很多c++的特性,是为了有更大的抽象性来适应更多的应用场合,
    自己编写的数据结构,够自己用就好。
    coldear
        2
    coldear  
       2013-02-23 06:36:56 +08:00
    首先,就像effective c++里面第一条说的一样,c++是个语言的联邦。它包括4个相对独立的部分:C,面向对象的C++,模板,STL。除了第一个,剩下的3个都可以算是“纯的”c++了。
    coldear
        3
    coldear  
       2013-02-23 06:44:06 +08:00
    具体用不用模板和STL里面的容器,迭代器和算法要看你的需求,如果只是学习算法或者面试,一般来说就用一些C++面向对象的部分和简单的容器,比如vector。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   974 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 19:51 · PVG 03:51 · LAX 11:51 · JFK 14:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.