配列を決められた順番で並び替えしたいんだが

配列[] = { ... };
並び替え後の順番[] = { 3, 2, 0, 1 };

並び替え( 配列, 並び替え後の順番 )
{
???
}

C++の標準関数でも、サンプルサイトでも良いんで教えて欲しい