我正在尝试使用 gcc版本6.3.0 和以下命令来编译包含std::sample
的这段 c ++ 17 代码:{{1 }}。
但是我明白了:g++ -std=gnu++17 -c main.cpp
...
error: ‘sample’ is not a member of ‘std’
gcc 6是否支持使用#include <vector>
#include <algorithm>
#include <random>
int main()
{
std::vector<int> a{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
std::vector<int> b(5);
std::sample(a.begin(), a.end(),
b.begin(), b.size(),
std::mt19937{std::random_device{}()});
return 0;
}
? (使用gcc 8.2.0可以正常编译)
在这两页上找不到答案:
答案 0 :(得分:3)
不。从“库基础V1 TS组件:采样”下的table in the documentation中可以看出,支持std::sample
的libstdc ++的最早版本是7.1版。
答案 1 :(得分:1)
gcc 6是否支持使用std :: sample?
不。您需要GCC7。来自GCC 7 release notes:
对C ++ 17的实验支持,包括以下新功能:
...
std :: sample,std :: default_searcher,std :: boyer_moore_searcher和 std :: boyer_moore_horspool_searcher;
对于GCC 7,您可能需要-std=c++1z
或-std=gnu++1z
,因为它是实验性的。
答案 2 :(得分:1)