使用している両方のアルゴリズムは、反復子を返します。イテレータを逆参照すると、このイテレータによって「指された」オブジェクトが取得されます。これが、実行時に位置ではなく値を出力する理由です。
cout << "min value at position " << *find(v2.begin(), v2.end(), value);
イテレータはポインタと見なすことができます (厳密にはそうではありませんが、簡単にするためにそうしましょう)。したがって、反復子だけではコンテナー内の位置を示すことはできません。ベクトルを反復しているため、コンラッドが言ったように、マイナス演算子を使用できます。
cout << "min value at " << min_element(v2.begin(), v2.end()) - v2.begin();
ただし、std::distance アルゴリズムを使用することをお勧めします。これはより柔軟で、すべての標準コンテナーで機能します。
cout << "min value at " << distance(v2.begin(), min_element(v2.begin(), v2.end()));