Вопрос № 65799: Здравствуйте! Мне вот что не понятно. Везде пишут, что в С++ проще работать с довыделением памяти. Но по сути реализация выходит такая же: создаётся динамическая переменная большей памяти, туда всё перезаписывается, а прежняя удаляется. Ведь так можн...Вопрос № 65832: Мне бы хотелось узнать мнение об таких авторах по С++ как Подбельский, Шмилдт и Давыдов. Что лучше для начинающего?...Вопрос
№ 65835: Как считать массив из файла. Массив одномерный A[16]. Знаю, что циклом. Каким лучше и меньше будет использовать памяти? И есть ли другие способы считывать без использования цикла?...Вопрос № 65873: Здравствуйте эксперты!
По нужде да и для ощего развития надо освоить C++, поиски литературы и сайтов на эту тему ничего не дал. Везде есть ссылки на освоение Visual c++ и Borland (как создать окно, для чайников), а ресурсы где подробно всё разжёв...
Вопрос № 65.799
Здравствуйте! Мне вот что не понятно. Везде пишут, что в С++ проще работать с довыделением памяти. Но по сути реализация выходит такая же: создаётся динамическая переменная большей памяти, туда всё перезаписывается, а прежняя удаляется. Ведь так можно сделать и в других языках (я писала на Pascal)... Поэтому мне думается, может я делаю что-то не так... Подскажите алгоритм: если я описываю динамический массив как
тип** a (по-другому задать не получится, т.к. я использую его внутри структуры узла дерева в качестве массива ссылок на потомков, количество которых неограничено),
то потом сначала выделяю память под ссылку
a=new тип*
и под первый элемент
a[0]=new тип.
Но если мне позже нужно создать следующий элемент a[1], то под ссылку надо выделять память уже как
a=new тип* [2],
то есть создавать новую переменную и переписывать элементы туда, а потом удалять старую.
Но если алгоритм такой, то в чём разница?
Отправлен: 06.12.2006, 15:38
Вопрос задала: Verena (статус: 3-ий класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Хватов Сергей
Здравствуйте, Verena!
Вам действительно интересно, почему так?
Ну, попробую объяснить - часто невозможно изменить размер объекта, не переместив его в другое место (вообще-то это при наличии mmu реализовать можно, только слишком дорого получится) А перемещение ведёт к проблемам - в программе могут быть на него ссылки, которые придётся корректировать.
Но если вам это для дела нужно - то можно не углубляться в реализацию, а использовать готовые abstract containers - std::vector или даже std::map (он как раз через btree реализован)
Ответ отправил: Хватов Сергей (статус: 10-ый класс)
Ответ отправлен: 06.12.2006, 16:03
Вопрос № 65.832
Мне бы хотелось узнать мнение об таких авторах по С++ как Подбельский, Шмилдт и Давыдов. Что лучше для начинающего?
Отправлен: 06.12.2006, 19:31
Вопрос задал: Spenser (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Torsten
Здравствуйте, Spenser!
Подбельского и Шилдта (не Шмилдта) читал, оба пишут хорошо.
У Шилдта сделано в виде справочника, у Подбельского в виде учебника.
Я всегда же предпочитаю справочники, т.к. можно быстро найти то что нужно.
Да и Шилдта многие признают отличным автором, еще один плюс в его пользу, это тоже была моя первая книга, когда я начал изучать С/С++.
Но и Подбельский тоже хорошо пишет для новичком, так что рекомендую между этими авторами выбирать.
Про Давыдова первый раз слышу.
--------- #define MAGIC_NUMBER 0xdeface
Ответ отправил: Torsten (статус: 3-ий класс)
Ответ отправлен: 06.12.2006, 19:42 Оценка за ответ: 5
Отвечает: din
Здравствуйте, Spenser!
Я думаю, что Липман самый раз для нацинающих. Книжка так и называется "С++ для начинающих". У меня где-то была в электронном виде. Надо поискать.
--------- Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: din (статус: Практикант)
Ответ отправлен: 06.12.2006, 19:47 Оценка за ответ: 5
Отвечает: Терсков Сергей
Здравствуйте, Spenser!
Не знаю насчет Давыдова, но вот двое других... По Подбельскому я изучал C и скажу, что для начинающего этот автор очень неплох (правда в примерах программ у него много математических расчетов). Герберт Шилдт написал книги по-моему по всем известным языкам :). При этом пишет он практически везде одинаково. Я читал его книги по Java и C#. Для начинающих это самое-то, он все понятно объясняет и приводит немало примеров, так что я бы посоветовал именно его.
Ответ отправил: Терсков Сергей (статус: 2-ой класс)
Ответ отправлен: 07.12.2006, 02:41 Оценка за ответ: 5
Вопрос № 65.835
Как считать массив из файла. Массив одномерный A[16]. Знаю, что циклом. Каким лучше и меньше будет использовать памяти? И есть ли другие способы считывать без использования цикла?
Отправлен: 06.12.2006, 19:41
Вопрос задал: Spenser (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Ross
Здравствуйте, Spenser!
Здесь все зависит от того, в каком виде массив записан в файл. Если это обычный ASCII - файл, в котором отдельные числа разделены пробелами, то можно например использовать для этого класс ifstream и цикл for(while). Если файл бинарный, можно использовать, например, стандартные функции WinAPI и считывать весь массив целиком. Код, реализующий оба способа - в приложении
Приложение:
Ответ отправил: Ross (статус: 3-ий класс)
Ответ отправлен: 06.12.2006, 20:24 Оценка за ответ: 5
Отвечает: Терсков Сергей
Здравствуйте, Spenser!
Непонятно какой тип данных у вас в массиве и какой формат файла который вы собираетесь считывать. По-поводу цикла - можно использовать любой какой по душе, например:
for(int i=0; i<16; i++) {
fscanf(...);
}
или
while(fscanf(...) != EOF) {
}
А читать файлы можно и без цикла, т.е. за раз считать его в память. Но разбирать считанные данные в массив все равно придется в цикле.
Ответ отправил: Терсков Сергей (статус: 2-ой класс)
Ответ отправлен: 07.12.2006, 02:39 Оценка за ответ: 5
Вопрос № 65.873
Здравствуйте эксперты!
По нужде да и для ощего развития надо освоить C++, поиски литературы и сайтов на эту тему ничего не дал. Везде есть ссылки на освоение Visual c++ и Borland (как создать окно, для чайников), а ресурсы где подробно всё разжёванно мне не попадались. Мой опыт в программировании сводиться к знаниям PHP и HTML. Хотел спросить Ваш совет по поводу литературы которую стоит приобрести для самостоятельного освоения языка, конкретно меня интересуют книги по принципам программирования, структуре языка и собственно справочники
функций. Буду рад и ссылкам на ресурсы Интернет.
Отправлен: 06.12.2006, 23:36
Вопрос задал: Cimus (статус: 9-ый класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Что же касается литературы, то её можно выбрать на Озоне http://www.ozon.ru/ .
--------- Cogito, ergo sum (c) R. Descartes (1596-1650)
Ответ отправил: UnRe@l (статус: 2-ой класс)
Ответ отправлен: 07.12.2006, 03:42 Оценка за ответ: 5
Отвечает: Mystic
Здравствуйте, Cimus!
Я бы посоветовал книгу "Философия С++". Авторы: Брюс Эккель и Чак Эллисон. Книга в двух томах. Однако материал немного трудноват, если не знать хотя бы основы.
Ответ отправил: Mystic (статус: 2-ой класс)
Ответ отправлен: 07.12.2006, 15:35 Оценка за ответ: 5 Комментарий оценки: Да, действительно отличный выбор, купил два тома и ещё справочник Рэй Лишнера.