3 / 3 / 1
Регистрация: 16.04.2009
Сообщений: 127
|
||||||
1 | ||||||
Переменная + индекс16.07.2010, 13:04. Показов 11500. Ответов 28
Метки нет (Все метки)
Всем доброго времени суток,
знает кто-нибудь, как получить название переменной, получаемое путем конкатенации строки и индекса i? т.е.
0
|
16.07.2010, 13:04 | |
Ответы с готовыми решениями:
28
Переместить элемент, имеющий индекс К на место, что имеет индекс М, сдвинув другие элементы Глобальная переменная определена в хидере. Компилятор ругается на то, что переменная переопределена несколько раз Переменная или переменная и условие В строке первый символ получает индекс 1, последний индекс 2, второй индекс 3, предпоследний индекс 4, третий индекс 5 |
150 / 73 / 27
Регистрация: 09.04.2010
Сообщений: 297
|
|
20.07.2010, 13:39 | 22 |
Эт я понимаю
Evg, Вот, как раз про это(в чем заключается ущербность) я и хотел узнать, у людей хорошо разбирающихся и работающих с ними. Типа в чем их преимущества и недостатки. А то в той литературе с которой я сталкивался тупо писалось: "Забейте на malloc() и используйте new" Может отдельную темку создать??
0
|
20.07.2010, 13:45 | 23 |
new - это аналог malloc'а, delete - аналог free, а вот аналога realloc нету. Принципиальные преимущества new перед malloc - это вызов конструкторов. Ещё нет аналога calloc, но в теории это рулится конструкторами (хотя по скорости как правило оказывается неэффективно)
Добавлено через 1 минуту Самодельный менеджер памяти на Си оказывается, как правило, простым. На Си++ - как правило сложным
1
|
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
|
|
20.07.2010, 13:46 | 24 |
Не оставить их просто не могли, как правильно сказал Evg это просто функции.
Дело не в лучше или хуже. new на самом деле чаще всего использует malloc для выделения памяти. Но есть очень существенная разница: 1. new вызывает конструкторы при выделении памяти, delete - деструкторы. 2. new кидает исключение при нехватке памяти. 3. new и delete перегружаемы, в том числе только для нужного класса.
1
|
150 / 73 / 27
Регистрация: 09.04.2010
Сообщений: 297
|
||||||
20.07.2010, 14:05 | 25 | |||||
На сколько я понимаю? если динамически выделять память, к примеру, для элементов всроеных типов, то разницы нет(new или malloc() ). а если нужна память под свои классы, то лучше new.
0
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
|
20.07.2010, 14:08 | 26 |
По-моему самая большая разница в том, что malloc() / calloc() / realloc() в случае, если память выделить не удалось, возвращают NULL и эту ситуацию программист должен сам отслеживать, а new / new [] в случае ошибки сами вызывают исключение (exception), которое прерывает выполнение программы. Кстати отсутствие аналога realloc() в С++ мне и самому не понятно...
1
|
20.07.2010, 14:13 | 27 |
Потому что в концепции Си++ лежит использование классов, в том числе STL vector, list и т.д.
Использование собственных перераспределителей памяти приведет только к большему количеству ошибок. Можно сделать так, чтобы и new/delete возвращали NULL, но только надо ли это.
0
|
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
|
|
20.07.2010, 22:35 | 28 |
Да. Но не стоит использовать функции Си в С++.
Не лучше, а только new.
0
|
22.07.2010, 20:23 | 29 |
Добавил в https://www.cyberforum.ru/faq/thread130500.html (раздел 5.6)
Надеюсь, ты не против
0
|
22.07.2010, 20:23 | |
22.07.2010, 20:23 | |
Помогаю со студенческими работами здесь
29
Переменная и индекс Переменная, использующая нижний индекс Недопустимый индекс; неопределенная переменная Переменная=Документ.имя. Сделать выборку всех документов с именем Переменная Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |