HTMLページからURLを抽出するC++のクラスを設計しています。私はBoostの正規表現ライブラリを使用して手間のかかる作業を行っています。クラスの設計を始めて、URLの保存方法を制限したくないことに気づきました。1つのオプションは、参照によってを受け入れ、std::vector<Url>
それに対してpush_backを呼び出すことです。クラスのコンシューマーにを強制的に使用させないようにしたいと思いますstd::vector
。そこで、宛先イテレータを使用するメンバーテンプレートを作成しました。次のようになります。
template <typename TForwardIterator, typename TOutputIterator>
TOutputIterator UrlExtractor::get_urls(
TForwardIterator begin,
TForwardIterator end,
TOutputIterator dest);
物事を複雑にしすぎているような気がします。私はC++でかなり一般的なコードを書くのが好きで、インターフェイスをロックダウンするのに苦労しています。しかし、それから私はこれらの窮状に陥り、すべてをテンプレート化しようとしています。この時点で、コードを読んでいる人は、それTForwardIterator
がを繰り返していることに気づいていませんstd::string
。
私の特定の状況では、このジェネリックであることは良いことであるかどうか疑問に思っています。どの時点でコードをより明確にし始めますか?関数から一般的に値を取得するための標準的なアプローチはありますか?