Skip to content
Welcome to the new CppUtils documentation!
using CppUtils::Container::BidirectionalMap< Lhs, Rhs >::Pair = std::pair<Lhs, Rhs>;
using CppUtils::Container::BidirectionalMap< Lhs, Rhs >::Map = MultiKeyMap< TaggedKey<"Left", Lhs>, TaggedKey<"Right", Rhs>, void>;
using CppUtils::Container::BidirectionalMap< Lhs, Rhs >::value_type = typename Map::value_type;
using CppUtils::Container::BidirectionalMap< Lhs, Rhs >::size_type = std::size_t;
using CppUtils::Container::BidirectionalMap< Lhs, Rhs >::difference_type = std::ptrdiff_t;
using CppUtils::Container::BidirectionalMap< Lhs, Rhs >::reference = typename Map::reference;
using CppUtils::Container::BidirectionalMap< Lhs, Rhs >::const_reference = typename Map::const_reference;
using CppUtils::Container::BidirectionalMap< Lhs, Rhs >::pointer = typename Map::pointer;
using CppUtils::Container::BidirectionalMap< Lhs, Rhs >::const_pointer = typename Map::const_pointer;
using CppUtils::Container::BidirectionalMap< Lhs, Rhs >::iterator = typename Map::const_iterator;
using CppUtils::Container::BidirectionalMap< Lhs, Rhs >::const_iterator = typename Map::const_iterator;
BidirectionalMap::BidirectionalMap() = default;

explicit BidirectionalMap::BidirectionalMap(auto&&... pairs) requires (sizeof...(pairs) > 0 and (std::same_as<std::remove_cvref_t<decltype(pairs)>, Pair> and ...));

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

explicit BidirectionalMap::BidirectionalMap(std::initializer_list<Pair> values);

[[nodiscard]] constexpr auto BidirectionalMap::begin(this auto&& self) noexcept -> decltype(auto);

[[nodiscard]] constexpr auto BidirectionalMap::cbegin() const noexcept -> decltype(auto);

[[nodiscard]] constexpr auto BidirectionalMap::end(this auto&& self) noexcept -> decltype(auto);

[[nodiscard]] constexpr auto BidirectionalMap::cend() const noexcept -> decltype(auto);

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

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

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

auto BidirectionalMap::insert(Lhs lhs, Rhs rhs) -> bool;

auto BidirectionalMap::insert(Pair value) -> bool;

[[nodiscard]] auto BidirectionalMap::findLeft(const Lhs& lhs) const noexcept -> const_iterator;

[[nodiscard]] auto BidirectionalMap::findRight(const Rhs& rhs) const noexcept -> const_iterator;

[[nodiscard]] auto BidirectionalMap::containsLeft(const Lhs& lhs) const noexcept -> bool;

[[nodiscard]] auto BidirectionalMap::containsRight(const Rhs& rhs) const noexcept -> bool;

[[nodiscard]] auto BidirectionalMap::left(const Lhs& lhs) const -> const Rhs&;


auto BidirectionalMap::eraseLeft(const Lhs& lhs) noexcept -> bool;

auto BidirectionalMap::eraseRight(const Rhs& rhs) noexcept -> bool;