- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一小段用于 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/
#include #include int main() { std::vector v{ 1, 2, 3, 4 }; std::for_each_n(v.begin(), 2,
我创建了以下纯测试程序来说明问题: #include #include #include int main() // Test program. Not for real life solut
我有一小段用于 std::for_each_n 循环的代码。我尝试在内置 Coliru 上运行它使用以下命令编译 GCC C++17: g++ -std=c++1z -O2 -Wall -pedant
我是一名优秀的程序员,十分优秀!