特定のタイプのコンテナを取る関数を作成する方法はありますか(std::string
)パラメータとして
void foo(const std::container<std::string> &cont)
{
for(std::string val: cont) {
std::cout << val << std::endl;
}
}
入力としてすべてのタイプのstlコンテナーに対してそれを呼び出しますか?上記のように?
std::set<std::string> strset;
std::vector<std::string> strvec;
std::list<std::string> strlist;
foo(strset);
foo(strvec);
foo(strlist);
代わりにイテレータを使用することを検討してください。中間結果は次のようになります
template<typename Iter>
void foo(Iter begin, Iter end) {
using T = decltype(*begin);
std::for_each(begin, end, [] (cons T & t) {
std::out << t << '\n';
}
}
現在、呼び出し可能なテンプレートを使用しています:
template<typename Iter, typename Callable>
void foo(Iter begin, Iter end, Callable & c) {
std::for_each(begin, end, c);
}
STLがすでに提供しているものを使用する方法を学びました。