std::flat_map<Key,T,Compare,KeyContainer,MappedContainer>::replace
void replace( key_container_type&& key_cont, mapped_container_type&& mapped_cont ); | (начиная с C++23) |
Заменяет базовые контейнеры c. Эквивалентно:
c.keys = std::move(key_cont); c.values = std::move(mapped_cont);
Должны выполняться следующие условия:
- Выражение
key_cont.size() == mapped_cont.size()являетсяtrue, - Элементы
key_contотсортированы относительноcompare, и -
key_contне содержит равных элементов.В противном случае поведение не определено.
Параметры
| keys_cont | - | отсортированный контейнер ключей типа KeyContainer, содержимое которого будет перемещено в *this |
| mapped_cont | - | контейнер отображаемых значений типа MappedContainer, содержимое которого будет перемещено в *this |
Сложность
Равна сложности применения std::move к адаптированным контейнерам.
Пример
#include <algorithm>
#include <cassert>
#include <flat_map>
#include <print>
#include <utility>
#include <vector>
int main()
{
std::vector<int> keys{1, 2, 3};
assert(std::ranges::is_sorted(keys));
std::vector<double> values{2.2, 3.3, 1.1};
assert(keys.size() == values.size());
std::flat_map<int, double> map;
assert(map.empty());
map.replace(std::move(keys), std::move(values));
assert(map.size() == 3);
assert(map.keys().size() == 3);
assert(map.values().size() == 3);
assert(keys.empty());
assert(values.empty());
std::println("{}", map);
}
Вывод:
{1: 2.2, 2: 3.3, 3: 1.1}
См. также
| извлекает базовые контейнеры (открытая функция-член) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/container/flat_map/replace