Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.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++ 如何正确使用std::future?_C++_Multithreading_Future - Fatal编程技术网

C++ 如何正确使用std::future?

C++ 如何正确使用std::future?,c++,multithreading,future,C++,Multithreading,Future,我是多线程新手,我正在一个小项目上练习,但我不知道我做错了什么。我想检查是否连接了多个图,每个图都有另一个线程。我有一个使用DFS的类图,它已经可以决定它了,但不是以多线程的方式。这些图来自一个.txt文件,我用它们填充一个向量。这是我的密码: bool IsConnected(Graph gr) { bool visited[gr.graphMap.size()]; for(int i=0; i<gr.graphMap.size(); i++) visit

我是多线程新手,我正在一个小项目上练习,但我不知道我做错了什么。我想检查是否连接了多个图,每个图都有另一个线程。我有一个使用DFS的类图,它已经可以决定它了,但不是以多线程的方式。这些图来自一个.txt文件,我用它们填充一个向量。这是我的密码:

bool IsConnected(Graph gr)
{
    bool visited[gr.graphMap.size()];
    for(int i=0; i<gr.graphMap.size(); i++)
        visited[i] = false;

    gr.DFSUtil(gr.graphMap.begin()->first, visited);
    for(int i=0; i<gr.graphMap.size(); i++)
        if (visited[i] == false)
            return false;

    return true;
}

//...now we're in main()
vector<Graph> graphs;

//n = the number of graphs in the vector
vector<future<bool>> results;
for(int i=0; i<n; i++)
    results.push_back(async(launch::async, IsConnected, graphs[i]));
bool已断开连接(图形gr)
{
布尔访问了[gr.graphMap.size()];
for(int i=0;i第一次访问);

对于(inti=0;iDid是否包含它的标题?是的,我在编写future部分之前就已经开始了!:)
bool访问了[gr.graphMap.size()]在标准的C++中,不允许使用< /COD>,数组维数必须在编译时知道。我想把这个东西传递给函数是造成错误的。为了得到更好的帮助,你需要显示“代码> dfSuthl (最好是后一个MCVE)的定义:DFSUTIL:空格图:DFSUtil(String V,Booal[Acc]);首先,它在迭代器的帮助下计算v在映射中的“索引”。然后,将给定的bool visted[index]元素更改为true。然后,我循环遍历保存v的相关顶点的列表,以相同的方式计算它们在映射中的索引,并检查它们以前是否被访问过。如果没有,则递归调用DFSUtil(*list)->我的问题是,我在windows上使用GNU编译器,它有一个bug或其他什么。在Linux下它工作得很好!