|
Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
|
Unified zip operations for mixed STL/Aleph containers. More...
#include <iostream>#include <iomanip>#include <string>#include <vector>#include <list>#include <set>#include <tclap/CmdLine.h>#include <htlist.H>#include <tpl_dynArray.H>#include <ah-zip-utils.H>Go to the source code of this file.
Functions | |
| void | print_section (const string &title) |
| void | print_subsection (const string &title) |
| void | demo_mixed_containers () |
| void | demo_predicates () |
| void | demo_transformations () |
| void | demo_utilities () |
| void | demo_advanced () |
| void | demo_conversion () |
| void | demo_practical () |
| int | main (int argc, char *argv[]) |
Unified zip operations for mixed STL/Aleph containers.
This program demonstrates ah-zip-utils.H which provides zip operations that work seamlessly with both STL and Aleph containers, and even allows mixing them in the same operation. This unified approach eliminates container-specific APIs.
Zipping combines multiple containers element-wise:
Key insight: Process related data from multiple sources together.
Different zip libraries support different containers:
ah-zip.H**: Aleph containers onlyah-zip-utils.H provides unified zip that:
uni_zip()**: Create list of tuples from any containersuni_zip_it()**: Get unified iterator for zipped containersuni_zip_all()**: All tuples satisfy predicate?uni_zip_exists()**: At least one tuple satisfies?uni_zip_none()**: No tuple satisfies?uni_zip_map()**: Transform tuples (apply function to each tuple)uni_zip_filter()**: Keep tuples satisfying predicateuni_zip_mapi()**: Transform with indexuni_zip_filteri()**: Filter with indexuni_zip_take(n)**: Take first n tuplesuni_zip_drop(n)**: Skip first n tuplesuni_zip_min()**: Find minimum tuple (by first element)uni_zip_max()**: Find maximum tupleuni_unzip()**: Split tuples back into separate containers| Feature | ah-zip.H | STL (C++20) | ah-zip-utils.H |
|---|---|---|---|
| STL support | ❌ No | ✅ Yes | ✅ Yes |
| Aleph support | ✅ Yes | ❌ No | ✅ Yes |
| Mix containers | ❌ No | ❌ No | ✅ Yes |
| Unified API | ❌ No | ❌ No | ✅ Yes |
Definition in file zip_utils_example.C.
| void demo_advanced | ( | ) |
Definition at line 359 of file zip_utils_example.C.
References Aleph::maps(), print_section(), print_subsection(), Aleph::uni_zip_equal_length(), Aleph::uni_zip_it(), Aleph::uni_zip_scan_left(), and y.
Referenced by main().
| void demo_conversion | ( | ) |
Definition at line 403 of file zip_utils_example.C.
References LocateFunctions< Container, Type >::get_it(), Aleph::maps(), print_section(), print_subsection(), Aleph::product(), Aleph::uni_zip_to_dynlist(), and Aleph::uni_zip_to_vector().
Referenced by main().
| void demo_mixed_containers | ( | ) |
Definition at line 181 of file zip_utils_example.C.
References Aleph::maps(), print_section(), print_subsection(), and Aleph::uni_zip_it().
Referenced by main().
| void demo_practical | ( | ) |
Definition at line 439 of file zip_utils_example.C.
References Aleph::maps(), print_section(), print_subsection(), Aleph::uni_zip_filter(), Aleph::uni_zip_for_each(), and Aleph::uni_zip_map().
Referenced by main().
| void demo_predicates | ( | ) |
Definition at line 222 of file zip_utils_example.C.
References Aleph::maps(), print_section(), print_subsection(), Aleph::uni_zip_all(), Aleph::uni_zip_exists(), Aleph::uni_zip_for_each(), and Aleph::uni_zip_none().
Referenced by main().
| void demo_transformations | ( | ) |
Definition at line 266 of file zip_utils_example.C.
References Aleph::maps(), print_section(), print_subsection(), Aleph::to_string(), Aleph::uni_zip_filter(), Aleph::uni_zip_map(), and Aleph::uni_zip_mapi().
Referenced by main().
| void demo_utilities | ( | ) |
Definition at line 312 of file zip_utils_example.C.
References Aleph::maps(), print_section(), print_subsection(), Aleph::uni_zip_drop(), Aleph::uni_zip_max(), Aleph::uni_zip_min(), and Aleph::uni_zip_take().
Referenced by main().
| int main | ( | int | argc, |
| char * | argv[] | ||
| ) |
Definition at line 508 of file zip_utils_example.C.
References demo_advanced(), demo_conversion(), demo_mixed_containers(), demo_practical(), demo_predicates(), demo_transformations(), demo_utilities(), and Aleph::maps().
| void print_section | ( | const string & | title | ) |
Definition at line 165 of file zip_utils_example.C.
References Aleph::maps().
Referenced by demo_advanced(), demo_conversion(), demo_mixed_containers(), demo_practical(), demo_predicates(), demo_transformations(), and demo_utilities().
| void print_subsection | ( | const string & | title | ) |
Definition at line 172 of file zip_utils_example.C.
References Aleph::maps().
Referenced by demo_advanced(), demo_conversion(), demo_mixed_containers(), demo_practical(), demo_predicates(), demo_transformations(), and demo_utilities().