我有一小段代码std::for_each_n
环形。我尝试在内置上运行它Coliru使用以下命令编译 GCC C++17:
g++ -std=c++1z -O2 -Wall -pedantic -pthread main.cpp && ./a.out
但编译器给出一个错误“‘for_each_n’不是‘std’的成员”。
我的代码如下,复制自参考参数.
#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++ 不支持std::for_each_n
直到 GCC 8 和 Clang 8。如果我们看一下header定义了std::for_each_n
,我们看到它不存在。
但是,如果您有权访问 libc++,它们的标头来自官方镜子确实实施std::for_each_n
.
(更新:当前版本GCC 存储库现在还包括for_each_n
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)