Как создать собственную функцию next()?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как создать собственную функцию next()?

Сообщение Anonymous »

В C++ мне нужен собственный итератор, который обрабатывает массив, не все элементы которого помечены как допустимые. Таким образом, функция next() должна быть немного умнее той, что просто выполняет ++iterator; Мне нужно, чтобы он проверил, действителен ли следующий элемент, пропустил его, если это не так, и так далее, пока не будет найден действительный элемент или не произойдет конец массива. Просто интересно, есть ли более элегантный способ сделать это, вместо того, чтобы проверять все элементы в цикле один за другим. Например:
struct MyDataType {
// ...
bool _flagValid;
// ...

bool is_valid() { return _flagValid; }
};

MyDataType DataArray[DATA_ARRAY_SIZE];
// ...
uint32_t count_valid_ones () {
auto count = 0U;
for (auto &d: DataArray) {
if (d.is_valid) count++;
}
return count;
}

Но этот путь был бы предпочтительнее:
uint32_t count_valid_ones () {
auto count = 0U;
auto __range = ValidOnesOnly(DataArray)
for (auto &d: __range) count++;
return count;
}


Подробнее здесь: https://stackoverflow.com/questions/783 ... t-function
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»