Sobes.tech
Back to tasks
Junior — Senior
34

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

Get help with live coding in real time with Sobes Copilot
Task condition

Необходимо проанализировать, насколько безопасно использовать полученный итератор после того, как в контейнер добавляются новые элементы, и указать, для каких 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;
}