• <i id='yCJfw'><tr id='yCJfw'><dt id='yCJfw'><q id='yCJfw'><span id='yCJfw'><b id='yCJfw'><form id='yCJfw'><ins id='yCJfw'></ins><ul id='yCJfw'></ul><sub id='yCJfw'></sub></form><legend id='yCJfw'></legend><bdo id='yCJfw'><pre id='yCJfw'><center id='yCJfw'></center></pre></bdo></b><th id='yCJfw'></th></span></q></dt></tr></i><div id='yCJfw'><tfoot id='yCJfw'></tfoot><dl id='yCJfw'><fieldset id='yCJfw'></fieldset></dl></div>

    <small id='yCJfw'></small><noframes id='yCJfw'>

    • <bdo id='yCJfw'></bdo><ul id='yCJfw'></ul>

  • <tfoot id='yCJfw'></tfoot>
  • <legend id='yCJfw'><style id='yCJfw'><dir id='yCJfw'><q id='yCJfw'></q></dir></style></legend>

      1. c++ 如何优雅地将 c++17 并行执行与计算整数的 for 循环一起使用?

        时间:2023-09-26
      2. <small id='1SbFV'></small><noframes id='1SbFV'>

              <bdo id='1SbFV'></bdo><ul id='1SbFV'></ul>

              <tfoot id='1SbFV'></tfoot>

                  <tbody id='1SbFV'></tbody>
                <i id='1SbFV'><tr id='1SbFV'><dt id='1SbFV'><q id='1SbFV'><span id='1SbFV'><b id='1SbFV'><form id='1SbFV'><ins id='1SbFV'></ins><ul id='1SbFV'></ul><sub id='1SbFV'></sub></form><legend id='1SbFV'></legend><bdo id='1SbFV'><pre id='1SbFV'><center id='1SbFV'></center></pre></bdo></b><th id='1SbFV'></th></span></q></dt></tr></i><div id='1SbFV'><tfoot id='1SbFV'></tfoot><dl id='1SbFV'><fieldset id='1SbFV'></fieldset></dl></div>

                  <legend id='1SbFV'><style id='1SbFV'><dir id='1SbFV'><q id='1SbFV'></q></dir></style></legend>
                • 本文介绍了c++ 如何优雅地将 c++17 并行执行与计算整数的 for 循环一起使用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我可以

                  std::vector<int> a;
                  a.reserve(1000);
                  for(int i=0; i<1000; i++)
                      a.push_back(i);
                  std::for_each(std::execution::par_unseq, std::begin(a), std::end(a), [&](int i) {
                    ... do something based on i ...
                  });
                  

                  但是有没有一种更优雅的方式来创建一个并行化版本的 for(int i=0; i<n; i++) 不需要我先用升序整数填充一个向量?

                  but is there a more elegant way of creating a parallelized version of for(int i=0; i<n; i++) that does not require me to first fill a vector with ascending ints?

                  推荐答案

                  您可以使用 std::generate 来创建向量 {0, 1, ..., 999}

                  You could use std::generate to create a vector {0, 1, ..., 999}

                  std::vector<int> v(1000);
                  std::generate(v.begin(), v.end(), [n = 0] () mutable { return n++; });
                  

                  有一个接受 ExecutionPolicy 的重载,因此您可以将上述内容修改为

                  There is an overload that accepts an ExecutionPolicy so you could modify the above to

                  std::vector<int> v(1000);
                  std::generate(std::execution::par, v.begin(), v.end(), [n = 0] () mutable { return n++; });
                  

                  这篇关于c++ 如何优雅地将 c++17 并行执行与计算整数的 for 循环一起使用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                    <tbody id='Y2cQN'></tbody>
                • <small id='Y2cQN'></small><noframes id='Y2cQN'>

                      <bdo id='Y2cQN'></bdo><ul id='Y2cQN'></ul>
                      1. <tfoot id='Y2cQN'></tfoot><legend id='Y2cQN'><style id='Y2cQN'><dir id='Y2cQN'><q id='Y2cQN'></q></dir></style></legend>

                          <i id='Y2cQN'><tr id='Y2cQN'><dt id='Y2cQN'><q id='Y2cQN'><span id='Y2cQN'><b id='Y2cQN'><form id='Y2cQN'><ins id='Y2cQN'></ins><ul id='Y2cQN'></ul><sub id='Y2cQN'></sub></form><legend id='Y2cQN'></legend><bdo id='Y2cQN'><pre id='Y2cQN'><center id='Y2cQN'></center></pre></bdo></b><th id='Y2cQN'></th></span></q></dt></tr></i><div id='Y2cQN'><tfoot id='Y2cQN'></tfoot><dl id='Y2cQN'><fieldset id='Y2cQN'></fieldset></dl></div>