Qtを初めて使う学生です。私はこのプログラムをQt Concurrent機能でコーディングし始めました。プログラムは、数値が1に収束するか収束するかを計算することになっています。長さが100を超えると、それは発散します。QtでQConcurrentクラスを操作するには
は、これは私のコード
#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;
}
あるしかし、私はエラーを構築し得ます。私が間違っているところには何か提案がありますか?
これは私が私の.pro
ファイルへQT += concurrent
を追加、@マイクで答えたよう
main.obj:-1: error: LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QtConcurrent::ThreadEngineBase::ThreadEngineBase(void)" ([email protected]@@[email protected]) referenced in function "public: __thiscall QtConcurrent::IterateKernel > >,void>::IterateKernel > >,void>(class std::_Vector_iterator > >,class std::_Vector_iterator > >)" ([email protected][email protected][email protected][email protected]@[email protected]@@[email protected]@@[email protected]@[email protected]@@[email protected][email protected][email protected][email protected]@[email protected]@@[email protected]@@[email protected]@[email protected])
あなたのプロファイルにQT + =同時行があることを確認してください。それ以降もqmakeを実行していることを確認してください。 – demonplus
'.pro'ファイルに' QT + = concurrent'を追加して、Qt並行モジュールとリンクします。無駄な情報をあなたの質問から取り除いてください。エラーは、関数が収束したり分岐したりするのを計算しようとすることとは何の関係もありません。 [MCVE](https://stackoverflow.com/help/mcve)の問題を減らしてみてください。そうすれば、あなたの質問は同じ問題に直面している他の人にも役立ちます。あなたの現在のタイトルはエラーとは関係ありません。 – Mike
なぜQtを混乱させるのですか?関数が入力に収束するかどうか、質問は非常に洗練されたものになりますが、通常は100ステップ程度実行して、それが収束しているか、それとも野生であるかを確認します。 –