如何在 Qt 中使用 QConcurrent class

How to work with QConcurrent class in Qt

我是刚接触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: error: LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QtConcurrent::ThreadEngineBase::ThreadEngineBase(void)" (__imp_??0ThreadEngineBase@QtConcurrent@@QAE@XZ) referenced in function "public: __thiscall QtConcurrent::IterateKernel > >,void>::IterateKernel > >,void>(class std::_Vector_iterator > >,class std::_Vector_iterator > >)" (??0?$IterateKernel@V?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@H@std@@@std@@@std@@X@QtConcurrent@@QAE@V?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@H@std@@@std@@@std@@0@Z)

正如@Mike 的回答,将 QT += concurrent 添加到我的 .pro 文件对我有用。