Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menentukan sama ada Jenis ialah Bekas STL pada Masa Penyusunan?
Tentukan sama ada Jenis ialah Bekas STL pada Masa Penyusun
Dalam banyak senario pengaturcaraan, ia boleh memberi manfaat untuk mengetahui sama ada atau tidak jenis tertentu ialah bekas STL pada masa penyusunan. Ini membolehkan untuk mengoptimumkan algoritma atau struktur data berdasarkan jenis bekas yang digunakan.
Satu pendekatan ialah menggunakan struct templat untuk menentukan jenis kontena:
struct is_cont{}; struct not_cont{}; template <typename T> struct is_cont { typedef not_cont result_t; };
Walau bagaimanapun, pendekatan ini memerlukan pengkhususan untuk setiap jenis kontena STL, seperti std::vector dan std::deque.
Penyelesaian yang lebih komprehensif melibatkan penggunaan templat kelas pembantu:
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> { };
Templat kelas ini menyemak untuk sifat berikut:
Penggunaan示例:
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
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan sama ada Jenis ialah Bekas STL pada Masa Penyusunan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!