summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGloria Mundi <gloria@gloria-mundi.eu>2024-03-15 01:48:00 +0100
committerGloria Mundi <gloria@gloria-mundi.eu>2024-03-15 01:48:00 +0100
commite9958381801bf44fd0635aaa1e68541b21e193e0 (patch)
treee463b44786fc02e332e4cc205654858f95820105
parent7e24d9d392aff890981f13c299b283189d94a75d (diff)
fix persistent and add test
-rw-r--r--Makefile3
-rw-r--r--datastructures/persistent.cpp2
-rw-r--r--datastructures/test/persistent.cpp10
3 files changed, 14 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 39f92b0..7c0916a 100644
--- a/Makefile
+++ b/Makefile
@@ -2,6 +2,7 @@ TESTS = \
datastructures/test/fenwickTree.test \
datastructures/test/fenwickTree2.test \
datastructures/test/monotonicConvexHull.test \
+ datastructures/test/persistent.test \
graph/test/binary_lifting.test \
graph/test/LCA_sparse.test
@@ -43,6 +44,8 @@ datastructures/test/fenwickTree2.test: datastructures/test/fenwickTree2.cpp \
datastructures/test/monotonicConvexHull.test: \
datastructures/test/monotonicConvexHull.cpp \
datastructures/monotonicConvexHull.cpp
+datastructures/test/persistent.test: datastructures/test/persistent.cpp \
+ datastructures/persistent.cpp
graph/test/binary_lifting.test: graph/test/binary_lifting.cpp \
graph/binary_lifting.cpp graph/test/util.cpp
graph/test/LCA_sparse.test: graph/test/LCA_sparse.cpp \
diff --git a/datastructures/persistent.cpp b/datastructures/persistent.cpp
index 0a65a79..4093cdc 100644
--- a/datastructures/persistent.cpp
+++ b/datastructures/persistent.cpp
@@ -7,7 +7,7 @@ struct persistent {
: time(time), data(1, {time, value}) {}
T get(int t) {
- return prev(upper_bound(all(data), {t+1, {}}))->second;
+ return prev(upper_bound(all(data), pair{t+1, T{}}))->second;
}
int set(T value) {
diff --git a/datastructures/test/persistent.cpp b/datastructures/test/persistent.cpp
new file mode 100644
index 0000000..d98569b
--- /dev/null
+++ b/datastructures/test/persistent.cpp
@@ -0,0 +1,10 @@
+#include "../persistent.cpp"
+
+int main() {
+ int time = 0;
+ persistent<int> p(time, 0);
+ p.set(1);
+ int t1 = time;
+ p.set(2);
+ assert(p.get(t1) == 1);
+}