On 2011-03-13 10:03:40 +0100, Kraus Philipp said:


I'm using an indirect_array< std::vector<std::size_t> > for creating a  

sorted index of a ublas::vector. How can I convert the indirect_array<  

std::vector<std::size> > to an indirect_array<> ? A have tried a  

static_cast or using the copy-constructor, but that doesn't work. Can  

I convert the array without std::copy?


My Code at this time (p_vec is an ublas::vector and lam is a shotcut for the boost::lambda namespace with a sorting structure):


        std::vector<std::size_t> l_temp(boost::counting_iterator<std::size_t>(0), boost::counting_iterator<std::size_t>(p_vec.size()));

        std::sort( l_temp.begin(), l_temp.end(), lam::var(p_vec)[lam::_1] < lam::var(p_vec)[lam::_2]);

   

        // here I would like to convert the l_temp vector to an indirect:array<>, the code works, but it's not nice

        ublas::indirect_array<> l_idx(p_vec.size());

        for(std::size_t i=0; i < p_vec.size(); ++i)

            l_idx(i) = l_temp[i];



        I do it at the moment with

        ublas::indirect_array< std::vector<std::size_t> >(p_vec.size(), l_temp);


        but I need the indirect_array<> and I have tried the

   std::copy( l_temp.begin(), l_temp.end(), l_idx.begin() );

       and get the error "assignment of read-only location"


Thanks


Phil