如何在Qt中使用QConcurrent类

时间:2016-10-08 10:05:06

标签: c++ qt qtconcurrent

我是Qt新手的学生。我开始用Qt Concurrent功能编写这个程序。该程序应该计算一个数字是否发散或收敛到1.我假设如果长度超过100,它就会发散。

这是我的代码

#include <QtConcurrent/QtConcurrentMap>
#include <QFuture>
#include <vector>
#include <iostream>
using namespace std;

bool converges(int &n)
{
   int count = 0;
   while (count < 100 && n > 1)
   {
        if (n % 2 == 0)
        {
           n = n/2;
        }
        else
        {
            n = 3*n+1;
        }
        if(count > 100)
        {
            break;
        }
        count = count + 1;
   }
   if (n = 1 && count <= 100)
       return true;
   else
       return false;
}

int main(int argc, char *argv[])
{
    int N = 1000000;
    vector <int> data;
    for(int i = 0; i < N; i++)
    {
        data.push_back(i);
    }
    QFuture <void> res = QtConcurrent::map(data,converges);
    res.waitForFinished();
    return 0;
}

但是我遇到了构建错误。我出错的任何建议?

这是我一直遇到的错误

  

main.obj:-1:错误:LNK2019:未解析的外部符号“__declspec(dllimport)public:__ thiscall QtConcurrent :: ThreadEngineBase :: ThreadEngineBase(void)”(__ imp _ ?? 0ThreadEngineBase @ QtConcurrent @@ QAE @ XZ)引用在函数“public:__thiscall QtConcurrent :: IterateKernel&gt;&gt;,void&gt; :: IterateKernel&gt;&gt;,void&gt;(class std :: _ Vector_iterator&gt;&gt;,class std :: _ Vector_iterator&gt;&gt;)”( ρ0 $ IterateKernel @ V'$ _ Vector_iterator @ V'$ _ Vector_val @ U&$ _ Simple_types 3 H @ STD @@@ STD @@@ STD @@ @ X @@ QtConcurrent QAE @ V'$ _ Vector_iterator @ V'$ _Vector_val @ U&$ _ Simple_types 3 H @ STD @@@ STD @@@ STD @@ @ 0 Z)

1 个答案:

答案 0 :(得分:2)

正如@Mike回答的那样,将.pro添加到我的{{1}}文件中为我工作。