(C++17) | ||||
| Sequence | ||||
(C++11) | ||||
(C++26) | ||||
(C++26) | ||||
(C++11) | ||||
| Associative | ||||
| Unordered associative | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
| Adaptors | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
| Views | ||||
(C++20) | ||||
(C++23) | ||||
| Tables | ||||
| Iterator invalidation | ||||
| Member function table | ||||
| Non-member function table |
containers extract()&&; | (since C++23) | |
Extracts adapted containersc. Equivalent toreturn std::move(c);.
After this operation*this is empty, even if an exception is thrown.
Contents |
std::move(c).
Constant.
#include <cassert>#include <flat_map>#include <print>#include <type_traits>#include <utility>#include <vector> int main(){std::flat_multimap<int,double> map{{1,1.1},{2,2.2},{3,3.3}};constauto size{map.size()}; auto c{std::move(map).extract()};assert(c.keys.size()== size);assert(c.values.size()== size);assert(map.empty());assert(map.keys().empty());assert(map.values().empty()); // The default keys and values containers are std::vector: static_assert(std::is_same_v<decltype(c.keys),std::vector<int>>); static_assert(std::is_same_v<decltype(c.values),std::vector<double>>); std::println("keys: {}", c.keys);std::println("values: {}", c.values);}
Output:
keys: [1, 2, 3]values: [1.1, 2.2, 3.3]
| replaces the underlying containers (public member function)[edit] |