Boost logo

Boost Users :

From: chun ping wang (cablepuff_at_[hidden])
Date: 2007-11-21 22:59:11


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_at_[hidden]>
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_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net