Задать вопрос
@lyovamin

Как узнать размер незаполненного массива в c++?

Допустим есть массив: int m[5] = {1, 2, 3}
как узнать его длину(3)?
или как узнать какой элемент является незаполненным?
а есть ли универсальный способ для любого массива не только для int?
  • Вопрос задан
  • 143 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
@dima20155
you don't choose c++. It chooses you
Заполните изначально массив INT_MAX и затем заполните его на столько элементов, сколько нужно. Затем ищите первый элемент равный INT_MAX. Индекс этого элемента и будет длиной массива см. Как работает strlen.

Второй и наилучший вариант - использовать std::array или написать его аналог
Ответ написан
@rPman
для массивов изменяемого размера используй std::vector (а так же для разнообразия std::deque, std::list, а если к примеру значения уникальные то std::map а вообще контейнеров списков в c++ много)

это примерно в 2-3 раза медленнее и кушает память, бонусом будет контроль выхода за границы.

само собой можно на основе обычных c-массивов и своего класса запилить под свои нужды и логику, например хранить рядом с массивом его текущую длину, при превышении текущего размера пересоздавать вдвое большего размера, а при двухкратном уменьшении - соответственно уменьшать)
Ответ написан
Комментировать
@kalsc12345
Неизвестный человек.
Ну конечно уж я ерундой занимаюсь.
Ну мои методики:
Длина.
int m[5] = {1, 2, 3};
int length = 3; // исходно, массив содержит 3 элемента

// добавляем новый элемент в массив
m[length] = 4;
length++;

// теперь массив содержит 4 элемента


Незаполненный.

int m[5] = {1, 2, 3};
int length = 3;

// ищем незаполненный элемент
for (int i = 0; i < length; i++) {
  if (m[i] == 0) {
    std::cout << "Незаполненный элемент: " << i << std::endl;
    break;
  }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы