Назад к задачамПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Senior
35
Проверка валидности итератора после модификации контейнера
Условие задачи
Необходимо проанализировать, насколько безопасно использовать полученный итератор после того, как в контейнер добавляются новые элементы, и указать, для каких 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;
}