1
我试图做一个程序,探索未知大小的无向图,并建立一个邻接列表。通常我会做一个set<set<String>>
(房间由一个字符串标识),但我被告知这在C++中是不稳定的。什么会是更好的数据结构?一个未知大小的无向图的C++数据结构
我试图做一个程序,探索未知大小的无向图,并建立一个邻接列表。通常我会做一个set<set<String>>
(房间由一个字符串标识),但我被告知这在C++中是不稳定的。什么会是更好的数据结构?一个未知大小的无向图的C++数据结构
这取决于您以后如何查询信息。
我可以建议两种选择:
using namespace std;
set< pair<string,string> >
或
using namespace std;
multimap<string,string>
在第一种情况下set
,你可以检查,如果两个节点连接,但你需要知道两个节点(A和B )来运行查询。在第二种情况multimap
中,在给定节点A的情况下,您可以轻松获得所有相邻节点的迭代器。
您需要插入两个对或使用某些规则,例如始终按字典顺序添加边。
稳定性为什么重要? (虽然我不确定我不知道如何确定它是如何构成邻接列表的 - 你如何看待其中的任何东西?当然,外部结构应该是一个“地图”或“矢量”,或者你可以索引到?) –