Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可达性节点C++_C++ - Fatal编程技术网

可达性节点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上工作,关心无限循环