Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.72
xmisserx
1 / 1 / 0
Регистрация: 09.11.2009
Сообщений: 44
#1

Перемешать элементы vector-а - C++

10.12.2009, 23:51. Просмотров 2292. Ответов 4
Метки нет (Все метки)

доброго времени суток
имеются три std::vector с одинаковыми количествами элементов. хотелось бы перемешать элементы так, чтобы перемешанные элементы были одинаковы во всех векторах. как понимаю - если даже есть такое свойство у vector, то вряд ли его можно применить одинаково сразу к трем векторам. Как лучше такое реализовать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2009, 23:51     Перемешать элементы vector-а
Посмотрите здесь:

C++ Меняют ли элементы в vector свои адреса при вызове метода push_back?
Заменить все максимальные элементы нулями (используя vector) C++
C++ error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Vector<int>::Vector<int>(void)" (?0?$Vector@H@@QAE@XZ) в функции _main
C++ Скопировать элементы Vector в обычный массив
List и Vector, создать массив списков и перебрать все элементы C++
Как можно увеличить размер вектора, который является элементом вектора vector<vector<int>>arr(n, vector <int>) C++
При использовании push_back для vector-а, все предыдущие элементы перезаписываются C++
Вывести все элементы массива vector, перегрузка ostream C++
C++ Есть ли готовая команда, чтобы циклически сдвинуть элементы в std::vector?
Рандомно перемешать элементы одномерного массива C++
Рандомно перемешать элементы двумерного массива C++
C++ Что значит отобразить преобразованные элементы по восемь слов на строку? Vector

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Somebody
2777 / 1591 / 142
Регистрация: 03.12.2007
Сообщений: 4,170
Завершенные тесты: 1
11.12.2009, 00:13     Перемешать элементы vector-а #2
Есть random_shuffle, функцию генерации случайных чисел можно задать самому. Если эта функция будет на основе rand, то просто надо вызывать перед всеми тремя перемешиваниями srand с одним и тем же значением - тогда будет одна и та же последовательность каждый раз.
xmisserx
1 / 1 / 0
Регистрация: 09.11.2009
Сообщений: 44
11.12.2009, 10:41  [ТС]     Перемешать элементы vector-а #3
да, вроде то что надо. спасибо
вот только немножко не допонял как одинаково применять к нескольким объектам (из примера по ссылке)
C++
1
2
3
4
5
ptrdiff_t myrandom (ptrdiff_t i) { return rand()%i;}
ptrdiff_t (*p_myrandom)(ptrdiff_t) = myrandom;
.....
random_shuffle ( a.begin(), a.end(), p_myrandom);
random_shuffle ( b.begin(), b.end(), p_myrandom);
какого типа использовать переменную p_myrandom?..
Somebody
2777 / 1591 / 142
Регистрация: 03.12.2007
Сообщений: 4,170
Завершенные тесты: 1
11.12.2009, 21:15     Перемешать элементы vector-а #4
Цитата Сообщение от xmisserx Посмотреть сообщение
вот только немножко не допонял как одинаково применять к нескольким объектам (из примера по ссылке)
Код
unsigned int seed = time(0);
srand(seed);
random_shuffle....
srand(seed); // От того же seed'а
random_shuffle....
Цитата Сообщение от xmisserx Посмотреть сообщение
какого типа использовать переменную p_myrandom?..
В смысле? Здесь же вроде написан тип - ptrdiff_t (*)(ptrdiff_t).
xmisserx
1 / 1 / 0
Регистрация: 09.11.2009
Сообщений: 44
11.12.2009, 23:24  [ТС]     Перемешать элементы vector-а #5
Somebody, спасибо большое, все понял.
Yandex
Объявления
11.12.2009, 23:24     Перемешать элементы vector-а
Ответ Создать тему
Опции темы

Текущее время: 15:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru