順列のインデクシング?

例えば 0・1・2・3 を適当に並べ替えてできる「2 3 0 1」とか「3 0 2 1」とかを順列といいます。この順列を全て列挙したいときは、STL の next_permutation() を使うと簡単です。これは順列の 昇べきの順〜降べきの順 までを順番にはじき出してくれます。便利ですねぇ。
で、昇べきを最初、降べきを最後として、任意の順列が何番目に当たるのかを計算したいんですが、どなたか知ってる方いますか??。調べてもナカナカ出てこない↓↓。いや、頭から順番に反復すればイケるけど、もっと効率的な方法が知りたいのです。
さらに、同じ要素が複数ある場合、パターン数は各要素の重複数の階乗で割算されますが、このような場合にでもインデクスに対応できるものってあるのでしょうかねー。今まで聞いたことないけど。。