1. ホーム
  2. c++11

[解決済み] C++11の範囲ベースのforループでOpenMPを使用する?

2023-08-05 22:21:17

質問

このような動作をさせることに反対意見はありますか?あるいは、この動作はよく指定されているのでしょうか?

#pragma omp parallel for
for(auto x : stl_container)
{
   ...
}

というのも、OpenMPの仕様はc++98でしか有効でないようですが、ここでは使っていないC++11のスレッドによる非互換性がもっとあるのではないかと思うからです。それでも念のためと思いまして。

どのように解決するのですか?

OpenMP 5.0では、99ページに以下の行が追加され、多くの範囲ベースのforループがOKになりました !

2.12.1.3 ランダムアクセスイテレータを持つ範囲ベースのforループは、正規のループ形式を持ちます。

ソース: https://www.openmp.org/wp-content/uploads/OpenMP-API-Specification-5.0.pdf