|
8 / 8 / 5
Регистрация: 28.10.2012
Сообщений: 135
|
||||||
Можно ли обойти динамический массив не зная его размер?11.04.2016, 02:13. Показов 13805. Ответов 79
Метки нет (Все метки)
1
|
||||||
| 11.04.2016, 02:13 | |
|
Ответы с готовыми решениями:
79
Можно ли создать массив, изначально не зная его размерности? Можно ли задать массив, не зная заранее его длину? |
|
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
|
||||||
| 11.04.2016, 02:42 | ||||||
|
Есть идейка, например, если вы поместите в конец массива определенное число (предварительно добавив там еще место для еще одного значения), при нахождении которого цикл будет прекращен, это неудобно, потому что, если, например, в начале где-то в массив будет введено то самое "останавливающие" число, то пройтись по нему не получится и память лишняя расходуется. Но в конце концов, count не нужен.
Вот пример:
0
|
||||||
|
Падаван С++
447 / 261 / 89
Регистрация: 11.11.2014
Сообщений: 916
|
||||||
| 11.04.2016, 03:00 | ||||||
|
Если массив весь заполнен то можно вот так
1
|
||||||
|
267 / 189 / 33
Регистрация: 15.01.2011
Сообщений: 681
|
|
| 11.04.2016, 04:02 | |
|
решил дыру сваять ? ))
0
|
|
|
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
|
|
| 11.04.2016, 04:46 | |
|
0
|
|
|
8 / 8 / 5
Регистрация: 28.10.2012
Сообщений: 135
|
|||||||
| 11.04.2016, 11:45 [ТС] | |||||||
Вот нашёл такой способ, но он не рабочий =): //проблема в том что если цикл выходит за массив, указатель pArr содержит кучу, которая может быть как "true"
0
|
|||||||
|
63 / 35 / 25
Регистрация: 17.07.2014
Сообщений: 457
|
|
| 11.04.2016, 12:27 | |
|
Вы, может быть, видели иногда в примерах, как в функцию передают два параметра сразу - указатель и размерность. Это делается по той причине, что есть масса возможных проблем с вычислением корректной длины массива, в том числе и sizeof способа.
Поэтому, если Вы хотите куда либо передавать такие значения, передавайте еще и размерность. Если нет необходимости использовать именно стандартный массив, используйте std::vector - это сильно упростит Вам жизнь.
1
|
|
| 11.04.2016, 12:32 | |
|
0
|
|
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
| 11.04.2016, 12:37 | |
|
nofx,
1) динамического массива не существует 2) не используйте сырые указатели 3) если п.2 нужен по ТЗ, пишите класс-обёртку, который будет иметь методы begin, end
1
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 11.04.2016, 12:52 | |
|
0
|
|
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
| 11.04.2016, 13:03 | |
|
nmcf, массив в С++ имеет статический размер по определению, так называемая динамика достигается созданием нового массива и копирования с старого данных.
0
|
|
|
Комп_Оратор)
|
||
| 11.04.2016, 13:38 | ||
|
Динамический массив, это действительно миф. Массив (регулярный кусок) памяти выделенный динамически, это то, что называют динамическим массивом. И это древнее зло. Поэтому на вопрос:
Если в прямом смысле,то да. Оказаться за массивом выделенной памяти очень просто. Даже если массив имеет размер равный максимальному значению для индекса, то обращение по максимальному значению индекса будет обращением к памяти, которая находится сразу за последним элементом. Так как индексация начинается с нуля. То есть обойти массив (памяти) всегда можно. Но ни один компилятор не определяет направление обхода: "слева" или "справа".
0
|
||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 11.04.2016, 13:43 | |
|
rikimaru2013, на эту тему регулярно спорят здесь. Статический/динамический - характеристика способа выделения памяти, а не свойство массива изменять размер.
0
|
|
|
Комп_Оратор)
|
|||||||
| 11.04.2016, 16:35 | |||||||
0
|
|||||||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 11.04.2016, 16:48 | |
|
IGPIGP, а ты ещё дальше пошёл, теперь уже понятие массив оспаривается. Т. е. массив не может быть в памяти, выделенной new? А если он внутри структуры?
0
|
|
|
267 / 189 / 33
Регистрация: 15.01.2011
Сообщений: 681
|
|
| 11.04.2016, 17:23 | |
|
0
|
|
|
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
|
|
| 11.04.2016, 17:30 | |
|
0
|
|
|
Комп_Оратор)
|
|||||||
| 11.04.2016, 19:09 | |||||||
![]() Цитату Липмана не смог прочесть. ![]() ps вопрос темы сводится к тому, можно ли узнать размер выделенной динамически области, имея только указатель на неё. Ответ очевиден.
1
|
|||||||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 11.04.2016, 19:11 | |
|
С точки зрения структур данных это массив. Вот о чём я. А то, что размер нельзя получить - не так важно.
0
|
|
|
Комп_Оратор)
|
||
| 11.04.2016, 19:19 | ||
0
|
||
| 11.04.2016, 19:19 | |
|
Помогаю со студенческими работами здесь
20
Как правильно передать динамический массив в функцию, увеличивающую его размер, чтобы изменения сохранились
Создать массив с нулями и единицами в шахматном порядке, что бы его размер можно было вводить с клавиатуры
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|