gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 23:27:35 25 4
gpt4 key购买 nike

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

g++ -std=c++1z -O2 -Wall -pedantic -pthread main.cpp && ./a.out

但是编译器报错说"'for_each_n' is not member of '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';
}

那么,为什么我会收到错误消息?

最佳答案

您的代码没有任何问题。问题是 libstdc++ 在 GCC 8 和 Clang 8 之前不支持 std::for_each_n。如果我们查看 header定义 std::for_each_n,我们看到它不存在。

但是,如果您可以访问 libc++,它们的 header 来自 official mirror确实实现了 std::for_each_n

(更新:GCC 存储库的 current version 现在也包含 for_each_n)

关于c++ - 'for_each_n' 不是 C++17 中 'std' 的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46468114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com