'for_each_n'不是C++ 17中'std'的成员

msc*_*msc 2 c++ foreach c++17

我有一小段std::for_each_n循环代码.我尝试使用以下命令在内置的Coliru编译器GCC C++ 17 上运行它:

g++ -std=c++1z -O2 -Wall -pedantic -pthread main.cpp && ./a.out
Run Code Online (Sandbox Code Playgroud)

但编译器会给出错误"'for_each_n'不是'std'的成员".

我的代码是从cppreference复制的下面的代码.

#include <algorithm>
#include <iostream>
#include <vector>

int main()
{
    std::vector<int> ns{1, 2, 3, 4, 5};
    for (auto n: ns) std::cout << n << ", ";
    std::cout << '\n';
    std::for_each_n(ns.begin(), 3, [](auto& n){ n *= 2; });
    for (auto n: ns) std::cout << n << ", ";
    std::cout << '\n';
}
Run Code Online (Sandbox Code Playgroud)

那么,为什么我收到错误?

Nat*_*ica 14

您的代码没有任何问题.问题是libstdc ++目前还不支持std::for_each_n.如果我们看一下定义的标题,std::for_each我们就会发现它不存在.

但是,如果您可以访问libc ++,那么来自官方镜像的标题就会 实现std::for_each_n