hosseinmoein / DataFrame

C++ DataFrame for statistical, Financial, and ML analysis -- in modern C++ using native types and contiguous memory storage
https://hosseinmoein.github.io/DataFrame/
BSD 3-Clause "New" or "Revised" License
2.46k stars 310 forks source link

dataframe deep copy #186

Closed zhouqi1727 closed 2 years ago

zhouqi1727 commented 2 years ago

I want deep copy a dafaframe,so i changed the operator function like this:

template<typename I, typename H> DataFrame<I, H> & DataFrame<I, H>::operator= (const DataFrame &that) { if (this != &that) { //indices = that.indices; //columntb = that.columntb; //columnlist = that.columnlist; const SpinGuard guard(lock); indices.assign(that.indices.begin(), that.indices.end()); if(columntb.size()>0){ columntb.clear(); } columntb.insert(that.columntb.begin(), that.columntb.end()); columnlist.assign(that.columnlist.begin(), that.columnlist.end()); data.assign(that.data.begin(), that.data.end()); //data = that.data_; } return (*this); }

but i got a error :

` (gdb) bt

0 0x00005601365639c5 in std::equalto<hmdf::HeteroVector const*>::operator() (this=0x5601365ae2c0 <hmdf::HeteroVector::vectors>, x=@0x7f0dc2efc248: 0x7f0d100055d0, y=)

at /usr/include/c++/9/bits/stl_function.h:356

1 0x0000560136562a41 in std::detail::_Equal_helper<hmdf::HeteroVector const, std::pair<hmdf::HeteroVector const const, std::vector<double, std::allocator > >, std::detail::_Select1st, std::equal_to<hmdf::HeteroVector const*>, unsigned long, false>::_S_equals (eq=..., extract=..., k=@0x7f0dc2efc248: 0x7f0d100055d0, n=0x0) at /usr/include/c++/9/bits/hashtable_policy.h:1461

2 0x00005601365607da in std::detail::_Hashtable_base<hmdf::HeteroVector const, std::pair<hmdf::HeteroVector const const, std::vector<double, std::allocator > >, std::detail::_Select1st, std::equal_to<hmdf::HeteroVector const>, std::hash<hmdf::HeteroVector const>, std::detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::detail::_Hashtable_traits<false, false, true> >::_M_equals (

this=0x5601365ae2c0 <hmdf::HeteroVector::vectors_<double>>, __k=@0x7f0dc2efc248: 0x7f0d100055d0, __c=139694079759824, __n=0x0) at /usr/include/c++/9/bits/hashtable_policy.h:1834

3 0x000056013655e095 in std::_Hashtable<hmdf::HeteroVector const, std::pair<hmdf::HeteroVector const const, std::vector<double, std::allocator > >, std::allocator<std::pair<hmdf::HeteroVector const const, std::vector<double, std::allocator > > >, std::__detail::_Select1st, std::equal_to<hmdf::HeteroVector const>, std::hash<hmdf::HeteroVector const*>, std::detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_find_beforenode (this=0x5601365ae2c0 <hmdf::HeteroVector::vectors>, n=314, k=@0x7f0dc2efc248: 0x7f0d100055d0, __code=139694079759824)

at /usr/include/c++/9/bits/hashtable.h:1580

4 0x000056013655a344 in std::_Hashtable<hmdf::HeteroVector const, std::pair<hmdf::HeteroVector const const, std::vector<double, std::allocator > >, std::allocator<std::pair<hmdf::HeteroVector const const, std::vector<double, std::allocator > > >, std::__detail::_Select1st, std::equal_to<hmdf::HeteroVector const>, std::hash<hmdf::HeteroVector const*>, std::detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::detail::_Prime_rehash_policy, std::detail::_Hashtable_traits<false, false, true> >::_M_findnode (this=0x5601365ae2c0 <hmdf::HeteroVector::vectors>, bkt=314, key=@0x7f0dc2efc248: 0x7f0d100055d0, c=139694079759824)

at /usr/include/c++/9/bits/hashtable.h:687

5 0x0000560136556391 in std::detail::_Map_base<hmdf::HeteroVector const, std::pair<hmdf::HeteroVector const const, std::vector<double, std::allocator > >, std::allocator<std::pair<hmdf::HeteroVector const* const, std::vector<double, std::allocator > > >, std::detail::_Select1st, std::equal_to<hmdf::HeteroVector const>, std::hash<hmdf::HeteroVector const>, std::detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::detail::_Prime_rehash_policy, std::__detail::_Hashtabletraits<false, false, true>, true>::operator[] (this=0x5601365ae2c0 <hmdf::HeteroVector::vectors>, __k=@0x7f0dc2efc248: 0x7f0d100055d0)

at /usr/include/c++/9/bits/hashtable_policy.h:722

6 0x00005601365522d4 in std::unordered_map<hmdf::HeteroVector const, std::vector<double, std::allocator >, std::hash<hmdf::HeteroVector const>, std::equalto<hmdf::HeteroVector const>, std::allocator<std::pair<hmdf::HeteroVector const const, std::vector<double, std::allocator > > > >::operator[] (this=0x5601365ae2c0 <hmdf::HeteroVector::vectors>, __k=@0x7f0dc2efc248: 0x7f0d100055d0) at /usr/include/c++/9/bits/unordered_map.h:990

7 0x000056013654f02b in hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector const&, hmdf::HeteroVector&)#2}::operator()(hmdf::HeteroVector const&, hmdf::HeteroVector&) const (this=0x7f0d100078f0, from=..., to=...)

at /usr/local/include/DataFrame/Vectors/HeteroVector.tcc:54

8 0x0000560136560f97 in std::_Function_handler<void (hmdf::HeteroVector const&, hmdf::HeteroVector&), hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector const&, hmdf::HeteroVector&)#2}>::_M_invoke(std::_Any_data const&, hmdf::HeteroVector const&, hmdf::HeteroVector&) (functor=..., args#0=..., __args#1=...) at /usr/include/c++/9/bits/std_function.h:300

9 0x0000560136586ca5 in std::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>::operator()(hmdf::HeteroVector const&, hmdf::HeteroVector&) const ()

10 0x0000560136585b98 in hmdf::HeteroVector::operator=(hmdf::HeteroVector const&) ()

11 0x0000560136561e45 in std::copy_move<false, false, std::random_access_iterator_tag>::copy_m<hmdf::HeteroVector const, hmdf::HeteroVector> (first=0x5601372c9620, last=0x5601372cb120, __result=0x7f0d100055d0)

at /usr/include/c++/9/bits/stl_algobase.h:342

12 0x000056013655f8f7 in std::copy_move_a<false, hmdf::HeteroVector const, hmdf::HeteroVector> (first=0x5601372c9590, last=0x5601372cb120, result=0x7f0d10005540) at /usr/include/c++/9/bits/stl_algobase.h:404

13 0x000056013655cafd in std::copy_move_a2<false, gnu_cxx::__normal_iterator<hmdf::HeteroVector const, std::vector<hmdf::HeteroVector, std::allocator > >, hmdf::HeteroVector> (__first=

  {clear_functions_ = std::vector of length 1, capacity 1 = {{<std::_Maybe_unary_or_binary_function<void, hmdf::HeteroVector&>> = {<std::unary_function<hmdf::HeteroVector&, void>> = {<No data fields>}, <No data fields>}, <std::_Function_base> = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x7f0dd54e7c20 <main_arena+160>, _M_const_object = 0x7f0dd54e7c20 <main_arena+160>, _M_function_pointer = 0x7f0dd54e7c20 <main_arena+160>, _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x7f0dd54e7c20 <main_arena+160>, this adjustment 139697389992992}, _M_pod_data = " |N\325\r\177\000\000 |N\325\r\177\000"}, _M_manager = 0x560136560979 <std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector<double>()::{lambda(hmdf::HeteroVector&)#1}>::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector<double>()::{lambda(hmdf::HeteroVector&)#1}> const&, std::_Manager_operation)>}, _M_invoker = 0x560136560936 <std::_Function_handler<void (hmdf::HeteroVector&), hmdf::HeteroVector::get_vector<double>()::{lambda(hmdf::HeteroVector&)#1}>::_M_invoke(std::_Any_data const&, hmdf::HeteroVector&)>}}, copy_functions_ = std::vector of length 1, capacity 1 = {{<std::_Maybe_unary_or_binary_function<void, hmdf::HeteroVector const&, hmdf::HeteroVector&>> = {<std::binary_function<hmdf::HeteroVector const&, hmdf::HeteroVector&, void>> = {<No data fields>}, <No data fields>}, <std::_Function_base> = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x7f0dd54e80a0 <main_arena+1312>, _M_const_object = 0x7f0dd54e80a0 <main_arena+1312>, _M_function_pointer = 0x7f0dd54e80a0 <main_arena+1312>, _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x7f0dd54e80a0 <main_arena+1312>, this adjustment 139697389994144}, _M_pod_data = "\240\200N\325\r\177\000\000\240\200N\325\r\177\000"}, _M_manager = 0x560136560fa1 <std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector<double>()::{lambda(hmdf::HeteroVector const&, hmdf::HeteroVector&)#2}>::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector<double>()::{lambda(hmdf::HeteroVector const&, hmdf::HeteroVector&)#2}> const&, std::_Manager_operation)>}, _M_invoker = 0x560136560f44 <std::_Function_handler<void (hmdf::HeteroVector const&, hmdf::HeteroVector&), hmdf::HeteroVector::get_vector<double>()::{lambda(hmdf::HeteroVector const&, hmdf::HeteroVector&)#2}>::_M_invoke(std::_Any_data const&, hmdf::HeteroVector const&, hmdf::HeteroVector&)>}}, move_functions_ = std::vector of length 1, capacity 1 = {{<std::_Maybe_unary_or_binary_function<void, hmdf::HeteroVector&, hmdf::HeteroVector&>> = {<std::binary_function<hmdf::HeteroVector&, hmdf::HeteroVector&, void>> = {<No data fields>}, <No data fields>}, <std::_Function_base> = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x7f0dd54e7be0 <main_arena+96>, _M_const_object = 0x7f0dd54e7be0 <main_arena+96>, _M_function_pointer = 0x7f0dd54e7be0 <main_arena+96>, _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x7f0dd54e7be0 <main_arena+96>, this adjustment 139697389992928}, _M_pod_data = "\340{N\325\r\177\000\000\340{N\325\r\177\000"}, _M_manager = 0x560136561268 <std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector<double>()::{lambda(hmdf::HeteroVector&, hmdf::HeteroVector&)#3}>::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector<double>()::{lambda(hmdf::HeteroVector&, hmdf::HeteroVector&)#3}> const&, std::_Manager_operation)>}, _M_invoker = 0x56013656120b <std::_Function_handler<void (hmdf::HeteroVector&, hmdf::HeteroVector&), hmdf::HeteroVector::get_vector<double>()::{lambda(hmdf::HeteroVector&, hmdf::HeteroVector&)#3}>::_M_invoke(std::_Any_data const&, hmdf::HeteroVector&, hmdf::HeteroVector&)>}}}, __last=
{clear_functions_ = std::vector of length 1, capacity 0 = {<error reading variable>, __result=0x7f0d10005540) at /usr/include/c++/9/bits/stl_algobase.h:440

14 0x0000560136558b38 in std::copy<gnu_cxx::__normal_iterator<hmdf::HeteroVector const, std::vector<hmdf::HeteroVector, std::allocator > >, hmdf::HeteroVector> (first=

  {clear_functions_ = std::vector of length 1, capacity 1 = {{<std::_Maybe_unary_or_binary_function<void, hmdf::HeteroVector&>> = {<std::unary_function<hmdf::HeteroVector&, void>> = {<No data fields>}, <No data fields>}, <std::_Function_base> = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x7f0dd54e7c20 <main_arena+160>, _M_const_object = 0x7f0dd54e7c20 <main_arena+160>, _M_function_pointer = 0x7f0dd54e7c20 <main_arena+160>, _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x7f0dd54e7c20 <main_arena+160>, this adjustment 139697389992992}, _M_pod_data = " |N\325\r\177\000\000 |N\325\r\177\000"}, _M_manager = 0x560136560979 <std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector<double>()::{lambda(hmdf::HeteroVector&)#1}>::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector<double>()::{lambda(hmdf::HeteroVector&)#1}> const&, std::_Manager_operation)>}, _M_invoker = 0x560136560936 <std::_Function_handler<void (hmdf::HeteroVector&), hmdf::HeteroVector::get_vector<double>()::{lambda(hmdf::HeteroVector&)#1}>::_M_invoke(std::_Any_data const&, hmdf::HeteroVector&)>}}, copy_functions_ = std::vector of length 1, capacity 1 = {{<std::_Maybe_unary_or_binary_function<void, hmdf::HeteroVector const&, hmdf::HeteroVector&>> = {<std::binary_function<hmdf::HeteroVector const&, hmdf::HeteroVector&, void>> = {<No data fields>}, <No data fields>}, <std::_Function_base> = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x7f0dd54e80a0 <main_arena+1312>, _M_const_object = 0x7f0dd54e80a0 <main_arena+1312>, _M_function_pointer = 0x7f0dd54e80a0 <main_arena+1312>, _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x7f0dd54e80a0 <main_arena+1312>, this adjustment 139697389994144}, _M_pod_data = "\240\200N\325\r\177\000\000\240\200N\325\r\177\000"}, _M_manager = 0x560136560fa1 <std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector<double>()::{lambda(hmdf::HeteroVector const&, hmdf::HeteroVector&)#2}>::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector<double>()::{lambda(hmdf::HeteroVector const&, hmdf::HeteroVector&)#2}> const&, std::_Manager_operation)>}, _M_invoker = 0x560136560f44 <std::_Function_handler<void (hmdf::HeteroVector const&, hmdf::HeteroVector&), hmdf::HeteroVector::get_vector<double>()::{lambda(hmdf::HeteroVector const&, hmdf::HeteroVector&)#2}>::_M_invoke(std::_Any_data const&, hmdf::HeteroVector const&, hmdf::HeteroVector&)>}}, move_functions_ = std::vector of length 1, capacity 1 = {{<std::_Maybe_unary_or_binary_function<void, hmdf::HeteroVector&, hmdf::HeteroVector&>> = {<std::binary_function<hmdf::HeteroVector&, hmdf::HeteroVector&, void>> = {<No data fields>}, <No data fields>}, <std::_Function_base> = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x7f0dd54e7be0 <main_arena+96>, _M_const_object = 0x7f0dd54e7be0 <main_arena+96>, _M_function_pointer = 0x7f0dd54e7be0 <main_arena+96>, _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x7f0dd54e7be0 <main_arena+96>, this adjustment 139697389992928}, _M_pod_data = "\340{N\325\r\177\000\000\340{N\325\r\177\000"}, _M_manager = 0x560136561268 <std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector<double>()::{lambda(hmdf::HeteroVector&, hmdf::HeteroVector&)#3}>::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector<double>()::{lambda(hmdf::HeteroVector&, hmdf::HeteroVector&)#3}> const&, std::_Manager_operation)>}, _M_invoker = 0x56013656120b <std::_Function_handler<void (hmdf::HeteroVector&, hmdf::HeteroVector&), hmdf::HeteroVector::get_vector<double>()::{lambda(hmdf::HeteroVector&, hmdf::HeteroVector&)#3}>::_M_invoke(std::_Any_data const&, hmdf::HeteroVector&, hmdf::HeteroVector&)>}}}, __last=
{clear_functions_ = std::vector of length 1, capacity 0 = {<error reading variable>, __result=0x7f0d10005540) at /usr/include/c++/9/bits/stl_algobase.h:474

15 0x0000560136554762 in std::vector<hmdf::HeteroVector, std::allocator >::_M_assign_aux<__gnu_cxx::__normal_iterator<hmdf::HeteroVector const*, std::vector<hmdf::HeteroVector, std::allocator > >--Type for more, q to quit, c to continue without paging--

(this=0x7f0dc2efc580, __first= {clearfunctions = std::vector of length 1, capacity 1 = {{<std::_Maybe_unary_or_binary_function<void, hmdf::HeteroVector&>> = {<std::unary_function<hmdf::HeteroVector&, void>> = {}, }, = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x7f0dd54e7c20 <main_arena+160>, _M_const_object = 0x7f0dd54e7c20 <main_arena+160>, _M_function_pointer = 0x7f0dd54e7c20 <main_arena+160>, _M_member_pointer = (void (std::_Undefined_class::)(std::_Undefined_class const)) 0x7f0dd54e7c20 <main_arena+160>, this adjustment 139697389992992}, _M_pod_data = " |N\325\r\177\000\000 |N\325\r\177\000"}, _M_manager = 0x560136560979 <std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector&)#1}>::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector&)#1}> const&, std::_Manager_operation)>}, _M_invoker = 0x560136560936 <std::_Function_handler<void (hmdf::HeteroVector&), hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector&)#1}>::_M_invoke(std::_Any_data const&, hmdf::HeteroVector&)>}}, copyfunctions = std::vector of length 1, capacity 1 = {{<std::_Maybe_unary_or_binary_function<void, hmdf::HeteroVector const&, hmdf::HeteroVector&>> = {<std::binary_function<hmdf::HeteroVector const&, hmdf::HeteroVector&, void>> = {}, }, = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x7f0dd54e80a0 <main_arena+1312>, _M_const_object = 0x7f0dd54e80a0 <main_arena+1312>, _M_function_pointer = 0x7f0dd54e80a0 <main_arena+1312>, _M_member_pointer = (void (std::_Undefined_class::)(std::_Undefined_class const)) 0x7f0dd54e80a0 <main_arena+1312>, this adjustment 139697389994144}, _M_pod_data = "\240\200N\325\r\177\000\000\240\200N\325\r\177\000"}, _M_manager = 0x560136560fa1 <std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector const&, hmdf::HeteroVector&)#2}>::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector const&, hmdf::HeteroVector&)#2}> const&, std::_Manager_operation)>}, _M_invoker = 0x560136560f44 <std::_Function_handler<void (hmdf::HeteroVector const&, hmdf::HeteroVector&), hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector const&, hmdf::HeteroVector&)#2}>::_M_invoke(std::_Any_data const&, hmdf::HeteroVector const&, hmdf::HeteroVector&)>}}, movefunctions = std::vector of length 1, capacity 1 = {{<std::_Maybe_unary_or_binary_function<void, hmdf::HeteroVector&, hmdf::HeteroVector&>> = {<std::binary_function<hmdf::HeteroVector&, hmdf::HeteroVector&, void>> = {}, }, = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x7f0dd54e7be0 <main_arena+96>, _M_const_object = 0x7f0dd54e7be0 <main_arena+96>, _M_function_pointer = 0x7f0dd54e7be0 <main_arena+96>, _M_member_pointer = (void (std::_Undefined_class::)(std::_Undefined_class const)) 0x7f0dd54e7be0 <main_arena+96>, this adjustment 139697389992928}, _M_pod_data = "\340{N\325\r\177\000\000\340{N\325\r\177\000"}, _M_manager = 0x560136561268 <std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector&, hmdf::HeteroVector&)#3}>::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector&, hmdf::HeteroVector&)#3}> const&, std::_Manager_operation)>}, _M_invoker = 0x56013656120b <std::_Function_handler<void (hmdf::HeteroVector&, hmdf::HeteroVector&), hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector&, hmdf::HeteroVector&)#3}>::_M_invoke(std::_Any_data const&, hmdf::HeteroVector&, hmdf::HeteroVector&)>}}}, __last= {clearfunctions = std::vector of length 1, capacity 0 = {) at /usr/include/c++/9/bits/vector.tcc:321

16 0x0000560136550536 in std::vector<hmdf::HeteroVector, std::allocator >::_M_assign_dispatch<gnu_cxx::__normal_iterator<hmdf::HeteroVector const*, std::vector<hmdf::HeteroVector, std::allocator > > > (this=0x7f0dc2efc580, first=

{clearfunctions = std::vector of length 1, capacity 1 = {{<std::_Maybe_unary_or_binary_function<void, hmdf::HeteroVector&>> = {<std::unary_function<hmdf::HeteroVector&, void>> = {}, }, = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x7f0dd54e7c20 <main_arena+160>, _M_const_object = 0x7f0dd54e7c20 <main_arena+160>, _M_function_pointer = 0x7f0dd54e7c20 <main_arena+160>, _M_member_pointer = (void (std::_Undefined_class::)(std::_Undefined_class const)) 0x7f0dd54e7c20 <main_arena+160>, this adjustment 139697389992992}, _M_pod_data = " |N\325\r\177\000\000 |N\325\r\177\000"}, _M_manager = 0x560136560979 <std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector&)#1}>::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector&)#1}> const&, std::_Manager_operation)>}, _M_invoker = 0x560136560936 <std::_Function_handler<void (hmdf::HeteroVector&), hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector&)#1}>::_M_invoke(std::_Any_data const&, hmdf::HeteroVector&)>}}, copyfunctions = std::vector of length 1, capacity 1 = {{<std::_Maybe_unary_or_binary_function<void, hmdf::HeteroVector const&, hmdf::HeteroVector&>> = {<std::binary_function<hmdf::HeteroVector const&, hmdf::HeteroVector&, void>> = {}, }, = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x7f0dd54e80a0 <main_arena+1312>, _M_const_object = 0x7f0dd54e80a0 <main_arena+1312>, _M_function_pointer = 0x7f0dd54e80a0 <main_arena+1312>, _M_member_pointer = (void (std::_Undefined_class::)(std::_Undefined_class const)) 0x7f0dd54e80a0 <main_arena+1312>, this adjustment 139697389994144}, _M_pod_data = "\240\200N\325\r\177\000\000\240\200N\325\r\177\000"}, _M_manager = 0x560136560fa1 <std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector const&, hmdf::HeteroVector&)#2}>::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector const&, hmdf::HeteroVector&)#2}> const&, std::_Manager_operation)>}, _M_invoker = 0x560136560f44 <std::_Function_handler<void (hmdf::HeteroVector const&, hmdf::HeteroVector&), hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector const&, hmdf::HeteroVector&)#2}>::_M_invoke(std::_Any_data const&, hmdf::HeteroVector const&, hmdf::HeteroVector&)>}}, movefunctions = std::vector of length 1, capacity 1 = {{<std::_Maybe_unary_or_binary_function<void, hmdf::HeteroVector&, hmdf::HeteroVector&>> = {<std::binary_function<hmdf::HeteroVector&, hmdf::HeteroVector&, void>> = {}, }, = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x7f0dd54e7be0 <main_arena+96>, _M_const_object = 0x7f0dd54e7be0 <main_arena+96>, _M_function_pointer = 0x7f0dd54e7be0 <main_arena+96>, _M_member_pointer = (void (std::_Undefined_class::)(std::_Undefined_class const)) 0x7f0dd54e7be0 <main_arena+96>, this adjustment 139697389992928}, _M_pod_data = "\340{N\325\r\177\000\000\340{N\325\r\177\000"}, _M_manager = 0x560136561268 <std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector&, hmdf::HeteroVector&)#3}>::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector&, hmdf::HeteroVector&)#3}> const&, std::_Manager_operation)>}, _M_invoker = 0x56013656120b <std::_Function_handler<void (hmdf::HeteroVector&, hmdf::HeteroVector&), hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector&, hmdf::HeteroVector&)#3}>::_M_invoke(std::_Any_data const&, hmdf::HeteroVector&, hmdf::HeteroVector&)>}}}, __last= {clearfunctions = std::vector of length 1, capacity 0 = {) at /usr/include/c++/9/bits/stl_vector.h:1625

17 0x000056013654da1d in std::vector<hmdf::HeteroVector, std::allocator >::assign<gnu_cxx::__normal_iterator<hmdf::HeteroVector const*, std::vector<hmdf::HeteroVector, std::allocator > >, void> (this=0x7f0dc2efc580, first=

{clearfunctions = std::vector of length 1, capacity 1 = {{<std::_Maybe_unary_or_binary_function<void, hmdf::HeteroVector&>> = {<std::unary_function<hmdf::HeteroVector&, void>> = {}, }, = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x7f0dd54e7c20 <main_arena+160>, _M_const_object = 0x7f0dd54e7c20 <main_arena+160>, _M_function_pointer = 0x7f0dd54e7c20 <main_arena+160>, _M_member_pointer = (void (std::_Undefined_class::)(std::_Undefined_class const)) 0x7f0dd54e7c20 <main_arena+160>, this adjustment 139697389992992}, _M_pod_data = " |N\325\r\177\000\000 |N\325\r\177\000"}, _M_manager = 0x560136560979 <std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector&)#1}>::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector&)#1}> const&, std::_Manager_operation)>}, _M_invoker = 0x560136560936 <std::_Function_handler<void (hmdf::HeteroVector&), hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector&)#1}>::_M_invoke(std::_Any_data const&, hmdf::HeteroVector&)>}}, copyfunctions = std::vector of length 1, capacity 1 = {{<std::_Maybe_unary_or_binary_function<void, hmdf::HeteroVector const&, hmdf::HeteroVector&>> = {<std::binary_function<hmdf::HeteroVector const&, hmdf::HeteroVector&, void>> = {}, }, = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x7f0dd54e80a0 <main_arena+1312>, _M_const_object = 0x7f0dd54e80a0 <main_arena+1312>, _M_function_pointer = 0x7f0dd54e80a0 <main_arena+1312>, _M_member_pointer = (void (std::_Undefined_class::)(std::_Undefined_class const)) 0x7f0dd54e80a0 <main_arena+1312>, this adjustment 139697389994144}, _M_pod_data = "\240\200N\325\r\177\000\000\240\200N\325\r\177\000"}, _M_manager = 0x560136560fa1 <std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector const&, hmdf::HeteroVector&)#2}>::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector const&, hmdf::HeteroVector&)#2}> const&, std::_Manager_operation)>}, _M_invoker = 0x560136560f44 <std::_Function_handler<void (hmdf::HeteroVector const&, hmdf::HeteroVector&), hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector const&, hmdf::HeteroVector&)#2}>::_M_invoke(std::_Any_data const&, hmdf::HeteroVector const&, hmdf::HeteroVector&)>}}, movefunctions = std::vector of length 1, capacity 1 = {{<std::_Maybe_unary_or_binary_function<void, hmdf::HeteroVector&, hmdf::HeteroVector&>> = {<std::binary_function<hmdf::HeteroVector&, hmdf::HeteroVector&, void>> = {}, }, = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x7f0dd54e7be0 <main_arena+96>, _M_const_object = 0x7f0dd54e7be0 <main_arena+96>, _M_function_pointer = 0x7f0dd54e7be0 <main_arena+96>, _M_member_pointer = (void (std::_Undefined_class::)(std::_Undefined_class const)) 0x7f0dd54e7be0 <main_arena+96>, this adjustment 139697389992928}, _M_pod_data = "\340{N\325\r\177\000\000\340{N\325\r\177\000"}, _M_manager = 0x560136561268 <std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector&, hmdf::HeteroVector&)#3}>::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager<hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector&, hmdf::HeteroVector&)#3}> const&, std::_Manager_operation)>}, _M_invoker = 0x56013656120b <std::_Function_handler<void (hmdf::HeteroVector&, hmdf::HeteroVector&), hmdf::HeteroVector::get_vector()::{lambda(hmdf::HeteroVector&, hmdf::HeteroVector&)#3}>::_M_invoke(std::_Any_data const&, hmdf::HeteroVector&, hmdf::HeteroVector&)>}}}, __last= {clearfunctions = std::vector of length 1, capacity 0 = {) at /usr/include/c++/9/bits/stl_vector.h:766

18 0x000056013654b366 in hmdf::DataFrame<unsigned long, hmdf::HeteroVector>::operator= (this=0x7f0dc2efc580, that=...) at /usr/local/include/DataFrame/Internals/DataFrame.tcc:76

19 0x0000560136548599 in ns_predict_model::factor::updateFactorDataframeBinaUsdt (this=0x7ffda4ea22e0) at /home/ubuntu/test/test_sharememory/test_memory_20220623_yxc/src/factorData.cpp:2494

20 0x000056013654844c in ns_predict_model::factor::getBinaUsdtFactor (fa=0x7ffda4ea22e0) at /home/ubuntu/test/test_sharememory/test_memory_20220623_yxc/src/factorData.cpp:2467

21 0x00005601365656e9 in std::__invoke_impl<void, void ()(ns_predict_model::factor), ns_predict_model::factor> (__f=@0x56013728ec30: 0x560136548430 <ns_predict_model::factor::getBinaUsdtFactor(ns_predict_model::factor)>)

at /usr/include/c++/9/bits/invoke.h:60

22 0x0000560136565568 in std::invoke<void ()(ns_predict_model::factor), ns_predict_model::factor*> (fn=@0x56013728ec30: 0x560136548430 <ns_predict_model::factor::getBinaUsdtFactor(ns_predict_model::factor*)>)

at /usr/include/c++/9/bits/invoke.h:95

23 0x0000560136565459 in std::thread::_Invoker<std::tuple<void ()(ns_predict_model::factor), ns_predict_model::factor*> >::_M_invoke<0ul, 1ul> (this=0x56013728ec28) at /usr/include/c++/9/thread:244

24 0x00005601365653f2 in std::thread::_Invoker<std::tuple<void ()(ns_predict_model::factor), ns_predict_model::factor*> >::operator() (this=0x56013728ec28) at /usr/include/c++/9/thread:251

25 0x00005601365653ae in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void ()(ns_predict_model::factor), ns_predict_model::factor*> > >::_M_run (this=0x56013728ec20) at /usr/include/c++/9/thread:195

--Type for more, q to quit, c to continue without paging--

26 0x00007f0dd572fde4 in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6

27 0x00007f0dd607a609 in start_thread (arg=) at pthread_create.c:477

28 0x00007f0dd541a133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

`

How should i modify the function to deep copy a dataframe?

hosseinmoein commented 2 years ago

The assignment operator already makes deep copy Your changes are all wrong