0

ポインタのランダムポインタフォームリストを取得する方法は? 私は単純なカスタムclass Buildingsとリストを持っています

std::list<Buidldings*> temp;

temp のサイズが 0 より大きいです。リストからランダムなポインタを取得する方法 (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 に答える