Reorder vector using a vector of indices

前端 未结 14 1812
耶瑟儿~
耶瑟儿~ 2020-11-28 06:15

I\'d like to reorder the items in a vector, using another vector to specify the order:

char   A[]     = { \'a\', \'b\', \'c\' };
size_t ORDER[] = { 1, 0, 2 }         


        
14条回答
  •  -上瘾入骨i
    2020-11-28 06:34

    Your code is broken. You cannot assign to vA and you need to use template parameters.

    vector REORDER(const vector& vA, const vector& vOrder)  
    {   
        assert(vA.size() == vOrder.size());  
        vector vCopy(vA.size()); 
        for(int i = 0; i < vOrder.size(); ++i)  
            vCopy[i] = vA[ vOrder[i] ];  
        return vA;
    } 
    

    The above is slightly more efficient.

提交回复
热议问题