下面提到的问题的最佳算法是什么。
实现方法 PrintFamilyTree() 打印出树的名称和世代
输出应该类似于
姓名:简 世代:0
姓名:Mike 世代:1
姓名:格雷格世代:2
姓名:卡罗尔:世代:2
姓名:彼得世代:3
姓名:玛西娅世代:3
姓名:鲍比世代: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();
}
最佳答案
class Human : public std::vector<Human *>
这不是个好主意——STL 容器通常不是为派生而设计的。考虑包含而不是继承。
void main()
main
返回一个 int
。总是。
这看起来是一个简单的问题。想想树状结构。您可能希望将正在使用的容器(即 vector
)更改为更合适的内容。
请注意,您的问题闻起来很像家庭作业,所以几乎没有回复!
关于c++ - vector 问题的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1788357/