diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 05:46:17 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 05:46:17 +0000 |
commit | 85adc697d2ec2a379ce6d721f0419ae5df3abdb6 (patch) | |
tree | 265f329bc4544c6f11a27ac3fd6022f593a10c11 /example/segment_tree.cpp | |
parent | Initial commit. (diff) | |
download | mdds-85adc697d2ec2a379ce6d721f0419ae5df3abdb6.tar.xz mdds-85adc697d2ec2a379ce6d721f0419ae5df3abdb6.zip |
Adding upstream version 2.1.1.upstream/2.1.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'example/segment_tree.cpp')
-rw-r--r-- | example/segment_tree.cpp | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/example/segment_tree.cpp b/example/segment_tree.cpp new file mode 100644 index 0000000..4b70ed9 --- /dev/null +++ b/example/segment_tree.cpp @@ -0,0 +1,73 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/************************************************************************* + * + * Copyright (c) 2020 Kohei Yoshida + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + ************************************************************************/ + +#include <mdds/segment_tree.hpp> +#include <string> +#include <iostream> + +using std::cout; +using std::endl; + +typedef ::mdds::segment_tree<long, std::string> db_type; + +struct string_printer +{ + void operator() (const std::string& s) const + { + cout << "search hit: " << s << endl; + } +}; + +int main() try +{ + db_type db; + std::string A("A"); + std::string B("B"); + std::string C("C"); + + // Insert data into the tree. + db.insert(0, 10, A); + db.insert(2, 20, B); + db.insert(10, 15, C); + + // Don't forget to build it before calling search(). + db.build_tree(); + + // Run search and get the result. + db_type::search_results result = db.search(5); + + // Print the result. + cout << "result size: " << result.size() << endl; + std::for_each(result.begin(), result.end(), string_printer()); +} +catch (...) +{ + return EXIT_FAILURE; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |