C++随机选择std :: vector <std :: vector >>的非空元素

Flo*_*yan 1 c++ random vector

给我一个大的向量,它本身包含特定数据类型的向量,例如std::vector<std::vector<double> > foo.我试图从foo中检索一个随机元素foo [idx],这样foo[idx]就分别是非空的foo[idx].empty() == false.

我天真的猜测是从foo我的约束foo[idx].empty() == false完成之前选择随机元素.

然而,foo非常稀疏地填充非空向量的情况很可能.因此,我的方法很可能会非常缓慢.

是否有更好的方法或我应该考虑完全不同的数据结构?

小智 6

使用非空元素的索引维护辅助向量,并从那里获取随机元素