Я не совсем согласен, использование std::array
не имеет никакого значения.
Проблема, с которой вы сейчас сталкиваетесь, не возникает в , есть ли у нас такой элемент в контейнере , но полезен ли проверяемый нами элемент.
Рассмотрим приведенный вами пример для массива char
с. Мы просто проверяем, является ли один из элементов \0
, чтобы решить, или нет, мы должны остановить итерацию.
Как это работает? Элементы ramaining, конечно, по умолчанию инициализируются как \0
, они существуют , но бесполезны .
Аналогично, вы можете проверить, в этом примере
name.empty()
Или, чтобы избежать возможных исключений, как указано в разделе комментариев, сделайте следующее:
добавьте пользовательский конструктор в класс (или структуру, они на самом деле одинаковы.), которые инициализируют возраст до -1
, а затем проверяют, если age == -1
.
, потому что это невозможно для людей, не имеющих никакого имени, то есть вы не присваиваете ни одному из оставшихся элементов , Таким образом, остановите итерацию.
В качестве дополнения, использование std::vector
имеет смысл, но если это пока не вариант для вас, вам не нужно это учитывать.