Skip to content

Commit d96bde2

Browse files
committed
fix: Add missing file documentation for treap.hpp
1 parent cb64bdc commit d96bde2

1 file changed

Lines changed: 19 additions & 22 deletions

File tree

weilycoder/ds/treap.hpp

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
#ifndef WEILY_CODER_DS_TREAP_HPP
22
#define WEILY_CODER_DS_TREAP_HPP
33

4+
/**
5+
* @file treap.hpp
6+
* @brief Treap Data Structure
7+
*/
8+
49
#include "../random.hpp"
510
#include <functional>
611
#include <limits>
@@ -9,6 +14,9 @@
914
#include <vector>
1015

1116
namespace weilycoder {
17+
/**
18+
* @brief Base class for Treap data structure, providing random priority generation.
19+
*/
1220
struct treap_base {
1321
private:
1422
static inline uint32_t rand32 = 0;
@@ -26,8 +34,7 @@ template <typename T> struct Treap : public treap_base {
2634
T value;
2735
uint32_t priority;
2836
size_t size, left, right;
29-
node(const T &value)
30-
: value(value), priority(get_rand()), size(1u), left(null), right(null) {}
37+
node(const T &value) : value(value), priority(get_rand()), size(1u), left(null), right(null) {}
3138
};
3239

3340
std::vector<size_t> free_list;
@@ -149,8 +156,7 @@ template <typename T> struct Treap : public treap_base {
149156
* @return A pair of roots of the left and right treaps.
150157
* @note If the treap has not maintained sorted order, the result is undefined.
151158
*/
152-
template <typename Compare = std::less<T>>
153-
std::pair<size_t, size_t> lower_split(size_t p, const T &value) {
159+
template <typename Compare = std::less<T>> std::pair<size_t, size_t> lower_split(size_t p, const T &value) {
154160
constexpr Compare less;
155161
if (p == null)
156162
return {null, null};
@@ -177,8 +183,7 @@ template <typename T> struct Treap : public treap_base {
177183
* @return A pair of roots of the left and right treaps.
178184
* @note If the treap has not maintained sorted order, the result is undefined.
179185
*/
180-
template <typename Compare = std::less<T>>
181-
std::pair<size_t, size_t> upper_split(size_t p, const T &value) {
186+
template <typename Compare = std::less<T>> std::pair<size_t, size_t> upper_split(size_t p, const T &value) {
182187
constexpr Compare less;
183188
if (p == null)
184189
return {null, null};
@@ -208,8 +213,7 @@ template <typename T> struct Treap : public treap_base {
208213
* @note If want to split all equal values into the middle treap,
209214
* use `lower_split` and `upper_split` instead.
210215
*/
211-
template <typename Compare = std::less<T>>
212-
std::tuple<size_t, size_t, size_t> value_split(size_t p, const T &value) {
216+
template <typename Compare = std::less<T>> std::tuple<size_t, size_t, size_t> value_split(size_t p, const T &value) {
213217
constexpr Compare less;
214218
if (p == null)
215219
return {null, null, null};
@@ -257,8 +261,7 @@ template <typename T> struct Treap : public treap_base {
257261
* @return The index of the found node, or `null` if not found.
258262
* @note If the treap has not maintained sorted order, the result is undefined.
259263
*/
260-
template <typename Compare = std::less<T>>
261-
size_t get_greater(size_t p, const T &value) const {
264+
template <typename Compare = std::less<T>> size_t get_greater(size_t p, const T &value) const {
262265
if (p == null)
263266
return null;
264267
constexpr Compare less;
@@ -278,8 +281,7 @@ template <typename T> struct Treap : public treap_base {
278281
* @return The index of the found node, or `null` if not found.
279282
* @note If the treap has not maintained sorted order, the result is undefined.
280283
*/
281-
template <typename Compare = std::less<T>>
282-
size_t get_less(size_t p, const T &value) const {
284+
template <typename Compare = std::less<T>> size_t get_less(size_t p, const T &value) const {
283285
if (p == null)
284286
return null;
285287
constexpr Compare less;
@@ -299,8 +301,7 @@ template <typename T> struct Treap : public treap_base {
299301
* @return The number of elements less than the given value.
300302
* @note If the treap has not maintained sorted order, the result is undefined.
301303
*/
302-
template <typename Compare = std::less<T>>
303-
size_t get_rank(size_t p, const T &value) const {
304+
template <typename Compare = std::less<T>> size_t get_rank(size_t p, const T &value) const {
304305
if (p == null)
305306
return 0;
306307
constexpr Compare less;
@@ -349,8 +350,7 @@ template <typename T> struct Treap : public treap_base {
349350
* @return The new root of the treap after insertion.
350351
* @note If the treap has not maintained sorted order, the result is undefined.
351352
*/
352-
template <typename Compare = std::less<T>>
353-
size_t insert(size_t root, const T &value) {
353+
template <typename Compare = std::less<T>> size_t insert(size_t root, const T &value) {
354354
auto [left, right] = lower_split<Compare>(root, value);
355355
size_t newnode = new_node(value);
356356
return merge(merge(left, newnode), right);
@@ -365,8 +365,7 @@ template <typename T> struct Treap : public treap_base {
365365
* and a boolean indicating whether the insertion took place.
366366
* @note If the treap has not maintained sorted order, the result is undefined.
367367
*/
368-
template <typename Compare = std::less<T>>
369-
std::pair<size_t, bool> insert_unique(size_t root, const T &value) {
368+
template <typename Compare = std::less<T>> std::pair<size_t, bool> insert_unique(size_t root, const T &value) {
370369
auto [left, mid, right] = value_split<Compare>(root, value);
371370
if (mid != null) {
372371
// Value already exists, do not insert
@@ -396,8 +395,7 @@ template <typename T> struct Treap : public treap_base {
396395
* @return The new root of the treap after erasure.
397396
* @note If the treap has not maintained sorted order, the result is undefined.
398397
*/
399-
template <typename Compare = std::less<T>>
400-
size_t erase_value(size_t root, const T &value) {
398+
template <typename Compare = std::less<T>> size_t erase_value(size_t root, const T &value) {
401399
auto [left, mid, right] = value_split<Compare>(root, value);
402400
if (mid != null)
403401
free_list.push_back(mid);
@@ -413,8 +411,7 @@ template <typename T> struct Treap : public treap_base {
413411
* @return The new root of the treap after erasure.
414412
* @note If the treap has not maintained sorted order, the result is undefined.
415413
*/
416-
template <typename Compare = std::less<T>>
417-
size_t erase_value_all(size_t root, const T &value) {
414+
template <typename Compare = std::less<T>> size_t erase_value_all(size_t root, const T &value) {
418415
auto [left, right] = lower_split<Compare>(root, value);
419416
auto [mid, rright] = upper_split<Compare>(right, value);
420417
erase_treap(mid);

0 commit comments

Comments
 (0)