C++ 如何使用std::reduce和#include<;执行政策>;使用g++;6.

C++ 如何使用std::reduce和#include<;执行政策>;使用g++;6.,c++,stl,c++17,C++,Stl,C++17,有人能告诉我如何为打开的std::reduce编译示例代码吗 #包括 #包括 #包括 #包括 #包括 int main() { 标准:向量v(10'000'007,0.5); { 自动t1=std::chrono::高分辨率时钟::现在(); 双结果=标准::累加(v.begin(),v.end(),0.0); 自动t2=标准::时钟::高分辨率时钟::现在(); 标准时间持续时间ms=t2-t1; std::coutlibstdc++(默认情况下与g++一起使用)和libc++(默认情况下与c

有人能告诉我如何为打开的
std::reduce
编译示例代码吗

#包括
#包括
#包括
#包括
#包括
int main()
{
标准:向量v(10'000'007,0.5);
{
自动t1=std::chrono::高分辨率时钟::现在();
双结果=标准::累加(v.begin(),v.end(),0.0);
自动t2=标准::时钟::高分辨率时钟::现在();
标准时间持续时间ms=t2-t1;
std::coutlibstdc++(默认情况下与g++一起使用)和libc++(默认情况下与clang一起使用)都尚未实现执行策略支持

跟踪了在libstdc++中实现新功能的进度。跟踪了libc++的进度。如您所见,截至撰写本文时,P0024R2“并行度TS应标准化”尚未由任何一个库实现。

libstdc++(默认情况下与g++一起使用)和libc++(默认情况下与clang一起使用)已经实施了执行政策支持


在上跟踪了在libstdc++中实现新功能的进度。跟踪了libc++的进度。如您所见,P0024R2“并行性TS应该标准化”在撰写本文时,这两个库都还没有实现。

大多数库供应商还没有实现许多C++17功能。您需要等待的时间不会太长。当您等待libstdc++赶上时,已经有了。@ildjarn这就是我在编写该示例时使用的方法(然后发布了它应该在C++中查看的方式…现在编辑成匹配当前草案)大多数图书馆供应商还没有实现很多C++ 17特性。你必须等待太久。当你在等待LIbSTDC++ ++赶上的时候,已经有了。(然后张贴它应该在C++中查看的方式…现在编辑成匹配当前草案)
#include <iostream>
#include <chrono>
#include <vector>
#include <numeric>
#include <execution_policy>

int main()
{
    std::vector<double> v(10'000'007, 0.5);

    {
        auto t1 = std::chrono::high_resolution_clock::now();
        double result = std::accumulate(v.begin(), v.end(), 0.0);
        auto t2 = std::chrono::high_resolution_clock::now();
        std::chrono::duration<double, std::milli> ms = t2 - t1;
        std::cout << std::fixed << "std::accumulate result " << result
                  << " took " << ms.count() << " ms\n";
    }

    {
        auto t1 = std::chrono::high_resolution_clock::now();
        double result = std::reduce(std::par, v.begin(), v.end());
        auto t2 = std::chrono::high_resolution_clock::now();
        std::chrono::duration<double, std::milli> ms = t2 - t1;
        std::cout << "std::reduce result "
                  << result << " took " << ms.count() << " ms\n";
    }
}