diff --git a/main.cpp b/main.cpp index 38799da..1ca7438 100644 --- a/main.cpp +++ b/main.cpp @@ -272,11 +272,12 @@ pair>, bool> extend_function_class( const vector>& base_class, size_t max_size ) { - if ( base_class.size() >= max_size ) + if ( base_class.size() >= max_size ) { return make_pair( - vector>(base_class.begin(), base_class.end()), + vector>(base_class), false ); + } FiniteFunction identical_x(string("000 111 222")); FiniteFunction identical_y(string("012 012 012")); @@ -321,8 +322,10 @@ pair>, bool> extend_function_class( break; } } + vector> res(func_class.begin(), func_class.end()); + res.shrink_to_fit(); return make_pair( - vector>(func_class.begin(), func_class.end()), + res, is_finished ); } @@ -343,7 +346,7 @@ bool is_bad_class( size_t total_possible_functions; atomic completed_tasks; atomic tasks_to_extend; // количество тасков, которые не обработаны -list< set> > shared_function_classes; +list< vector> > shared_function_classes; mutex shared_functions_mutex; @@ -481,10 +484,7 @@ void process_task_lists() { } } if ( is_need_append ) { - shared_function_classes.push_back(set>( - func_class.begin(), - func_class.end() - )); + shared_function_classes.push_back(func_class); for (auto&& func: func_class) bad_functions.insert(func); } @@ -503,7 +503,9 @@ void process_task_lists() { int main() { - cout << sizeof(FiniteFunction) << " " << sizeof(FunctionTask) << endl; + cout << "sizeof FiniteFunction<" << (int)CUR_BASE << "> = " + << sizeof(FiniteFunction) << endl; + cout << "sizeof FunctionTask = "<< sizeof(FunctionTask) << endl; auto FiniteFunctionHasher = [](const FiniteFunction &f) -> uint32_t { return f.get_hash(); }; @@ -552,7 +554,7 @@ int main() { vector< thread > thread_pool; thread task_processer(process_task_lists); - for (size_t i = 0; i < THREADS_COUNT - 1; ++i) + for (int i = 0; i < THREADS_COUNT - 1; ++i) thread_pool.push_back(thread(do_work)); for (auto&& t: thread_pool) @@ -562,7 +564,7 @@ int main() { cout << "Shared " << shared_function_classes.size() << " functions!" << endl; // перегоняем список с классами в массив с классами - vector< set> > vector_classes( + vector< vector> > vector_classes( shared_function_classes.begin(), shared_function_classes.end() );