我有一个结构矢量:
struct entries
{
double km1, km2, km3;
};
我已将结构存储在向量中。我想从向量中选择2个随机结构并显示随机选择的结构的每个元素:km1,km2,km3
我在stackoverflow上发现了一个类似的问题,但它是一个int的向量,并且由于某种原因没有返回随机结构。感谢
答案 0 :(得分:1)
选择这两个很容易:
template <typename Iterator, typename Engine>
std::tuple<Iterator, Iterator> pick_two(Iterator begin, Iterator end, Engine & engine)
{
int size = end - begin;
if (size < 2) {
throw std::invalid_argument("Sequence does not contain two elements");
}
std::uniform_int_distribution<int> distribution(0, size - 1);
int first = distribution(engine);
int second;
do {
second = distribution(engine);
} while (first == second);
return std::make_tuple(begin + first, begin + second);
}
您可以这样称呼,给定全局std::default_random_engine random_engine;
和名为v
的向量:
auto choices = pick_two(v.begin(), v.end(), engine);
您可以使用*(std::get<0>(choices))
获取第一个struct值,使用*(std::get<1>(choices))
获取第二个struct值,并使用您喜欢的任何方法输出值。