请教各位C++高手一段简单的代码,求解释与使用
#include <list>
class CNodeList: public std::list<CNodeList>
{
public:
CNodeList(){};
int i;
};
CNodeList a;
CNodeList b;
a.push_back(b);
感觉这样写好强大,不知有没有例子 C++ 类
[解决办法]
可惜stl中没有一个容易是为了被继承而设计的。
[解决办法]
话说stl真的很强大么?工作用的真很少,全是皮毛,所以了解不深
难道是因为我还年轻?
[解决办法]
stl是library, 给实现者/coder用的,确实强大。如果以分析,设计或者测试为主, 自然用的不多。
[解决办法]
C语言的链表其实不都是这么写的嘛。
[解决办法]
...应该没什么人会这样写,因为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;
}
C语言的链表其实不都是这么写的嘛。
c++ is not c
[解决办法]
这个时广义表吧!!!
反正不像链表。
每个节点的数据,是一个链表。
难道要做 lisp 编译器???
[解决办法]
这是一颗树。相当于:
class CNodeList
{
CNodeList children[];
}