basedOpinionated utility library |
git clone git://git.dimitrijedobrota.com/based.git |
Log | Files | Refs | README | LICENSE | HACKING | CONTRIBUTING | CODE_OF_CONDUCT | BUILDING |
list.cpp (1101B)
0 #include <cstdint> 1 2 #include "based/list.hpp" 3 4 #include "based/instrumentation.hpp" 5 6 int main() 7 { 8 using instrumented = based::instrumented<double>; 9 using list_pool = based::list_pool<instrumented, std::uint8_t>; 10 using iter = list_pool::iterator; 11 12 static constexpr std::size_t iter_count = 0xFF; 13 14 auto pool = list_pool(); 15 auto head = pool.node_empty(); 16 17 for (std::size_t i = 0; i < iter_count; i++) { 18 head = pool.allocate(static_cast<double>(i), head); 19 } 20 21 for (auto it = iter(pool, head); it != iter(pool); ++it) { 22 std::cout << *it << " "; 23 } 24 std::cout << '\n'; 25 26 based::free_list(pool, head); 27 28 auto queue = pool.queue_empty(); 29 for (std::size_t i = 0; i < iter_count; i++) { 30 if (i % 2 == 0) { 31 queue = pool.push_front(queue, static_cast<double>(i)); 32 } else { 33 queue = pool.push_back(queue, static_cast<double>(i)); 34 } 35 36 if (i % 3 == 0) { 37 queue = pool.pop_front(queue); 38 } 39 } 40 41 for (auto it = iter(pool, queue.first); it != iter(pool); ++it) { 42 std::cout << *it << " "; 43 } 44 std::cout << '\n'; 45 46 pool.free(queue); 47 48 return 0; 49 }