可达性节点C++
我有一张无序的地图,像这样:可达性节点C++,c++,C++,我有一张无序的地图,像这样: std::unordered_map<std::string, std::string> vertices; std::vector<std::string> reached; for (auto it = vertices.begin(); it != vertices.end(); it++) { for (auto x = vertices.begin(); x != vertices.end(); x++) {
std::unordered_map<std::string, std::string> vertices;
std::vector<std::string> reached;
for (auto it = vertices.begin(); it != vertices.end(); it++)
{
for (auto x = vertices.begin(); x != vertices.end(); x++)
{
if (it->second == x->first)
{
reached.push_back(it->second);
//not really sure what to do after?
}
}
}
用户将能够指定源节点,在本例中为E,并从那里开始。输出将如下所示
A - E D B A
B - E D B
C - E D B C
D - E D
E - E
F - E F
G - E G
我应该创建一个向量并跟踪所有到达的节点吗?但对于每一个字母,我将如何区分它们进入了哪些节点?例如,如果A可以读取E D B A,我将它们放入一个向量中,该向量将包含A的可达性,而我将无法再放入其他可达性节点中,因为它们将把一切都搞糟
我试着这样开始:
std::unordered_map<std::string, std::string> vertices;
std::vector<std::string> reached;
for (auto it = vertices.begin(); it != vertices.end(); it++)
{
for (auto x = vertices.begin(); x != vertices.end(); x++)
{
if (it->second == x->first)
{
reached.push_back(it->second);
//not really sure what to do after?
}
}
}
我对C++很陌生,所以我真的不知道如何处理这个问题…我真的很困惑。谢谢。我想您首先需要选择一个更好的结构来保存结果。我看不出如何打印std::vector的预期输出,也许可以使用vector的vector或更有效的结构。然后你可以在algo上工作,关心无限循环