qtconcurrent示例
时间: 2023-08-31 18:10:41 浏览: 84
下面给出一个简单的 QtConcurrent 的示例,其中使用了 `QtConcurrent::map` 函数将一个 vector 中的元素映射为其平方:
```c++
#include <QtConcurrent/QtConcurrent>
#include <iostream>
#include <vector>
int main()
{
std::vector<int> vec {1, 2, 3, 4, 5};
// 使用 QtConcurrent::map 函数将 vector 中的元素映射为其平方
auto future = QtConcurrent::map(vec, [](int x) { return x * x; });
// 等待所有任务完成
future.waitForFinished();
// 输出结果
std::vector<int> result = future.results();
for (int x : result) {
std::cout << x << " ";
}
std::cout << std::endl;
return 0;
}
```
输出结果为:
```
1 4 9 16 25
```
在上面的示例中,使用 `QtConcurrent::map` 函数将 vector 中的元素映射为其平方,并返回一个 `QFuture` 对象,该对象表示这些任务的状态。我们可以通过调用 `waitForFinished` 函数等待所有任务完成,然后通过调用 `results` 函数获取结果。最后,我们遍历结果并输出。
阅读全文