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

Как создать динамический массив структур? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Выведите на экран значение переменных в строку и в столбик http://www.cyberforum.ru/cpp-beginners/thread375875.html
Помогите написать программу на С: Введите три переменные a (тип int), b (тип double) и с (тип bool) их значение определите при инициализации. Выведите на экран значение переменных в строку и в столбик, используя оператор printf.
C++ Упорядочить блоки по величине их диагоналей (по убыванию значений их диагоналей). Итак, есть следующая задача: В заданной двумерной матрице выделить 3 блока по 2 строки и 2 столбца (блоки расположены на главной диагонали матрицы). Упорядочить блоки по величине их диагоналей (по убыванию значений их диагоналей). Сколько раз я не перечитывал условие, так и не смог его понять. Буду благодарен, если кто-нибудь объяснит мне, что от меня хотят, ну и заодно, при случае,... http://www.cyberforum.ru/cpp-beginners/thread375869.html
pictureBox C++
здравтсвуйте) в windows forms applications в pictureBox необходимо нарисовать сетку(таблицу), где нужно будет закрашивать элементы этой сетки по щелчку мыши и по двойному щелчку он бы "раскрашивался".(необходимо получить координаты в сетке этого прмоугольника-строку и столбец..) подскажите пожалуйста как это можно реализовать. весь алгоритм я написал но с этим крутой затык..
C++ как правильно?
подскажите как правильно записать? есть ли другой способ записать кроме этого? sqrt(sqrt(y/x))
C++ Найти в строке слово-перевертыш максимальной длины http://www.cyberforum.ru/cpp-beginners/thread375853.html
Дана строка в виде предложения. Найти в ней слово-перевертыш максимальной длинны. Словом будем считать набор символов, отделенных с двух сторон пробелами.
C++ STRING в численный тип char в число я умею переводить: atoi(),atol(),atof(). Но это C функции, со STRING не работают уже. Есть ли функция для STRING перевода в число или придётся самостоятельно прописывать? подробнее

Показать сообщение отдельно
Bers
Заблокирован
01.11.2011, 02:16     Как создать динамический массив структур?
Цитата Сообщение от BRcr Посмотреть сообщение
вот поэтому указатели и получше, на мой взгляд, главное не забывать удалять, что там динамически насоздавали и всех делов...
Потери времени из-за одного дополнительного копирования с лихвой компенсируются за счет того, что вам не придётся самостоятельно ловить гемморой по обеспечению безопасной работы с динамической памятью, и контролировать время жизни объекта.

Контейнеры для того и придумали, что бы избавить программистов от необходимости наступать на грабли связанные с безопасной работой с памятью

Вектор возвращает ссылку на свой объект.
Если он возвращает ссылку на реальный объект - вы получаете доступ к этому объекту по этой ссылке.

Если он возвращает ссылку на указатель, который указывает на реальный объект, то вы получаете доступ к объекту через ссылку, которая указывает на указатель, который указывает на объект - итого оверхед адресации.

Постоянные оверхеды при доступе к объекту могут сожрать производительность намного сильнее, чем одноразовое лишнее копирование.

Поэтому, если по задаче перемещать объекты туда-сюда не нужно, лучше просто хранить в векторе сам объект.

Если по задаче нужно постоянно перемешивать внутри вектора объекты с места на место, то сделать можно так: создаются два вектора. Первый содержит сами объекты, а второй - индексы объектов в первом векторе.
Перемешивают индексы, сами же объекты остаются неподвижными.

Вызывающая сторона забирает индекс. А зная индекс, забирает ссылку на сам объект.
Если обернуть пару векторов в один класс, можно получить замечательный контейнер, который позволяет как бы "быстро перемешивать объекты".

В любом случае, вызывающая сторона получает в пользование ссылку на реальный объект, а не указатель. Этот трюк позволяет избежать оверхеда адрессации и как бы "быстро перемешивать" объекты.

Факт, что вызывающая сторона в своё пользование получает не сам объект, а только ссылку на него избавит от необходимости постоянно следить за утечками памяти, контролировать время жизни объекта. Для работы с объектами не придётся постоянно прибегать к услугами интеллектуальных указателей, и тп.

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