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

Заполнение массива числами от 1 до 25 без повторений - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Адресная арифметика http://www.cyberforum.ru/cpp-beginners/thread157322.html
Народ!!! Пожайлуста просвятите! Мне важно понять принцип хранения переменных различных типов данных в языках С++ и С#(например как в ячейках памяти будет храниться float a = 1234,33333)/ Зарание огромное спасибо
C++ Изменение указателя - аргумента функции Привет всем! Может я совсем тупой, но не могу понять почему не работает такой пример: #include <iostream> void func (char * ptr) { ptr = new char ; ptr = '1'; http://www.cyberforum.ru/cpp-beginners/thread157311.html
STL std::set, std::pair, std::make_pair C++
Я не знаю как описать тему в двух словах, поэтому не обращайте внимание на название темы. Собственно перейдем к нашим баранам: есть пользовательский класс (условно дерево): class tree { double age, height; std::string name; public: tree(std::string); bool operator == (tree); bool operator > (tree); bool operator < (tree);
C++ Как написать макрос - модуль числа...
Помогите написать макрос на с++, возвращающий модуль числа... Добавлено через 4 минуты Нашёл..
C++ Изменение значения статической переменной http://www.cyberforum.ru/cpp-beginners/thread157228.html
не дает =\ static char text; text = ""; error: expression must be a modifiable lvalue это же не конст, а просто статик, в pawn"е часто пользовался static и ок всё было
C++ Часы в псевдографике доброго времени суток. задание заключается в написании программы, отображающую на экране текущее время в виде циферблата с секундной,минутной и часовой стрелками(разных цветов). и сохранять картинку в файле по желанию пользователя. заранее благодарен. подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
04.08.2010, 17:16     Заполнение массива числами от 1 до 25 без повторений
Цитата Сообщение от RoY_Mu$T@nG Посмотреть сообщение
вот эти две библиотеки мне вообще не ясны
algorithm - нужна для функции generate.
iomanip - для форматирования вывода с помощью манипуляторов std::left, std::setw()

Цитата Сообщение от RoY_Mu$T@nG Посмотреть сообщение
std::generate(rnd.begin(), rnd.end(), [&]() { return var++; });
Алгоритм генерирует значения для заполнения вектора. Для заполнения используется лямбда-функция (анонимная функция) [&]() { return var++; }, которая при каждом вызове возвращает возрастающее с шагом в 1 значение var. Вместо этого, можно было бы определить функцию
C++
1
2
3
4
5
size_t f()
{
    static size_t var = 1;
    return var++;
}
И передавать эту функцию в алгоритм вместо лямбда-функции.
Можно также вместо generate написать:
C++
1
2
for(size_t i = 0; i < ROW * COL; ++i)
    rnd[i] = i + 1;
Эффект будет тот же.
std::vector<size_t>::const_iterator it = rnd.begin() + rand() % rnd.size();
Т.к. границы диапазона случайных чисел нам известны, как и то, что каждое число из диапазона должно встречаться только один раз, то получается, что "случайными" здесь являются не возможные числа, а порядок их присваивания очередному элементу матрицы.
Вектор rnd инициализирован числами от 1 до 25. В цикле мы получаем псевдослучайное число от 0 до (размер вектора - 1), которое является порядковым номером очередного элемента вектора. Прибавляя к начальному итератору вектора (можно считать, что это указатель на первый элемент вектора) этот номер, мы получаем итератор (указатель) на очередной элемент вектора. После мы присваиваем элемент, на который указывает итератор, после чего удаляем этот элемент. Таким образом, мы случайным образом распределяем элементы вектора между элементами матрицы.

Добавлено через 1 минуту
Цитата Сообщение от RoY_Mu$T@nG Посмотреть сообщение
а что такое итератор х_х
Можно для простоты считать, что это указатель.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru