数据扩张.

 #include <iostream>
#include <vector>
#include <type_traits>
#include <initializer_list>
 
template<typename T>
class Tablet{
 private:
  std::vector<T> data;//表中的数据. 
  
  unsigned int tabletSize;//表最多可以容下的数据大小. 
  unsigned int slots;//表已有多少数据. 
  
  public:
   template<typename U, class=typename std::enable_if< std::is_same<T, U>::value, void >::type>
   Tablet(const std::initializer_list<U>& dataIl);
   
   ~Tablet();
   void insertData(const T& myData);
};
template<typename U, class>
Tablet::Tablet(const initializer_list<U>& dataIl)
       :data(dataIl),
        tabletSize(0),
        slots(0)
{
 if(dataIl.empty()){
  ;
 }else{
  this->tabletSize=data.capacity();//得出std::vector<T>中最多可以容纳多少该类型元素. 
  this->slots=data.size();//得出std::vector<T>中实际已经存放的元素数量. 
 }
}
template<typename U>
Tablet::~Tablet()
{
 if(data.empty()){
  ;
 }else{
  data.clear();
 }
}
template<typename U>
void Tablet::insertData()
{
 if(this->tabletSize == 0){
  this->tabletSize=1;
 }
 
 if(this->slots == this->tabletSize){
  data.resize(tabletSize * 2);
  data.insert(myData);
  this->tabletSize=data.capacity();
  this->slots=data.size();
 }
}

你可能感兴趣的:(数据扩张.)