Я знаю, что если я использую контейнер c ++, который реализует интерфейс iterator
(предоставляет функции begin()
и end()
), я могу использовать цикл for, подобный этому, для итерации по нему:
for (auto element : container) {
process(element);
}
Если у меня два экземпляра одного и того же типа контейнера, я могу написать такой код
for (auto element : container1) {
process(element);
}
for (auto element : container2) {
process(element);
}
Однако это приводит к повторяющемуся коду. Я ищу способ объединить два контейнера так, чтобы я мог выполнять итерацию по ним сразу (т.е. иметь цикл for для первого цикла, а затем продолжить итерацию для второго). Примерно так:
for (auto element : container1 + container2) {
process(element);
}
Я знаю, что могу использовать такие вещи, как container1.insert(container1.end(), container2.begin(), container2.end());
, чтобы объединить их, если они окажутся векторами, но я хочу сделать это более широко, на месте, содна строка, без изменения любого контейнера.