Как создать собственную функцию 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

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