请教各位C++高手一段简单的代码,求解释与使用

Daisy__Ben 2013-08-21 08:38:52

#include <list>
class CNodeList: public std::list<CNodeList>
{
public:
CNodeList(){};
int i;
};
CNodeList a;
CNodeList b;
a.push_back(b);

感觉这样写好强大,不知有没有例子
...全文
318 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Daisy__Ben 2013-08-23
  • 打赏
  • 举报
回复
引用 12 楼 hzh_0000 的回复:
在C++编程思想上看到过 当时我感觉很奇怪 怎么自己来实例化别的模版类来作为自己的父类 那一节叫 《奇特的递归模版模式》 我也求解答
sorry,正好刚结贴,同问同问
team79 2013-08-23
  • 打赏
  • 举报
回复
在C++编程思想上看到过 当时我感觉很奇怪 怎么自己来实例化别的模版类来作为自己的父类 那一节叫 《奇特的递归模版模式》 我也求解答
super_admi 2013-08-23
  • 打赏
  • 举报
回复
这是一颗树。相当于: class CNodeList { CNodeList children[]; }
Daisy__Ben 2013-08-23
  • 打赏
  • 举报
回复
引用 9 楼 lm_whales 的回复:
这个时广义表吧!!! 反正不像链表。 每个节点的数据,是一个链表。 难道要做 lisp 编译器???
不敢吹牛,能力有限,只是觉得这个定义非常抽象,接近抽象语言的样子了,在编译器中不就是讲语法吗?差不多template能到这个程度了
lm_whales 2013-08-23
  • 打赏
  • 举报
回复
这个时广义表吧!!! 反正不像链表。 每个节点的数据,是一个链表。 难道要做 lisp 编译器???
Daisy__Ben 2013-08-21
  • 打赏
  • 举报
回复
引用 2 楼 max_min_ 的回复:
[quote=引用 1 楼 mujiok2003 的回复:] 可惜stl中没有一个容易是为了被继承而设计的。
话说stl真的很强大么?工作用的真很少,全是皮毛,所以了解不深 难道是因为我还年轻?[/quote] 慢慢用多了就离不开了。
引用 6 楼 stereoMatching 的回复:
...应该没什么人会这样写,因为stl的containers为了效率 连一个virtual没有,他们原本就不是为了被继承而设计的 如果你要继承也不是不行,但是务必要清楚的了解自己为何这么做 比较不容易让人混淆的手段是"is implemented in terms of"

class CNodeList
{
public:
     CNodeList(){};
     int i;
private:
  std::list<int> list_;
};
或者更简单一点

struct CNode
{
  int a;
  //other data
};

int main()
{
std::list<CNode> nodeList;
CNode nodeA, nodeB;
nodeList.emplace_back(nodeA);
nodeList.emplace_back(nodeB);

return 0;
}
[quote=引用 5 楼 taodm 的回复:] C语言的链表其实不都是这么写的嘛。
c++ is not c[/quote] c++ used template is 牛逼的 c++!
Daisy__Ben 2013-08-21
  • 打赏
  • 举报
回复
引用 5 楼 taodm 的回复:
C语言的链表其实不都是这么写的嘛。
那可是牛逼的无数链表啊(像网格),把list换成其它容器更碉堡了!这简单几行代码居然将数据本身的处理,跟链接结构分开了, 处理数据时当节点处理……
stereoMatching 2013-08-21
  • 打赏
  • 举报
回复
...应该没什么人会这样写,因为stl的containers为了效率 连一个virtual没有,他们原本就不是为了被继承而设计的 如果你要继承也不是不行,但是务必要清楚的了解自己为何这么做 比较不容易让人混淆的手段是"is implemented in terms of"

class CNodeList
{
public:
     CNodeList(){};
     int i;
private:
  std::list<int> list_;
};
或者更简单一点

struct CNode
{
  int a;
  //other data
};

int main()
{
std::list<CNode> nodeList;
CNode nodeA, nodeB;
nodeList.emplace_back(nodeA);
nodeList.emplace_back(nodeB);

return 0;
}
引用 5 楼 taodm 的回复:
C语言的链表其实不都是这么写的嘛。
c++ is not c
taodm 2013-08-21
  • 打赏
  • 举报
回复
C语言的链表其实不都是这么写的嘛。
Daisy__Ben 2013-08-21
  • 打赏
  • 举报
回复
引用 1 楼 mujiok2003 的回复:
可惜stl中没有一个容易是为了被继承而设计的。
似乎模版比c++继承更抽象,俺几乎找不出任何可以对上面代码解释的模式?咱的思维模式是不是要换了?
mujiok2003 2013-08-21
  • 打赏
  • 举报
回复
引用 2 楼 max_min_ 的回复:
[quote=引用 1 楼 mujiok2003 的回复:] 可惜stl中没有一个容易是为了被继承而设计的。
话说stl真的很强大么?工作用的真很少,全是皮毛,所以了解不深 难道是因为我还年轻?[/quote] stl是library, 给实现者/coder用的,确实强大。如果以分析,设计或者测试为主, 自然用的不多。
max_min_ 2013-08-21
  • 打赏
  • 举报
回复
引用 1 楼 mujiok2003 的回复:
可惜stl中没有一个容易是为了被继承而设计的。
话说stl真的很强大么?工作用的真很少,全是皮毛,所以了解不深 难道是因为我还年轻?
mujiok2003 2013-08-21
  • 打赏
  • 举报
回复
可惜stl中没有一个容易是为了被继承而设计的。

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧