|
Заблокирован
|
||||||
Какой массив лучше?27.07.2021, 21:33. Показов 5458. Ответов 40
Метки нет (Все метки)
Уже несколько дней не могу понять, какие массивы использовать в своем проекте (нужны int, double, string массивы). Буду работать с элементами массивов с помощью циклов. Размер массивов будет известен при инициализации. Ниже предлагаю реализации трех видов массивов:
a - массив <array> b - массив <vector> c - массив с указателем Обычные массивы не рассматриваю, т.к. функции не способны их возвращать. Какой массив будет самым быстрым?
0
|
||||||
| 27.07.2021, 21:33 | |
|
Ответы с готовыми решениями:
40
Какой вариант более оптимизирован? Какой лучше выбрать? Как лучше залить текстуру в массив? Какой формат текстуры лучше использовать? |
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 28.07.2021, 14:41 | |||||||
|
допустим, сначала ты выделил память для 10 элементов:
для этого тебе придется: 1. выделить новый блок данных на 1 элемент больше. 2. скопировать все данные из предыдущего в новый блок данных 3. удалить ставшим неактуальным предыдущий блок данных. 4. перенацелить указатель на новый блок данных. и вот так ты будешь делать каждый раз, когда тебе понадобится добавить ещё один элемент. вектор оптимизует эту процедуру. он выделяет память не на 1 элемент больше, а сразу с запасом. и пока этот запас не закончился, добавление в конец будет быстрым. потому что не нужно будет ничего заново ни выделять, ни копировать. конечно, ты можешь и для обычного сырого указателя реализовать аналогичную поддержку работы с резервом. но тогда, полученное в итоге изделие и будет аналогом вектора.
1
|
|||||||
|
Заблокирован
|
|||
| 28.07.2021, 14:46 [ТС] | |||
|
что плохого, когда создаю int* numbers = new int [10];количество элементов в массиве я точно знаю Добавлено через 2 минуты
0
|
|||
|
6 / 6 / 0
Регистрация: 07.07.2021
Сообщений: 32
|
|||
| 28.07.2021, 14:55 | |||
|
0
|
|||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|||||||
| 28.07.2021, 14:59 | |||||||
|
вызывается функция
Более того, аналогично работает и std::string, которая хотя и выделена в отдельный класс, не наследуемый напрямую от std::vector, работает по аналогичному принципу. Добавлено через 3 минуты Но для того, чтоб вектор использовал свои возможности, а не был неудобной обёрткой для динамически выделенного массива, его нужно создать один раз, и в эту функцию передавать по ссылке/указателю, а в функции - корректировать его размер на n.
0
|
|||||||
|
Заблокирован
|
|||||||||||
| 28.07.2021, 15:01 [ТС] | |||||||||||
|
В моем проекте будут массивы с точным количеством элементов.
многие из них получают константное количество элементов:
Поэтому я не понимаю, когда мне говорят "используй vector". Я, конечно, понимаю, что vector содержит много свистулек, которые очень полезны для разраба. Но конкретно в моем проекте не вижу смысла усложнить код вектором, когда достаточно обычных указателей.
0
|
|||||||||||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||
| 28.07.2021, 15:04 | ||
|
0
|
||
|
Заблокирован
|
||
| 28.07.2021, 15:05 [ТС] | ||
|
0
|
||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||
| 28.07.2021, 15:06 | ||
|
0
|
||
|
Заблокирован
|
||
| 28.07.2021, 15:06 [ТС] | ||
|
0
|
||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|||||||
| 28.07.2021, 15:06 | |||||||
(Хотя в таком случае можно передавать снаружи int a[20], поскольку больших длин у тебя нет, но вернуть не только его, но и "использовавшуюся длину")
0
|
|||||||
|
Заблокирован
|
|||
| 28.07.2021, 15:11 [ТС] | |||
|
Добавлено через 2 минуты
0
|
|||
|
6 / 6 / 0
Регистрация: 07.07.2021
Сообщений: 32
|
||
| 28.07.2021, 15:13 | ||
|
0
|
||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|||||||
| 28.07.2021, 15:15 | |||||||
0
|
|||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 28.07.2021, 15:41 | |||||||
|
при реалоке, вектор запрашивает данные с запасом, и на этом вся его магия заканчивается. за непосредственное выделение памяти (сиреч за распределение ресурсов) отвечает не сам вектор, а используемый им аллокатор памяти. это касается не только вектора, а вообще - любых котейнеров стандартной библиотеки: все контейнеры одним из параметров принимают тип используемого аллокатора. у вектора это выглядит так:
стандартный аллокатор - довольно продуманный и практичный. лично мне на практике ни разу не понадобилось заменять его на какой либо иной. но ты, если захочешь, можешь и свой собственный аллокатор использовать. который ты можешь сделать супер-мега интеллектуальным.
0
|
|||||||
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
||
| 28.07.2021, 23:26 | ||
|
Royal_X, я чот не пойму куда ты воюещь
![]() Ты на атмегу проектируешь или какие ещё микроконтроллеры? Эт всё напоминает тему с какого-то автофорума, где мужик электроны в аккумуляторе экономил. ![]() Конечно, очень полезно разобраться с сырыми указателями сначала, но воевать-то зачем?
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 28.07.2021, 23:47 | |
|
Folian, подписываюсь под каждым словом.
А самое досадное, что потом окажется, что он совсем не в том месте наоптимизировал. Правда, конечно, если не запускать профайлер, то об этом можно никогда не узнать. Меньше знаешь - крепче спишь, как говорится
1
|
|
|
79 / 53 / 26
Регистрация: 08.09.2019
Сообщений: 141
|
|
| 28.07.2021, 23:49 | |
|
0
|
|
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
|||
| 28.07.2021, 23:55 | |||
|
Насколько я читал: если не хватает - удваивает capacity.
1
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 29.07.2021, 00:56 | |||
|
и не более того. к управлению резервом этот метод никакого отношения не имеет. сама стратегия управления резервом никак не регламентируется. это значит, что в разных компиляторах она может быть реализована по разному. единственное: какой бы ни была реализация, он должна соответствовать некоторыми требованиям. например, для метода push_back должна гарантироваться "амортизированная сложность"
2
|
|||
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
||
| 29.07.2021, 01:28 | ||
|
0
|
||
| 29.07.2021, 01:28 | |
|
Какой массив лучше использовать ? Какой лучше выбрать формат для хранения векторов (массив float) в БД Какая конфигурация лучше? На какой лучше будет тянуть последние игры? У какой из этих видеокарт лучше разгон и вообще какая лучше Какой роутер дешевый лучше купить чтобы лучше ловился интернет из другого дома? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|