| // 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 <algorithm> |
| #include <vector> |
| |
| void StdSearchValidIterator(const std::vector<int>& v, std::vector<int>& p) { |
| auto it = std::search(std::begin(v), std::end(v), std::begin(p), std::end(p)); |
| if (it != std::end(v)) { |
| *it; // Valid. |
| } |
| } |
| |
| void StdSearchInvalidIterator(const std::vector<int>& v, std::vector<int>& p) { |
| auto it = std::search(std::begin(v), std::end(v), std::begin(p), std::end(p)); |
| *it; // Invalid access. |
| } |
| |
| void StdSearchMismatchedIterators(std::vector<int>& v1, std::vector<int>& v2) { |
| // This is not fine because using mismatched iterators. |
| std::search(std::begin(v1), std::end(v2), std::begin(v2), std::end(v1)); |
| } |