を私はこのようなインタフェースを持つ機能を持つようにしたい:STLコンテナにイテレータのインデックスを検索する - 必要性のテンプレート関数
template<typename T, typename R> int find_index (const T& list, const R& value);
私が知っているように、イテレータを返しSTLでfind()
あります。イテレータのインデックスを返す必要があります(インデックスされていないコンテナ(std::list
など)の場合でも)。私はこのコードを試してみました:
template<typename T, typename R>
int find_index (const T& list, const R& value)
{
int index = 0;
for (T::const_iterator it = list.begin(); it != list.end(); it++, index++)
if ((*it) == value)
return index;
return -1;
}
をしかし、コンパイラがit
上のエラーを示して - テンプレート型名からconst_iterator
を取得するために許可されていないように思えます。私はそれを回ることができますか?
最悪の場合は、イテレータの開始と終了をfind_index引数に渡すことができますが、それほどうまくありません。エレガントなソリューションに感謝します。