PDA

View Full Version : نوشتن std::rank برای بقیه container های c++



JalaliMehr
جمعه 30 خرداد 1393, 17:12 عصر
همون طوری که اطلاع دارین std::rank تعداد ابعاد یک آرایه معمولی رو به ما میده .
جالا من یک کد نوشتم که ابعاد رو برای وکتور هم میده :

#include <iostream>

#include <vector>

template<typename Type, Type val>
struct integral_constant
{
static constexpr Type value =val;
};

template<typename>
struct rank
: public integral_constant<std::size_t, 0> { };

template<typename Type>
struct rank< std::vector<Type> >
: public integral_constant<std::size_t, 1 + rank<Type>::value> { };

template<class T>
constexpr size_t vector_dimentions(T)
{
return rank<T>::value ;
}

int main()
{
std::vector<std::vector<std::vector<int>>> vec;
std::cout<<vector_dimentions(vec) << '\n';
}





می خواستم بدونم چطوری میشه این کد رو به شکلی نوشت که برای بقیه container ها مثل list , map ,... هم کار کنه ؟