// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <vector>
void InvalidatesAllIterators() {
std::vector<int> v = {1, 2, 3};
auto it1 = v.begin();
auto it2 = v.begin() + 1;
auto it3 = v.begin() + 2;
if (it1 == v.end() || it2 == v.end() || it3 == v.end()) {
return;
}
// Invalidates all the iterators
v.clear();
// All these are invalid
*it1 = 1;
*it2 = 2;
*it3 = 3;
}
void IteratorsStayValid() {
std::vector<int> v = {1, 2, 3};
auto it1 = v.begin();
auto it2 = v.begin() + 1;
auto it3 = v.begin() + 2;
if (it1 == v.end() || it2 == v.end() || it3 == v.end()) {
return;
}
// All these are valid because we checked them
*it1 = 1;
*it2 = 2;
*it3 = 3;
}