先頭がばらばらな配列を整頓する

お題

たとえば。。これが正しいデフォルト形で
こんな風にスタート位置がばらばらの配列があったとする

start
start
start
start
start
start
start
start

全部startが先頭にくるようにしたかったら?

コード

引数

  • _size…配列全体のサイズ
  • _offset…その配列のスタート位置は何個分後ろにずれているのか
    template <typename T>
    void AlignStartPos(T* _src,int _size,int _offset){//offset=その配列は何個分後ろにずれているのか
        T* temp=new T[_size];
        memcpy(temp,&_src[_size-_offset],_offset*sizeof(T));
        memcpy(&temp[_offset],_src,_offset*sizeof(T));
        memcpy(_src,temp,_size*sizeof(T));
        delete[] temp;
    }
サポートサイト Wikidot.com