Sobes.tech
Назад к задачам
Junior — Senior
35

Проверка валидности итератора после модификации контейнера

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Необходимо проанализировать, насколько безопасно использовать полученный итератор после того, как в контейнер добавляются новые элементы, и указать, для каких STL‑контейнеров такое использование не приводит к его инвалидизации.


template<typename T>
void impl(T& data) {
    data.push_back(0);
    auto iterator = data.begin();
    for (size_t i = 1u; i < 1000u; ++i) {
        data.push_back(i);
    }
    std::cout << "First: " << *iterator << std::endl;
}
int main(int argc, char** argv) {
    std::list<int> data_1;
    impl(data_1); // безопасно

    std::vector<int> data_2;
    impl(data_2); // итератор инвалидируется при push_back
    return EXIT_SUCCESS;
}