Compare commits

..

2 Commits

Author SHA1 Message Date
cat
2556a473cc Hashing concept on A and B key 2026-01-21 09:50:18 +02:00
cat
7405e91874 Hashing seperation 2026-01-21 09:48:44 +02:00
2 changed files with 24 additions and 2 deletions

View File

@@ -8,16 +8,17 @@
*/ */
#ifndef GUARD_TOURMALINE_DUALKEYMAP_H #ifndef GUARD_TOURMALINE_DUALKEYMAP_H
#define GUARD_TOURMALINE_DUALKEYMAP_H #define GUARD_TOURMALINE_DUALKEYMAP_H
#include "Hashing.hpp"
#include <cstddef> #include <cstddef>
#include <cstdint> #include <cstdint>
#include <vector> #include <vector>
namespace Tourmaline::Containers { namespace Tourmaline::Containers {
template <typename AKey, typename BKey, typename Value, template <Hashable AKey, Hashable BKey, typename Value,
uint64_t baseReservation = 1024, uint64_t baseReservation = 1024,
float reservationGrowthExponent = 1.5> float reservationGrowthExponent = 1.5>
class DualkeyMap { class DualkeyMap {
constexpr static uint64_t EmptyKey = -1;
DualkeyMap() { DualkeyMap() {
ValueList.reserve(baseReservation); ValueList.reserve(baseReservation);
HashList.reserve(baseReservation); HashList.reserve(baseReservation);

View File

@@ -0,0 +1,21 @@
/*
* SPDX-FileCopyrightText: Dora "cat" <cat@thenight.club>
* SPDX-License-Identifier: MPL-2.0
*
* This Source Code Form is subject to the terms of the Mozilla Public License,
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at http://mozilla.org/MPL/2.0/.
*/
#ifndef GUARD_TOURMALINE_HASHING_H
#define GUARD_TOURMALINE_HASHING_H
#include <concepts>
#include <functional>
namespace Tourmaline::Containers {
template <typename T>
concept Hashable = requires(T x) {
{ std::hash<T>{x}() } -> std::convertible_to<std::size_t>;
};
} // namespace Tourmaline::Containers
#endif