void run_test(size_t min_size, size_t max_size) { time_t now = time(0); std::cout << "Iterating over " << type_description(T(0)) << " from " << min_size << " up to " << max_size << " elements at: " << asctime(localtime(&now)); std::vector<const char*> names { " vec", " set", " copy", " ratio", " h-set", "h-copy", " ratio" }; std::cout << std::setw(12) << "size"; for (auto x: names) print_cell(x); std::cout << std::endl; std::vector<T> vec(max_size); random_iota(begin(vec), end(vec)); for (size_t array_size(min_size); array_size <= max_size; array_size *= 2) { const size_t n = (max_size / array_size); auto last = begin(vec) + array_size; std::cout << std::setw(12) << array_size; time_copy_vector(begin(vec), last, n, max_size); time_copy_container<std::set<T>>(begin(vec), last, n, max_size); time_copy_container<std::unordered_set<T>>(begin(vec), last, n, max_size); std::cout << std::endl; } }
int main() { std::vector<int> vec( 100 ); random_iota( vec.begin(), vec.end() ); list_pool<int> pool; list_pool<int>::iterator nil( pool ); list_pool<in2t>::iterator list = generate_list( vec.begin(), vec.end(), nil ); print_range( list, nil ); list = mergesort_linked( list, nil, std::less<int>() ); print_range( list, nil ); }