我正在尝试用 C++ 编写一种树状结构。就像每棵树都有树枝和树叶一样。一个分支可以包含其他分支以及叶子。现在我的实现要求每个分支和叶子具有不同的功能。举个例子。取树形结构
Root
| |
Branch1 Branch2 Branch3
| | |
Leaf1 Leaf2 Branch4
现在每个叶子和分支都有一个不同的函数来执行,所以叶子1将有一个名为leaf1_func的函数,叶子2将有一个叶子2_func,分支4有一个分支4_func。
我最初试图实现复合设计模式。但这意味着我将拥有与叶子一样多的课程。但由于我有大量的树叶和树枝,我想避免创建更多的课程。我意识到这是一个不寻常的情况,但希望有人能在这方面帮助我。在不创建太多类的情况下实现这棵树的最佳方法是什么。
我也在使用 map STL 容器来存储数据,我想使用这个树实现来解决 TSP 问题中的这个问题。
#include <cstdlib>
#include <iostream>
#include <map>
using namespace std;
int n=4;
int min=1, max=10;
struct graph
{
int nodes;//total no. of nodes or vertices namely cities
std::map<std::pair<int,int>, int> graphMap;//an object that links a pair of vertices
};
void directed_Graph(graph);
void directed_Graph(graph G)
{
//int n = G->nodes; //city count
int i, j;
for(i = 0; i <= n-1; i++)
{
for(j = 0; j <= n-1; j++)
{
if(i!=j)
{
G.graphMap[std::make_pair(i,j)] = (rand()%10)+1;
//cout<<G.graphMap[std::make_pair(i,j)]<<"\n";
}
else
{
G.graphMap[std::make_pair(i,j)] = 0;
}
}
}
}
int main(int argc, char** argv)
{
graph g;
g.nodes = 4;
directed_Graph(g);
return 0;
}