什么是下面提到的问题的最佳算法.
打印出树的名称和生成的实现方法PrintFamilyTree()
输出应该类似于
名称:Jan生成:0
名称:Mike生成:1
名称:Greg生成:2
名称:Carol:生成:2
名称:Peter生成:3
名称:Marcia Generation:3
名称:Bobby Generation:1
class Human : public std::vector<Human *>
{
public:
Human(const std::string &name) : m_Name(name) {};
virtual void PrintFamilyTree(const short &generation = 0) const;
protected:
std::string m_Name;
};
class Male: public Human
{
public:
Male(const std::string &name) : Human(name) {};
};
class Female: public Human
{
public:
Female(const std::string &name) : Human(name) {};
};
void main()
{
Male m1("Mike"), m2("Greg"), m3("Peter"), m4("Bobby");
Female f1("Carol"), f2("Marcia"), f3("Jan");
m1.push_back(&m2);
f1.push_back(&m3);
f1.push_back(&f2);
m1.push_back(&f1);
f3.push_back(&m1);
f3.push_back(&m4);
f3.PrintFamilyTree();
}
Run Code Online (Sandbox Code Playgroud)
class Human : public std::vector<Human *>
Run Code Online (Sandbox Code Playgroud)
不是一个好主意 - STL容器通常不是为了派生而设计的.想想遏制而不是继承.
void main()
Run Code Online (Sandbox Code Playgroud)
main返回一个int.总是.
这看起来像一个直截了当的问题.想想树状结构.您可能希望将正在使用的容器(即vector)更改为更合适的容器.
请注意,你的问题有点像家庭作业,所以回复很少!