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--
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?
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=)
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 (
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)
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)
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)
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=...)
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)
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=
14 0x0000560136558b38 in std::copy<gnu_cxx::__normal_iterator<hmdf::HeteroVector const, std::vector<hmdf::HeteroVector, std::allocator > >, hmdf::HeteroVector > (first=
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--
How should i modify the function to deep copy a dataframe?