|
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414
|
|
Посоветуйте новичку в С++31.07.2011, 17:04. Показов 14266. Ответов 126
Метки нет (Все метки)
Здравствуйте!
После школьной программы знаком с основами Паскаля, Делфи. Скоро поступлю в ВУЗ. Скорей всего буду изучать там С++. Решил немного подготовиться. Скачал книгу Либерти (21 день). Сейчас остановился на девятом дне. "Прошел" указатели и ссылки. Возникают большие трудности при использовании указателей и ссылок в классах. Утечки, нулевые объекты, мины замедленного действия, одним словом остались для меня непонятными. Во-первых мне интересно - я виноват? Или это тяжелые темы для всех? Сколько вы потратили дней, чтобы полностью разобраться в этих темах? Вся сложность в них в том, что надо понимать, как записывается информация, где хранится, когда будет запускаться конструктор, copy конструктор, деструктор. Как надо использовать функции чтобы не запускать copy конструктор. Во-вторых я хочу спросить, а надо ли мне новичку, знакомым с С++ 7 дней, разбираться в таких, как мне кажется профессиональных вещах? Может можноо обратиться к ним позже? Или дальше без этих тем не уедешь? Тоесть основной вопрос: если остались непонятки в этих темах, можно изучать дальше, а потом вернуться к ним? Или лучше сейчас все понять?
0
|
|
| 31.07.2011, 17:04 | |
|
Ответы с готовыми решениями:
126
посоветуйте новичку в С++ посоветуйте литературу, новичку Посоветуйте книгу/-и новичку |
| 05.08.2011, 22:52 | ||
|
Согласитесь использовать и понимать это большая разница.
1
|
||
|
Higher
|
|
| 06.08.2011, 09:41 | |
|
Но я все-таки не понимаю, зачем все усложнять. Генерация исключения заставит читающего код запнуться и разбираться, с какой целью его сгенерировали. Ну и это явно менее эффективно, чем goto(там, если я не ошибаюсь, одна строчка на asm).
Если использовать несколько goto, тогда да, код становится крайне сложно отладить. Но одна маленькая goto'шка в некоторых случаях только улучшит читаемость и быстродействие. Можно, конечно, использовать функции - но зачем все усложнять?
0
|
|
|
Заблокирован
|
|
| 06.08.2011, 10:42 | |
|
с goto в С++ надо быть предельно осторожным. При выходе из областей видимости вызываются деструкторы для автоматических объектов. При выходе из циклов с помощью goto никакие деструкторы не вызываются, что естественно приводит к печальным последствиям. А с throw в этом плане всё в порядке
1
|
|
|
|
|||
| 06.08.2011, 10:50 | |||
Простое правило: goto в пределах одной области видимости, не больше! Все равно самый лучшим вариантом будут изменения на более высоком уровне, чем на уровне команд или инструкций. Серьезно, грамотный рефакторинг - это панацея
0
|
|||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 06.08.2011, 11:04 | ||
|
0
|
||
|
|
|||
| 06.08.2011, 11:15 | |||
Иначе, выгоднее было бы хранить массив указателей на элементы, а не сами элементы. Манипулировать указателями быстрее. А так сохраняется совместимость с обычными массивами.
0
|
|||
|
|
||
| 06.08.2011, 11:22 | ||
|
1
|
||
|
2383 / 1667 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
|
||
| 06.08.2011, 11:42 | ||
|
Но это всё-равно не значит, что стоит применять goto где попало.
2
|
||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 06.08.2011, 12:39 | ||
|
A vector is a kind of sequence that supports random access iterators. In addition, it supports (amortized) constant time insert and erase operations at the end; insert and erase in the middle take linear time. Storage management is handled automatically, though hints can be given to improve efficiency. A vector satisfies all of the requirements of a container and of a reversible container (given intwo tables in 23.1) and of a sequence, including most of the optional sequence requirements (23.1.1). The exceptions are the push-front and pop_front member functions, which are not provided. Ну и несколько цитат: Страуструп: «Стандарт не предписывает специального представления для каждого стандартного контейнера». Джосьютис: «Однако стандарт не утверждает, что в реализации вектора должен использоваться именно динамический массив. Скорее этот выбор обусловлен ограничениями и требованиями к сложности операций». Так что формально никто не запрещает написать компилятор, где вектор массивом не является.
1
|
||
|
2383 / 1667 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
|
||
| 06.08.2011, 12:46 | ||
|
Mr.X, Джосьютис написал это задолго до выхода C++03, но даже у него далее есть отсылка на то, что в стандарте подразумевалась непрерывность элементов вектора и что возможно в будущем это будет внесено в стандарт явно. И действительно, в C++03 это указано прямым текстом, что и процитировал fasked. Сможешь показать разумную реализацию не через массив, но так, чтобы требование непрерывности выполнялось?
0
|
||
|
|
||||||||
| 06.08.2011, 12:54 | ||||||||
![]() Заметьте, ни я ни Майерс не говорим про массив, а лишь про непрерывное хранение элементов, то есть друг за другом, как в массиве, а не с помощью массива. Не по теме: Вечером поищу текущий стандарт и приведу цитату из него. Есть подозрения, что Вы просто не нашли нужных слов Хотя, по Мейерсу, я должен был написать следующий вызов Си функции:
0
|
||||||||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
| 06.08.2011, 13:44 | |
|
0
|
|
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
||
| 06.08.2011, 14:49 | ||
|
А если есть выходу из середины, то без раздумий не получится - надо читать код и вникать, как цикл работает.
0
|
||
|
Freelance
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
|
||
| 06.08.2011, 15:02 | ||
|
0
|
||
|
Заблокирован
|
||
| 06.08.2011, 15:13 | ||
|
Любой костыль, это "меньшее из двух зол". ключевое слово "зло"
0
|
||
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
|||
| 06.08.2011, 15:17 | |||
|
Добавлено через 2 минуты
0
|
|||
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
| 06.08.2011, 15:33 | |
|
0
|
|
|
2383 / 1667 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
|
||
| 06.08.2011, 15:38 | ||
|
alex_x_x, по-моему ValeryLaptev как раз про throw и говорил.
Добавлено через 1 минуту Точнее даже про
1
|
||
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
|
| 06.08.2011, 15:53 | |
|
Именно! Для объекта, созданного операцией new() деструктор вызовется только при выполнении delete(). При раскрутке стека для таких объектов деструктор не вызывается.
0
|
|
| 06.08.2011, 15:53 | |
|
Посоветуйте новичку книжку или сайт, где описывается создание графического интерфейса в VC Посоветуйте новичку
Посоветуйте новичку!! Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
BitTorrent (версия 7.11 English) и Меню Настройки
russiannick 15.11.2026
Пункты, отвечающие за отключение обновлений в BitTorrent версии 7. 11 (английской)
Options
Preferences
General
Language
|
Транслитерация текста с кириллицы на латиницу (вариант №4)
Maks 15.11.2026
Что-то я перемудрил с предыдущими версиями, в этот раз сделал всё проще, обратившись к функции "СтрокаЛатиницей" из типового общего модуля "СтроковыеФункцииКлиент".
В данной функции нет апострофов,. . .
|
BitTorrent (версия 4.3.9) и Меню Настройки
russiannick 15.11.2026
В меню Настройки можно отключить автоматическое обновление программы.
Карта этого меню приложена ниже.
Нужный пункт выделен красным.
Сервис
Настройки
Поведение
|
Транслитерация текста с кириллицы на латиницу (вариант №3)
Maks 15.11.2026
Обновленная версия предыдущей обработки.
Изменения коснулись букв: Ъ, Ы, Ь, Э, отображения которых зависят от положения реквизита "Транслитерация имён".
Изменено отображение буквы Й.
Добавлена. . .
|
|
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки.
Добавлено:
- Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
|
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы.
Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
|
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|