|
Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
|
Comprehensive example of zip operations in Aleph-w. More...
#include <iostream>#include <iomanip>#include <string>#include <vector>#include <tclap/CmdLine.h>#include <htlist.H>#include <tpl_dynDlist.H>#include <ah-zip.H>#include <ahFunctional.H>Go to the source code of this file.
Functions | |
| void | print_section (const string &title) |
| void | print_subsection (const string &title) |
| template<typename Container > | |
| void | print_list (const string &label, const Container &c) |
| void | demo_basic_zip () |
| void | demo_enum_zip () |
| void | demo_tuple_operations () |
| void | demo_zip_transformation () |
| void | demo_zip_utilities () |
| void | demo_stl_compatibility () |
| void | demo_length_checking () |
| void | demo_practical_example () |
| int | main (int argc, char *argv[]) |
Comprehensive example of zip operations in Aleph-w.
This program demonstrates zip operations from ah-zip.H, which provide powerful tools for working with multiple containers simultaneously. Zip operations are inspired by Python's zip() function and are essential for parallel processing of related data.
Zipping combines multiple containers element-wise, creating tuples:
Key insight: Process related data from multiple sources together, maintaining correspondence between elements.
Iterate multiple containers simultaneously:
ZipIterator**: Iterate 2+ containers in lockstepEnumZipIterator**: Zip with enumeration index (i, elem₁, elem₂, ...)Use case: Process related data from multiple sources together
Create and manipulate tuples:
t_zip()**: Create list of tuples from containerst_unzip()**: Split tuple list back into separate containerst_enum_zip()**: Create tuples with index: (i, elem₁, elem₂)Apply functional operations to zipped data:
zip_map()**: Transform tuples (apply function to each tuple)zip_filter()**: Keep tuples satisfying predicatezip_take(n)**: Take first n tupleszip_drop(n)**: Skip first n tupleszip_partition(pred)**: Split into two groups by predicatestd_zip()**: Zip STL containers (std::vector, std::list, etc.)✅ Type safety: Compile-time checking of container compatibility ✅ Efficiency: Single pass through containers ✅ Readability: Clear intent (process related data together) ✅ Composability: Works with other functional operations
Manual approach:
Zip approach:
More concise, safer (no index errors), clearer intent!
Definition in file zip_example.C.
| void demo_basic_zip | ( | ) |
Definition at line 187 of file zip_example.C.
References Aleph::maps(), print_list(), print_section(), and print_subsection().
Referenced by main().
| void demo_enum_zip | ( | ) |
Definition at line 234 of file zip_example.C.
References LocateFunctions< Container, Type >::get_it(), Aleph::maps(), print_list(), print_section(), print_subsection(), and Aleph::t_enum_zip().
Referenced by main().
| void demo_length_checking | ( | ) |
Definition at line 468 of file zip_example.C.
References Aleph::equal_length(), Aleph::maps(), print_list(), print_section(), print_subsection(), Aleph::HTList::size(), and Aleph::t_zip_eq().
Referenced by main().
| void demo_practical_example | ( | ) |
Definition at line 526 of file zip_example.C.
References FunctionalMethods< Container, T >::filter(), LocateFunctions< Container, Type >::get_it(), Aleph::maps(), print_list(), print_section(), print_subsection(), and Aleph::t_zip().
Referenced by main().
| void demo_stl_compatibility | ( | ) |
Definition at line 431 of file zip_example.C.
References Aleph::maps(), print_section(), print_subsection(), Aleph::std_zip(), and Aleph::tzip_std().
Referenced by main().
| void demo_tuple_operations | ( | ) |
Definition at line 268 of file zip_example.C.
References LocateFunctions< Container, Type >::get_it(), Aleph::maps(), print_list(), print_section(), print_subsection(), Aleph::t_unzip(), and Aleph::t_zip().
Referenced by main().
| void demo_zip_transformation | ( | ) |
Definition at line 311 of file zip_example.C.
References LocateFunctions< Container, Type >::get_it(), Aleph::maps(), print_list(), print_section(), print_subsection(), Aleph::zip_filter(), and Aleph::zip_map().
Referenced by main().
| void demo_zip_utilities | ( | ) |
Definition at line 359 of file zip_example.C.
References FunctionalMethods< Container, T >::filter(), LocateFunctions< Container, Type >::get_it(), Aleph::maps(), print_list(), print_section(), print_subsection(), Aleph::t_zip(), Aleph::zip_drop(), Aleph::zip_take(), and Aleph::zip_take_while().
Referenced by main().
| int main | ( | int | argc, |
| char * | argv[] | ||
| ) |
Definition at line 590 of file zip_example.C.
References demo_basic_zip(), demo_enum_zip(), demo_length_checking(), demo_practical_example(), demo_stl_compatibility(), demo_tuple_operations(), demo_zip_transformation(), demo_zip_utilities(), and Aleph::maps().
Definition at line 170 of file zip_example.C.
References Aleph::maps().
Referenced by demo_basic_zip(), demo_enum_zip(), demo_length_checking(), demo_practical_example(), demo_tuple_operations(), demo_zip_transformation(), and demo_zip_utilities().
| void print_section | ( | const string & | title | ) |
Definition at line 157 of file zip_example.C.
References Aleph::maps().
Referenced by demo_basic_zip(), demo_enum_zip(), demo_length_checking(), demo_practical_example(), demo_stl_compatibility(), demo_tuple_operations(), demo_zip_transformation(), and demo_zip_utilities().
| void print_subsection | ( | const string & | title | ) |
Definition at line 164 of file zip_example.C.
References Aleph::maps().
Referenced by demo_basic_zip(), demo_enum_zip(), demo_length_checking(), demo_practical_example(), demo_stl_compatibility(), demo_tuple_operations(), demo_zip_transformation(), and demo_zip_utilities().