コンパイル時にタイプが STL コンテナであるかどうかを判断する
多くのプログラミング シナリオでは、タイプが STL コンテナであるかどうかを知ることは有益です。特定の型はコンパイル時の STL コンテナです。これにより、使用されているコンテナのタイプに基づいてアルゴリズムやデータ構造を最適化できます。
1 つのアプローチは、テンプレート構造体を利用してコンテナのタイプを決定することです。
struct is_cont{}; struct not_cont{}; template <typename T> struct is_cont { typedef not_cont result_t; };
ただし、このアプローチはstd::vector や std::deque などの STL コンテナ タイプごとに特殊化を作成する必要があります。
より包括的な解決策には、ヘルパー クラス テンプレートの使用が含まれます。
template<typename T> struct is_container : std::integral_constant<bool, has_const_iterator<T>::value && has_begin_end<T>::beg_value && has_begin_end<T>::end_value> { };
このクラス テンプレートは次のチェックを行います。次のプロパティの場合:
使用例:
std::cout << is_container<std::vector<int>>::value << std::endl; // true std::cout << is_container<std::list<int>>::value << std::endl; // true std::cout << is_container<std::map<int>>::value << std::endl; // true std::cout << is_container<std::set<int>>::value << std::endl; // true std::cout << is_container<int>::value << std::endl; // false
以上がコンパイル時にタイプが STL コンテナであるかどうかを判断するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。