Russian Qt Forum

Qt => Общие вопросы => Тема начата: coll3ctor от Апрель 23, 2011, 14:26



Название: QLinkedList перемешать список случайным образом
Отправлено: coll3ctor от Апрель 23, 2011, 14:26
Нужно вызывать функцию rand() из stlib.h, и делать так rand() % list.count() , чтобы рандомное число не превышало номера списка. И ещё нужно как то так, чтобы ето случайное число не повторилось несколько раз...

В общем алгоритм я придумал такой: создаём новый список (temp),
копируем в него старый (который у меня член класса главного окна),
старый очищаем, работаем с temp (запускаем цикл, итераторы, вся фигня)
в теле цикла вызываю функцию добавления элемента в указанную позицию, в первый аргумент передаём  rand() % list.count()
Код:
void artur :: addObjectToTable(int position, Kitap object)
{
int counter = 0 ;
QLinkedList<Kitap>::iterator listIterator   =  list.begin();
QLinkedList<Kitap>::iterator end            =  list.end();

for( ; listIterator != end; listIterator++)
{
counter++;
if(counter == position)
{
list.insert(listIterator, object);
}
}

artur::refreshTableSlot();
exercisePartTwoSet();
}

только вот когда начал реализовывать возникло куча проблем, и вообще правильны ли мои мысли.

Что скажете, господа?

update:

вот примерный код:

Код:
void artur:: randTableSlot()
{
QLinkedList<Kitap> temp = list;
list.clear();

QLinkedList<Kitap>::iterator listIterator   =  temp.begin();
QLinkedList<Kitap>::iterator end            =  temp.end();

int counter = 0;

for( ; listIterator != end; listIterator++)
{
counter++;
Kitap cD = *listIterator;
if(counter == rand() % temp.count())
{
list.insert(listIterator,cD);
}
}

statusBar()->showMessage(tr("Randomed!!!"));
}