[boost-users] assigning pointer of vector.

Hi, since ptr_vector are non copyable, how would i got baout making assignment from one ptr_vector to another.. i.e. ptr_vector<Foo> t; ptr_vector<Foo> t2; // some coding. t = t2;

On 21/11/2007, chun ping wang <cablepuff@gmail.com> wrote:
Hi, since ptr_vector are non copyable, how would i got baout making assignment from one ptr_vector to another..
i.e. ptr_vector<Foo> t; ptr_vector<Foo> t2; // some coding. t = t2;
.assign with an iterator range, perhaps? And IIRC the new version of ptr_containers will have (already has?) operator= defined so your code above would work. (With the expected, fairly expensive, semantics.) ~ Scott

Thanks. For some reason this does not work. template < class T, template < typename, typename = boost::heap_clone_allocator, typename = std::allocator<void*> > class PTR_CONT
PTR_CONT<PTR_CONT<T> > getDataSet(const char* fileInputPath, boost::unordered_map<T, T>* pMap) { BOOST_ASSERT(boost::filesystem::exists(fileInputPath)); boost::scoped_ptr<boost::filesystem::ifstream> dataContainer(new boost::filesystem::ifstream(fileInputPath)); std::string flist(""), element(""); PTR_CONT<PTR_CONT<T> > dataSet; PTR_CONT<T> line; typedef boost::unordered_map<T, T> genericMap; using boost::assign::operator+=; while (std::getline(*dataContainer, flist)) { std::stringstream elements(flist); while (elements >> element) { T elem(boost::lexical_cast<T>(element)); line.push_back(new T(elem)); typename genericMap::const_iterator iter(pMap->find(elem)); if (iter == pMap->end()) pMap->insert(typename genericMap::value_type(elem, 1)); else (*pMap)[elem] += 1; } dataSet.push_back(boost::addressof(line)); line.clear(); } return dataSet; } vecVecInt dataSet = apriori::getDataSet<int, boost::ptr_vector>(fileInput, boost::addressof(pMap)).clone(); // error on the line above. ./cs522/c++/aprioriMain.cpp:62: note: synthesized method 'boost::ptr_vector<boost::ptr_vector<int, boost::heap_clone_allocator, std::allocator<void*> >, boost::heap_clone_allocator, std::allocator<void*>
::ptr_vector(const boost::ptr_vector<boost::ptr_vector<int, boost::heap_clone_allocator, std::allocator<void*> >, boost::heap_clone_allocator, std::allocator<void*> >&)' first required here ./cs522/c++/aprioriMain.cpp:62: error: initializing temporary from result of 'boost::ptr_vector<T, CloneAllocator, Allocator>::ptr_vector(std::auto_ptr<boost::ptr_vector<T, CloneAllocator, Allocator> >) [with T = boost::ptr_vector<int, boost::heap_clone_allocator, std::allocator<void*> >, CloneAllocator = boost::heap_clone_allocator, Allocator = std::allocator<void*>]'
Also off topic how would I do set_intersection and set_union since they are not available in container of pointer class. On Nov 21, 2007 1:31 PM, Thorsten Ottosen <thorsten.ottosen@dezide.com> wrote:
chun ping wang skrev:
Hi, since ptr_vector are non copyable,
remark: they will be in 1.35
how would i got baout making assignment from one ptr_vector to another..
i.e. ptr_vector<Foo> t; ptr_vector<Foo> t2; // some coding. t = t2;
t = t2.clone();
-Thorsten
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users

chun ping wang skrev:
Thanks. For some reason this does not work.
You cannot copy-construc a pointer vector either.
template < class T, template < typename, typename = boost::heap_clone_allocator, typename = std::allocator<void*> > class PTR_CONT
PTR_CONT<PTR_CONT<T> > getDataSet(const char* fileInputPath,
-Thorsten

yeah I notice int is copyable.. is their a easy way to get around this.. like i still want to use int type. Do i just pass int* in their ... On Nov 23, 2007 7:09 AM, Thorsten Ottosen <thorsten.ottosen@dezide.com> wrote:
chun ping wang skrev:
Thanks. For some reason this does not work.
You cannot copy-construc a pointer vector either.
template < class T, template < typename, typename = boost::heap_clone_allocator, typename = std::allocator<void*> > class PTR_CONT
PTR_CONT<PTR_CONT<T> > getDataSet(const char* fileInputPath,
-Thorsten _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
participants (3)
-
chun ping wang
-
Scott McMurray
-
Thorsten Ottosen