コンテナの種類を確認するにはどうすればよいですか?私。コンテナの種類を確認する
template <class Container1>
void func (Container1 &cont_1)
{
if (cont_1 is list container)
//do stuff
if (cont_1 is vector container)
//do other stuff
}
私には2つの可能性があります。リストとベクターです。 list
/vector
の値の型がわからない、つまりvector<char>
またはvector<int>
などが可能なので、ベクトルまたはリストを取得する情報を取得したいだけです。 私はtypeid
とtype info
に出くわしましたが、本当にそれをやり遂げませんでした。
オーバーロードを使用しない方法はありますか?この 'if'文を除いて全く同じ関数を持っていれば、すべてを2回持っていない方がいいのではないでしょうか? – SemtexB
@SemtexBおそらく 'if'の内容が何かをします。したがって、オーバーロードされた関数に置きます。 – juanchopanza
@SemtexBまた、他の関数に繰り返しコードを抽出し、それを過負荷または逆方向の両方で呼び出して、条件付きのものだけを実行し、元の 'func'から呼び出す' func_if'を作成することができます –