0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 58
|
|
1 | |
Какая-нибудь книга по STL, только чтобы с нуля и основательно02.11.2014, 23:52. Показов 2228. Ответов 9
Метки нет (Все метки)
Здравствуйте, не подскажите какую-нибудь книгу по STL только чтобы с нуля и основательно, советовали "Эффективное использование STL" но там не с нуля, а скорее советы как выжать максимум эффективности, а мне надо именно прочитать основы об итераторах контейнерах и так далее!Заранее спасибо за помощь !
0
|
02.11.2014, 23:52 | |
Ответы с готовыми решениями:
9
Какая вероятность того, что сумма этих чисел будет больше нуля, а произведение меньше нуля ? Как сделать так, чтобы при нажатии кнопки на дочернем окне, в родительском окне открылась какая-нибудь страница ? Есть ли какие-нибудь настройки в InterDev, чтобы подсвечивать синтаксис не только *.asp файлов. Книга по STL |
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|
03.11.2014, 00:29 | 2 |
1) Работа с итератором на 90% аналогична работе с указателем (*, ->, ++, -- имеют тот же самый эффект). Некоторые отличия есть (скажем, не все итераторы можно вычитать друг из друга), но это уже не совсем основы. 2) У контейнеров хранящих сразу пачку значений (std::vector, std::map и так далее) есть методы begin и end. begin возвращает итератор указывающий на начало содержимого контейнера, end - итератор указывающий на конец контейнера. Для любого такого контейнера можно написать for(std::some_container::iterator pos=X.begin();pos!=X.end();++pos) и пробежаться по всему его содержимому. В C++11 - for(auto pos:X). Да, это тоже "для всего". Остальное - технические подробности типа "попытка изменить вектор приводит к тому что все старые итераторы/указатели становятся невалидны". www.cplusplus.com в помощь.
1
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
03.11.2014, 05:26 | 4 |
Ну, хотя бы для того, чтобы узнать, что для обработки контейнеров существуют алгоритмы, из-за которых Степанов и написал STL, обрабатывать их циклами - это сишничество чистейшей воды.
0
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|
03.11.2014, 07:50 | 5 |
И каким же алгоритмом, скажем, распечатать пронумерованный список элементов std::map? Нет, несколько повседневных задач (сортировка и поиск) алгоритмы действительно решают, но это ни разу не панацея от использования циклов. И чтива на эту тему - несколько страниц документации.
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
03.11.2014, 08:04 | 6 |
Распечатать - это на консоль вывести что ли? Если оператор << для его элементов перегружен, то std::copy, в противном случае std::for_each.
0
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|
03.11.2014, 08:26 | 7 |
value_type любого std::map это pair<const key_type,mapped_type>. Разумеется, никакие << для них не перегружены. А std::for_each хочет отдельно объявленный функтор. Да, теоретически этот функтор можно написать, но конструкция получится гораздо более громозкой чем обычный цикл.
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
03.11.2014, 08:57 | 8 |
А кто мешает перегрузить?
Ну, при наличии лямбда-функций с написанием функторов вообще никаких проблем. Конструкции с циклом и с std::for_each c функтором, описывающим итерацию цикла, семантически эквивалентны, однако специалисты советуют применять именно алгоритмы, так как это является стандартной идиомой, и при их использовании вероятность сделать ошибку гораздо меньше, чем при сочинении самопального цикла.
0
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||||||
03.11.2014, 09:16 | 9 | |||||
Громозкость итоговой конструкции. Для работы через std::copy нужно использовать std::ostream_iterator и перегрузку операторов. Через циклы все делается в две коротких строчки.
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
03.11.2014, 11:11 | 10 |
Убедили, с такими циклами я согласен, но все равно считаю, что алгоритмы должны иметь приоритет над циклами.
0
|
03.11.2014, 11:11 | |
03.11.2014, 11:11 | |
Помогаю со студенческими работами здесь
10
Новая книга по С# с нуля, но мощно Нужна книга для полного нуля в программировании Гостевая книга! Ну хоть кто-нибудь! Какая книга лучше? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |