C++ 如何正确使用std::future?
我是多线程新手,我正在一个小项目上练习,但我不知道我做错了什么。我想检查是否连接了多个图,每个图都有另一个线程。我有一个使用DFS的类图,它已经可以决定它了,但不是以多线程的方式。这些图来自一个.txt文件,我用它们填充一个向量。这是我的密码: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
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下它工作得很好!