#include <h5cpp/all>
#include <deque>
#include <forward_list>
#include <list>
#include <map>
#include <set>
#include <string>
#include <tuple>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <array>
#include <iostream>
int main() {
auto fd =
h5::create(
"containers.h5", H5F_ACC_TRUNC);
{
for (auto& row : rows)
std::cout <<
"vec_array4: " << m2 <<
" (each inner array prints recursively)\n";
}
{
std::vector<int> src{3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
std::cout <<
"set: " << s2 <<
" (size " << s2.size() <<
", unique)\n";
std::cout <<
"multiset: " << ms2 <<
" (size " << ms2.size() <<
", dups kept)\n";
}
{
std::vector<int> src{3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
std::cout <<
"unordered_set: " << us2 <<
" (size " << us2.size() <<
", unique)\n";
std::cout <<
"u_multiset: " << ums2 <<
" (size " << ums2.size() <<
", dups kept)\n";
}
{
h5::append(pt, fl);
std::cout <<
"forward_list: " << back <<
" (read back as vector<int>)\n";
}
{
h5::write(fd,
"key_value/unordered_map", um);
h5::write(fd,
"key_value/unordered_multimap", umm);
std::cout <<
"map: " << m2 <<
" (sorted by key)\n";
std::cout <<
"multimap: " << mm2 <<
" (sorted, dups kept)\n";
std::cout <<
"unordered_map: " << um2 <<
" (bucket order)\n";
std::cout <<
"u_multimap: " << umm2 <<
" (bucket order, dups kept)\n";
}
{
std::vector<std::tuple<int, double, float>> vt = {{1, 1.5, 2.5f}, {2, 2.5, 3.5f}, {3, 3.5, 4.5f}};
std::cout <<
"vec<pair>: " << vp2 <<
" (compound {first,second})\n";
std::cout <<
"vec<tuple>: " << vt2 <<
" (compound, packed per element)\n";
}
{
std::cout <<
"vec<string>: " << names2 <<
" (H5T_VARIABLE, char* relay)\n";
std::cout <<
"vec<vec<int>>: " << jagged2 <<
" (H5Tvlen_create, hvl_t relay)\n";
}
}
h5::at_t create(const hid_t &parent, const std::string &path, args_t &&... args)
Create a new attribute of element type T on a parent HDF5 object.
Definition H5Acreate.hpp:100
T aread(const hid_t &ds, const std::string &name, const h5::acpl_t &acpl=h5::default_acpl)
Read an attribute by name and return its value as type T.
Definition H5Aread.hpp:76
h5::gr_t write(const LOC &parent, const std::string &path, const T &src)
Write a sparse matrix or vector as a CSC group.
Definition H5Dsparse.hpp:185
std::enable_if_t< h5::impl::is_valid_group_parent< HID_T >::value, h5::gr_t > gcreate(const HID_T &parent, const std::string &path, const h5::lcpl_t &lcpl=h5::default_lcpl)
Creates an HDF5 group and returns a managed h5::gr_t handle.
Definition H5Gcreate.hpp:32