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

Непонятки после php - C++

Восстановить пароль Регистрация
 
 
lesromand
0 / 0 / 0
Регистрация: 10.10.2012
Сообщений: 98
21.08.2013, 14:12     Непонятки после php #1
1)После php очень трудно понять что такое указатели и зачем они нужны, можете обьяснить?
2)Если вначале выполнения программы мне не известно размер массива, и даже потом его размер будет неизвестен(например какой та парсинг).Что делать?
3)Какую книжку вы бы могли посоветовать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.08.2013, 14:12     Непонятки после php
Посмотрите здесь:

Непонятки с матрицей C++
непонятки с делением:( C++
C++ непонятки
Непонятки с чаром C++
C++ После какого уровня c++ начинать изучать php
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11815 / 6794 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
21.08.2013, 14:18     Непонятки после php #2
Цитата Сообщение от lesromand Посмотреть сообщение
После php очень трудно понять что такое указатели и зачем они нужны, можете обьяснить?
Кхм... достаточно обширная тема. Что конкретно не понятно?
Цитата Сообщение от lesromand Посмотреть сообщение
Если вначале выполнения программы мне не известно размер массива, и даже потом его размер будет неизвестен(например какой та парсинг).Что делать?
Можно велосипед изобретать, заодно пригодятся указатели а можете использовать, например, класс std::vector в котором всё уже готово
Цитата Сообщение от lesromand Посмотреть сообщение
Какую книжку вы бы могли посоветовать?
Литература C++


Лучшая книга по с++ для новичков
С чего начать изучение C++
Нужна книга по С++
Посоветуйте хорошую книгу по С++
Какую книгу выбрать
Книга для начинающего по С++
Посоветуйте отличную книжку для новичка по изучению С++
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.08.2013, 14:24     Непонятки после php #3
Цитата Сообщение от lesromand Посмотреть сообщение
После php очень трудно понять что такое указатели и зачем они нужны, можете обьяснить?
Где-то пару лет назад сталкивался с PHP (совсем немного), очень нехватало указателей. Потом меня научили делать так
PHP
1
2
3
4
5
$function_ptr; // типа указатель на функцию
$function_ptr = "function1";
$function_ptr();
...
function function1() {}
очень удивила (а потом понравилась) такая гибкость, я к ней даже немного привык, но потом (к счастью) мои муки с РНР закончились и о нем больше не вспоминаю.

Кстати код выше - пример того, зачем нужны указатели.
lesromand
0 / 0 / 0
Регистрация: 10.10.2012
Сообщений: 98
21.08.2013, 14:27  [ТС]     Непонятки после php #4
Цитата Сообщение от Croessmah Посмотреть сообщение
Кхм... достаточно обширная тема. Что конкретно не понятно?

Можно велосипед изобретать, заодно пригодятся указатели а можете использовать, например, класс std::vector в котором всё уже готово

Литература C++


Лучшая книга по с++ для новичков
С чего начать изучение C++
Нужна книга по С++
Посоветуйте хорошую книгу по С++
Какую книгу выбрать
Книга для начинающего по С++
Посоветуйте отличную книжку для новичка по изучению С++
Спасибо за быстрый ответ)

Непонятно зачем они нужны, чем они лучше переменных?Их можно удалить через delete, это понятно.Но переменные в конце выполнения программы всёравно будут удалены.
Также зачем нужны указатели на указатели?Почему напрямую не обратится у нужному указателю?

Добавлено через 1 минуту
Цитата Сообщение от Kastaneda Посмотреть сообщение
Где-то пару лет назад сталкивался с PHP (совсем немного), очень нехватало указателей. Потом меня научили делать так
PHP
1
2
3
4
5
$function_ptr; // типа указатель на функцию
$function_ptr = "function1";
$function_ptr();
...
function function1() {}
очень удивила (а потом понравилась) такая гибкость, я к ней даже немного привык, но потом (к счастью) мои муки с РНР закончились и о нем больше не вспоминаю.

Кстати код выше - пример того, зачем нужны указатели.
Не совсем понял, в переменной - название функции.
Так почему же в c++ также нельзя в переменную записать название?
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
21.08.2013, 14:27     Непонятки после php #5
Цитата Сообщение от lesromand Посмотреть сообщение
1)После php очень трудно понять что такое указатели
Как работают ссылки в PHP читали? так вот это то же самое только более низкоуровневое
Цитата Сообщение от lesromand Посмотреть сообщение
Так почему же в c++ также нельзя в переменную записать название?
потому что c++ не php
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11815 / 6794 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
21.08.2013, 14:28     Непонятки после php #6
Цитата Сообщение от lesromand Посмотреть сообщение
чем они лучше переменных?
Указатель - это такая же переменная, так что ничем
Просто в указателе содержится адрес какой-то памяти.

Цитата Сообщение от lesromand Посмотреть сообщение
Их можно удалить через delete, это понятно.
delete освобождает память, ранее выделенную new, но не удаляет указатель.
Цитата Сообщение от lesromand Посмотреть сообщение
Также зачем нужны указатели на указатели?
Например, чтобы можно было изменить в функции переданный указатель, или, например для имитации двумерных массивов ( или еще больше измерений, но тогда и цепочка будет больше ********* )
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
21.08.2013, 14:31     Непонятки после php #7
Цитата Сообщение от Croessmah Посмотреть сообщение
Можно велосипед изобретать, заодно пригодятся указатели а можете использовать, например, класс std::vector в котором всё уже готово
А почему так часто советуют использовать std::vector , а не std::list или std::deque?
По-моему, в 90% случаях, когда требуется "динамический массив", на деле нужен просто контейнер динамического размера, в котором важна возможность наращивания/удаления элементов с конца.
Для этого и используют список или дек!
Вектор же в этой роли крайне неэффективен.
Но вопрос даже не в оптимизации, а в том, ПОЧЕМУ первым советом идёт именно вектор???
Один из самых сложных в восприятии контейнеров...
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11815 / 6794 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
21.08.2013, 14:32     Непонятки после php #8
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
а не std::list или std::deque?
Потому что необходим массив
Цитата Сообщение от lesromand Посмотреть сообщение
Если вначале выполнения программы мне не известно размер массива
а не список
lesromand
0 / 0 / 0
Регистрация: 10.10.2012
Сообщений: 98
21.08.2013, 14:33  [ТС]     Непонятки после php #9
Цитата Сообщение от Croessmah Посмотреть сообщение
Указатель - это такая же переменная, так что ничем
Просто в указателе содержится адрес какой-то памяти.


delete освобождает память, ранее выделенную new, но не удаляет указатель.

Например, чтобы можно было изменить в функции переданный указатель, или, например для имитации двумерных массивов ( или еще больше измерений, но тогда и цепочка будет больше ********* )
Освобождает память но не удаляет, это как?Оно в воздухе тогда хранится?
Croessmah
21.08.2013, 14:35
  #10

Не по теме:

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
на деле нужен просто контейнер динамического размера, в котором важна возможность наращивания/удаления элементов с конца.
Ну если брать только добавление/удаление в конец, то список тут может здорово проиграть.

Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.08.2013, 14:36     Непонятки после php #11
Цитата Сообщение от lesromand Посмотреть сообщение
Не совсем понял, в переменной - название функции.
Так почему же в c++ также нельзя в переменную записать название?
Потому что это рантайм, а С++ компилируемый язык и адреса вызываемых функций должный быть известны на этапе компиляции. РНР вроде как тоже можно компилировать, но в этом случае для преведенного выше кода будет сгенерирован такой огромный код, который не один С++'ник не потерпит С++ - это прежде всего скорость, а потом уже удобства.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11815 / 6794 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
21.08.2013, 14:38     Непонятки после php #12
Цитата Сообщение от lesromand Посмотреть сообщение
Освобождает память но не удаляет, это как?Оно в воздухе тогда хранится?
Читайте про динамическую память. Многое прояснится.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
21.08.2013, 14:46     Непонятки после php #13
Цитата Сообщение от Croessmah Посмотреть сообщение
Ну если брать только добавление/удаление в конец, то список тут может здорово проиграть.
дек я тоже специально упомянул, если ты не заметил.
Цитата Сообщение от Croessmah Посмотреть сообщение
Потому что необходим массив
Опять же, в подавляющем большинстве случаев, когда начинающий программист говорит, что ему нужен массив, ему нужен в первую очередь "какой-то контейнер".
Он просто не задумывался, что кроме массивов есть ещё контейнеры, поэтому и просит "массив, размер которого неизвестен".
Вот ты спроси у ТС, ему точно нужен массив, или сойдёт и дек? Он (ну может и не он, а другой новичёк) ответит "эээ, а какая разница?"
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
21.08.2013, 14:52     Непонятки после php #14
Kuzia domovenok, хочешь об этом поговорить - создавай свою тему. Преимущество вектора в том что это гарантированный массив, тогда как про дек такого сказать нельзя.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
21.08.2013, 15:01     Непонятки после php #15
Цитата Сообщение от Jupiter Посмотреть сообщение
Kuzia domovenok, хочешь об этом поговорить - создавай свою тему. Преимущество вектора в том что это гарантированный массив, тогда как про дек такого сказать нельзя.
и ЧО??? Читай C. Мейерс - Эффективное использование STL и подобные учебники. Читай, зубри, пока не осознаешь.

Но сначала прочитай ещё раз мои посты в теме!
Особенно последний, в котором я написал, что в 90% случаев начинающий программист задаёт вопрос про МАССИВ, несмотря на то, что ему абсолютно наплевать на расположение этих данных в памяти. Он тупо не в курсе о существовании других контейнеров, поэтому спрашивает про "массив".
И поэтому я хочу ему помочь именно в этой теме.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.08.2013, 15:04     Непонятки после php #16
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
и ЧО???
Если нужен массив - обычно советуют именно массив (вектор), а не сплетение из указателей, разбросанное по всему heap'у.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
21.08.2013, 15:10     Непонятки после php #17
Цитата Сообщение от Kastaneda Посмотреть сообщение
Если нужен массив - обычно советуют именно массив (вектор), а не сплетение из указателей, разбросанное по всему heap'у.
Готов спорить, что ТСу плевать на расположение своих данных в heape
fatalis
8 / 8 / 1
Регистрация: 09.08.2013
Сообщений: 68
21.08.2013, 15:17     Непонятки после php #18
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
и ЧО??? Читай C. Мейерс - Эффективное использование STL и подобные учебники. Читай, зубри, пока не осознаешь.

Но сначала прочитай ещё раз мои посты в теме!
Особенно последний, в котором я написал, что в 90% случаев начинающий программист задаёт вопрос про МАССИВ, несмотря на то, что ему абсолютно наплевать на расположение этих данных в памяти. Он тупо не в курсе о существовании других контейнеров, поэтому спрашивает про "массив".
И поэтому я хочу ему помочь именно в этой теме.
Преимущество вектора в гарантированном константом доступе до н-ого елемента.То есть,обращение a[i] исполняется за O(1),в отличии от списков,где доступ к элементам O(n)
lesromand
0 / 0 / 0
Регистрация: 10.10.2012
Сообщений: 98
21.08.2013, 15:32  [ТС]     Непонятки после php #19
Еще такой вопрос:
Есть класс Human например.
Какова разница между определением его как:
C
1
Human i;
И
C
1
Human i = new Human;
И еще, что будет если написать так:
C
1
int i = new Human;
Т.е тип переменной не будет соответствовать классу.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.08.2013, 15:34     Непонятки после php
Еще ссылки по теме:

непонятки с указателями C++
C++ Непонятки со списком
C++ непонятки с for

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

Или воспользуйтесь поиском по форуму:
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
21.08.2013, 15:34     Непонятки после php #20
Цитата Сообщение от fatalis Посмотреть сообщение
Преимущество вектора в гарантированном константом доступе до н-ого елемента.То есть,обращение a[i] исполняется за O(1),в отличии от списков,где доступ к элементам O(n)
Садись пять!
А ты знаешь, что за задача у автора???
В огромном числе задач от контейнера требуется только последовательный перебор элементов с помощью итераторов без намёка на произвольный доступ.
Смотрите, наконец! Автор не знает, что такое указатели! Вы все действительно считаете, что он пишет какой-то алгоритм, требующий произвольного доступа от контейнера??? Да перебор элементов в цикле - максимум, чем ограничиваются подобные программы! Автор сам не знает, какой контейнер ему нужен. Ему нужно "подобие массива", обладающее свойствами
1) хранить данные
2) динамически изменять размер.
Ни о каких свойствах, специфичных массиву, автор не упоминал.

Что вы все прицепились к его словам про "массив"?
Я вам гарантирую, что под словом массив он подразумевал вообще "какой-то контейнер".
И раз уж придираетесь упоминанию того, что нужен "массив", то я вам скажу, что vector не обладает всеми свойствами массива. В частности, указатели/ссылки на его элементы перестают быть валидными, после некоторых операций над вектором. Но речь не об этом же!

А вы понять никак не можете...
Yandex
Объявления
21.08.2013, 15:34     Непонятки после php
Ответ Создать тему
Опции темы

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