Поиск позиции элемента в std::vector с использованием std::optional

Возвращайте индекс первого совпадения, а при отсутствии — std::nullopt. optional отличает найденный нулевой индекс от ситуации, когда элемента нет.

Короткий ответ

Что ответить на собеседовании

Возвращайте индекс первого совпадения, а при отсутствии — std::nullopt. optional отличает найденный нулевой индекс от ситуации, когда элемента нет.

Подробный разбор

Ответ с пояснениями

Условие

Необходимо реализовать функцию, которая ищет индекс заданного числа в переданном векторе и возвращает его в виде std::optionalstd::size_t. Если элемент не найден, функция должна вернуть пустой optional.

std::optional<std::size_t> find_index_n(const std::vector<int>& arr, int value)
{

}

Ответ

Возвращайте индекс первого совпадения, а при отсутствии — std::nullopt. optional отличает найденный нулевой индекс от ситуации, когда элемента нет.

#include <optional>
#include <vector>
#include <cstddef>

std::optional<std::size_t> find_index_n(const std::vector<int>& arr, int value) {
    for (std::size_t i = 0; i < arr.size(); ++i)
        if (arr[i] == value) return i;
    return std::nullopt;
}

Нужен C++17. Проверка if (index) у optional означает наличие результата, даже когда внутри хранится 0. Само значение читают через *index после такой проверки. Время O(n), память O(1).

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее