関数の引数として任意のコンテナーを渡し、それを反復処理したいと思います (要素を消去したりプッシュしたりしません)。残念ながら、これを行う標準的な方法はないようです。
私の頭に浮かぶ最初の解決策は、CollectionInterface
STLコンテナをラップするクラスによって実装されるインターフェース(と呼びましょう)です。したがって、関数宣言は次のようになります。
f(const CollectionInterface * collection);
または、コンパイル時にバインドし続けるという利点があるメソッド テンプレートについて考えていました。
template <class CONTAINER> void f(const CONTAINER & collection);
どちらの方法が良いと思いますか?