Advanced Chunk Processing Library 0.2.0
A comprehensive C++ library for advanced data chunking strategies and processing operations
Loading...
Searching...
No Matches
chunk_strategy_implementations.hpp
Go to the documentation of this file.
1#pragma once
2
4#include <memory>
5#include <vector>
6
7namespace chunk_processing {
8
9template <typename T>
11private:
12 double threshold_;
13
14public:
16
17 std::vector<std::vector<T>> apply(const std::vector<T>& data) const override {
18 std::vector<std::vector<T>> result;
19 if (data.empty())
20 return result;
21
22 std::vector<T> current_chunk;
23 for (const auto& value : data) {
24 if (!current_chunk.empty() && std::abs(value - current_chunk.back()) > threshold_) {
25 result.push_back(current_chunk);
26 current_chunk.clear();
27 }
28 current_chunk.push_back(value);
29 }
30 if (!current_chunk.empty()) {
31 result.push_back(current_chunk);
32 }
33 return result;
34 }
35};
36
37template <typename T>
39private:
41
42public:
43 explicit SimilarityChunkingStrategy(double threshold) : similarity_threshold_(threshold) {}
44
45 std::vector<std::vector<T>> apply(const std::vector<T>& data) const override {
46 std::vector<std::vector<T>> result;
47 if (data.empty())
48 return result;
49
50 std::vector<T> current_chunk;
51 for (const auto& value : data) {
52 if (!current_chunk.empty() &&
53 calculate_similarity(value, current_chunk.back()) < similarity_threshold_) {
54 result.push_back(current_chunk);
55 current_chunk.clear();
56 }
57 current_chunk.push_back(value);
58 }
59 if (!current_chunk.empty()) {
60 result.push_back(current_chunk);
61 }
62 return result;
63 }
64
65private:
66 double calculate_similarity(const T& a, const T& b) const {
67 return 1.0 / (1.0 + std::abs(static_cast<double>(a) - static_cast<double>(b)));
68 }
69};
70
71} // namespace chunk_processing
Defines various strategies for chunking data based on different criteria.
std::vector< std::vector< T > > apply(const std::vector< T > &data) const override
std::vector< std::vector< T > > apply(const std::vector< T > &data) const override