std :: sample输出已订购

时间:2019-04-08 17:41:46

标签: c++ c++17 libstdc++

关于最新的libstdc ++(c ++ 17)中的新std::sample的几个问题。

为什么根据原始输入字符串对输出进行排序?如果您遵循文档here

中的示例
#include <iostream>
#include <random>
#include <string>
#include <iterator>
#include <algorithm>

int main()
{
    std::string in = "abcdefgh", out;
    std::sample(in.begin(), in.end(), std::back_inserter(out),
                5, std::mt19937{std::random_device{}()});
    std::cout << "five random letters out of " << in << " : " << out << '\n';
}

可能的输出:

five random letters out of abcdefgh : adfgh

输出始终按字母数字顺序。如果反转输入字符串,则输出将始终按字母数字顺序反转。它也可以不更换而取样,我想这与我下面的问题有关。

文档说该函数可以实现选择储层采样,两者之间有什么区别以及如何使用std::sample来实现? / p>

我也不确定为什么该函数使用back_inserter_iterator而没有其他insert_iterator

0 个答案:

没有答案