Aller au contenu
Bienvenue sur la nouvelle documentation de CppUtils !
using CppUtils::Container::MultiKeyMap< KeysAndValue >::ValueType = std::tuple_element_t<keyCount, AllTypesTuple>;
using CppUtils::Container::MultiKeyMap< KeysAndValue >::Entry = Detail::EntryStorage<PureKeysTuple, ValueType>;
using CppUtils::Container::MultiKeyMap< KeysAndValue >::value_type = Entry;
using CppUtils::Container::MultiKeyMap< KeysAndValue >::size_type = std::size_t;
using CppUtils::Container::MultiKeyMap< KeysAndValue >::difference_type = std::ptrdiff_t;
using CppUtils::Container::MultiKeyMap< KeysAndValue >::reference = Entry&;
using CppUtils::Container::MultiKeyMap< KeysAndValue >::const_reference = const Entry&;
using CppUtils::Container::MultiKeyMap< KeysAndValue >::pointer = Entry*;
using CppUtils::Container::MultiKeyMap< KeysAndValue >::const_pointer = const Entry*;
using CppUtils::Container::MultiKeyMap< KeysAndValue >::StorageVector = std::vector<Entry>;
using CppUtils::Container::MultiKeyMap< KeysAndValue >::iterator = typename StorageVector::iterator;
using CppUtils::Container::MultiKeyMap< KeysAndValue >::const_iterator = typename StorageVector::const_iterator;
using CppUtils::Container::MultiKeyMap< KeysAndValue >::reverse_iterator = typename StorageVector::reverse_iterator;
using CppUtils::Container::MultiKeyMap< KeysAndValue >::const_reverse_iterator = typename StorageVector::const_reverse_iterator;
template <class TargetKey>
[[nodiscard]] static consteval auto MultiKeyMap::resolveKeyIndex() noexcept -> std::size_t;

template <String::Hasher Tag>
[[nodiscard]] static consteval auto MultiKeyMap::resolveTagPosition() noexcept -> std::size_t;

[[nodiscard]] static constexpr auto MultiKeyMap::makeEntry(auto&&... args) -> Entry;

MultiKeyMap::MultiKeyMap() = default;

explicit MultiKeyMap::MultiKeyMap(auto&&... entries) requires (sizeof...(entries) > 0 and (std::same_as<std::remove_cvref_t<decltype(entries)>, Entry> and ...));

template <std::input_iterator InputIterator>
MultiKeyMap::MultiKeyMap(InputIterator first, InputIterator last);

auto MultiKeyMap::insert(Entry entry) -> std::pair<iterator, bool>;

auto MultiKeyMap::insert(auto&&... args) -> std::pair<iterator, bool> requires (sizeof...(args) > 1 or (sizeof...(args) == 1 and (not std::same_as<std::remove_cvref_t<decltype(args)>, Entry> and ...)));

auto MultiKeyMap::emplace(auto&&... args) -> std::pair<iterator, bool>;

template <class... Args>
auto MultiKeyMap::emplace_back(Args&&... args) -> reference;

template <std::input_iterator InputIterator>
auto MultiKeyMap::insert(InputIterator first, InputIterator last) -> void;

auto MultiKeyMap::insert_range(std::ranges::input_range auto&& range) -> void;

template <std::size_t Index>
[[nodiscard]] auto MultiKeyMap::findAt(this auto&& self, const auto& key) -> decltype(auto);

[[nodiscard]] auto MultiKeyMap::find(this auto&& self, const auto& key) -> decltype(auto);

template <String::Hasher Tag>
[[nodiscard]] auto MultiKeyMap::find(this auto&& self, const auto& key) -> decltype(auto);

template <std::size_t Index>
[[nodiscard]] auto MultiKeyMap::findIteratorAt(this auto&& self, const auto& key) -> decltype(auto);

[[nodiscard]] auto MultiKeyMap::findIterator(this auto&& self, const auto& key) -> decltype(auto);

template <String::Hasher Tag>
[[nodiscard]] auto MultiKeyMap::findIterator(this auto&& self, const auto& key) -> decltype(auto);

template <std::size_t Index>
[[nodiscard]] auto MultiKeyMap::containsAt(const auto& key) const -> bool;

[[nodiscard]] auto MultiKeyMap::contains(const auto& key) const -> bool;

template <String::Hasher Tag>
[[nodiscard]] auto MultiKeyMap::contains(const auto& key) const -> bool;

template <std::size_t Index>
[[nodiscard]] auto MultiKeyMap::countAt(const auto& key) const -> std::size_t;

[[nodiscard]] auto MultiKeyMap::count(const auto& key) const -> std::size_t;

template <String::Hasher Tag>
[[nodiscard]] auto MultiKeyMap::count(const auto& key) const -> std::size_t;

template <std::size_t Index>
[[nodiscard]] auto MultiKeyMap::atIndex(this auto&& self, const auto& key) -> decltype(auto);

[[nodiscard]] auto MultiKeyMap::at(this auto&& self, const auto& key) -> decltype(auto);

template <String::Hasher Tag>
[[nodiscard]] auto MultiKeyMap::at(this auto&& self, const auto& key) -> decltype(auto);

[[nodiscard]] auto MultiKeyMap::operator[](this auto&& self, const auto& key) -> decltype(auto);

template <std::size_t Index>
auto MultiKeyMap::eraseAt(const auto& key);

auto MultiKeyMap::erase(const auto& key) requires (not std::same_as<std::remove_cvref_t<decltype(key)>, const_iterator> and not std::same_as<std::remove_cvref_t<decltype(key)>, iterator>);

template <String::Hasher Tag>
auto MultiKeyMap::erase(const auto& key);

auto MultiKeyMap::erase(const_iterator position) -> iterator;

auto MultiKeyMap::erase(const_iterator first, const_iterator last) -> iterator;

auto MultiKeyMap::clear() noexcept -> void;

auto MultiKeyMap::reserve(std::size_t newCapacity) -> void;

[[nodiscard]] auto MultiKeyMap::begin() noexcept -> iterator;

[[nodiscard]] auto MultiKeyMap::begin() const noexcept -> const_iterator;

[[nodiscard]] auto MultiKeyMap::cbegin() const noexcept -> const_iterator;

[[nodiscard]] auto MultiKeyMap::end() noexcept -> iterator;

[[nodiscard]] auto MultiKeyMap::end() const noexcept -> const_iterator;

[[nodiscard]] auto MultiKeyMap::cend() const noexcept -> const_iterator;

[[nodiscard]] auto MultiKeyMap::rbegin() noexcept -> reverse_iterator;

[[nodiscard]] auto MultiKeyMap::rbegin() const noexcept -> const_reverse_iterator;

[[nodiscard]] auto MultiKeyMap::crbegin() const noexcept -> const_reverse_iterator;

[[nodiscard]] auto MultiKeyMap::rend() noexcept -> reverse_iterator;

[[nodiscard]] auto MultiKeyMap::rend() const noexcept -> const_reverse_iterator;

[[nodiscard]] auto MultiKeyMap::crend() const noexcept -> const_reverse_iterator;

[[nodiscard]] auto MultiKeyMap::empty() const noexcept -> bool;

[[nodiscard]] auto MultiKeyMap::size() const noexcept -> std::size_t;

[[nodiscard]] auto MultiKeyMap::max_size() const noexcept -> std::size_t;

[[nodiscard]] auto MultiKeyMap::capacity() const noexcept -> std::size_t;

[[nodiscard]] auto MultiKeyMap::front() -> reference;

[[nodiscard]] auto MultiKeyMap::front() const -> const_reference;

[[nodiscard]] auto MultiKeyMap::back() -> reference;

[[nodiscard]] auto MultiKeyMap::back() const -> const_reference;

constexpr auto keyCount;