powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / это array или map ?
13 сообщений из 13, страница 1 из 1
это array или map ?
    #39725245
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я пытаюсь изобразить простую в ПХП ситуацию, когда: arr[5] = 0; arr[8] = 1;
и всё. Больше в arr ничего нет.
НО! в C++ там есть. Нули! Либо какие-то левые цифры (иногда с минусом).
конкретно если написать так, то он выдаст так:
Код: plaintext
1.
2.
3.
4.
5.
    array<int, 3> arr;
    arr[5] = 20;

    printf("%i %i %i %i %i %i\n\n", arr[0], arr[1], arr[2], arr[3], arr[4], arr[5]);
// output: 65535 1 1225012288 32764 265690691 20



кто все эти цифры?
мне бы надо бы быть уверенным, что в arr[2] пусто (совсем отсутствует), т.е. освободить память и оставить только ячейки с нужными индексами. Т.е. фактически перезаписать старый массив новым с двумя заполненными ячейками.

Как мне чекнуть удалённую arr[2] и убедиться, что она удалена, если в ней цифра?
такое через массивы делают, через мапы, через что?
или надо непременно всем ячейкам выставлять -1, например (тогда и vector сгодится)?
...
Рейтинг: 0 / 0
это array или map ?
    #39725265
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухя пытаюсь изобразить простую в ПХП ситуацию, когда: arr[5] = 0; arr[8] = 1;
C++ не PHP

полудухНО! в C++ там есть. Нули! Либо какие-то левые цифры (иногда с минусом).
Это мусор, неинициализированная память, остатки от предыдущего ее использования.

Используй std::vector
...
Рейтинг: 0 / 0
это array или map ?
    #39725269
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поток сознания какой-то...

полудухя пытаюсь изобразить простую в ПХП ситуацию, когда: arr[5] = 0; arr[8] = 1;
и всё. Больше в arr ничего нет.

что значит ничего? nullptr, 0 ?

int arr[2] = {0. 1}; - гарантировано больше ничего нет, только 2 значения.

Если нужно чтобы 2 значения были расположенны в ячейках 5 и 8, то остальные ячейки чем-то должны быть заполнены - в твоем случае они не проинициализированы поэтому там мусор.

В качестве заполнителя, раз речь идет про тип int, можно выбрать, например, -1 и считать, что там где отрицательные числа там ничего нет.

arr[8] = { -1, -1, -1, -1, 0 -1, -1, 1 };

полудухмне бы надо бы быть уверенным, что в arr[2] пусто (совсем отсутствует), т.е. освободить память и оставить только ячейки с нужными индексами
memset(arr, -1, _countof(arr));
arr[5] = 0;
arr[2] = 1;

Если тебе надо экономить память, например, огромная таблица в Excel, но в ней заполнены только несколько ячеек, то надо использовать VirtualAlloc с MEM_COMMIT/MEM_RESERVE, как это сделать подробно рассказано у Рихтера в книгах.
...
Рейтинг: 0 / 0
это array или map ?
    #39725309
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухя пытаюсь изобразить простую в ПХП ситуацию, когда: arr[5] = 0; arr[8] = 1;
и всё. Больше в arr ничего нет.

Вы пых-пыхе у тебя ассоциативный массив. Это map или unordered_map в C++.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
это array или map ?
    #39725334
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovполудухя пытаюсь изобразить простую в ПХП ситуацию, когда: arr[5] = 0; arr[8] = 1;
и всё. Больше в arr ничего нет.

Вы пых-пыхе у тебя ассоциативный массив. Это map или unordered_map в C++.
да, но там, опять же, в несуществующих ячейках нули...
Код: plaintext
1.
2.
3.
4.
5.
6.
unordered_map<int, int> mmap;
mmap[2] = 1;
printf("%i %i %i %i %i %i\n\n", mmap[0], mmap[1], mmap[2], mmap[3], mmap[4], mmap[5]);

// output: 0 0 1 0 0 0
// (и в cout там тоже 0)


ну в общем -1 надо юзать в векторе, как я и предполагал...
всем спасибо.
...
Рейтинг: 0 / 0
это array или map ?
    #39725346
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухно там, опять же, в несуществующих ячейках нули...

А в пых-пыхе разве нет? Используй at() и будет тебе счастье.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
это array или map ?
    #39725348
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вот пых поумнее, он ошибку кидает
ну если at() юзать, то наверное также получится
...
Рейтинг: 0 / 0
это array или map ?
    #39725415
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудуха вот пых поумнее, он ошибку кидает

Я бы это не назвал "поумнее". В части использования ассоциативных массивов абсолютом
является LUA, где на них построено абсолютно всё. И вот он-то при чтении
неинициализированного элемента массива ошибку не кидает, а возвращает nil.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
это array или map ?
    #39725541
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nil тоже лучше, чем нули
...
Рейтинг: 0 / 0
это array или map ?
    #39725806
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухnil тоже лучше, чем нули

Это одно и то же.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
это array или map ?
    #39726076
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovполудухnil тоже лучше, чем нули

Это одно и то же.

Не везде. Например РСУБД.
...
Рейтинг: 0 / 0
это array или map ?
    #39726160
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TDimitry Sibiryakovпропущено...

Это одно и то же.

Не везде. Например РСУБД.
"Слово похожее" - (с).
...
Рейтинг: 0 / 0
это array или map ?
    #39728855
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухя пытаюсь изобразить простую в ПХП ситуацию, когда: arr[5] = 0; arr[8] = 1;
и всё. Больше в arr ничего нет.
НО! в C++ там есть. Нули! Либо какие-то левые цифры (иногда с минусом).
конкретно если написать так, то он выдаст так:
Код: plaintext
1.
2.
3.
4.
5.
    array<int, 3> arr;
    arr[5] = 20;

    printf("%i %i %i %i %i %i\n\n", arr[0], arr[1], arr[2], arr[3], arr[4], arr[5]);
// output: 65535 1 1225012288 32764 265690691 20



кто все эти цифры?
мне бы надо бы быть уверенным, что в arr[2] пусто (совсем отсутствует), т.е. освободить память и оставить только ячейки с нужными индексами. Т.е. фактически перезаписать старый массив новым с двумя заполненными ячейками.

Как мне чекнуть удалённую arr[2] и убедиться, что она удалена, если в ней цифра?
такое через массивы делают, через мапы, через что?
или надо непременно всем ячейкам выставлять -1, например (тогда и vector сгодится)?

Реализуйте в своем проекте тип <T, bool>, либо используйте optional. Но судя по тому, о чем вы говорите, вам скорее потребуется хеш-таблица
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / это array или map ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]