0

如何从指针列表中获取随机指针?我有简单的自定义class Buildings和列表

std::list<Buidldings*> temp;

temp 的大小大于零。如何从列表(0-temp.size)中获取随机指针?

4

2 回答 2

9

用于std::rand选择适当的索引,然后推进迭代器:

assert( !temp.empty() );
std::list<Buidldings*>::const_iterator it = temp.begin();
std::advance( it, std::rand() % temp.size() );
Buidldings *p = *it;
于 2012-10-10T07:50:27.780 回答
4

试试这个:

template<typename ContainerType >
typename ContainerType::iterator get_random(ContainerType & container)
{
    ContainerType::iterator iter = container.begin(); 
    std::advance(iter,rand() %container.size());
    return iter ;
}

template<typename ContainerType >
typename ContainerType::const_iterator get_random(const ContainerType & container)
{
... (same as above)
}

这里

于 2012-10-10T07:50:17.437 回答