#include <bits/stdc++.h>
using namespace std;
const int maxn=100+50;
struct student{
int id;
float gpa;
};
template <class T,int n>
class Store
{
private:
T item[maxn];
bool haveValue[maxn];
int len;
public:
Store();
T & getElem(int i);
void putElem(const T &x);
};
template <class T,int n>
Store<T,n>::Store():len(n){
for(int i=0;i<len;i++)
{
haveValue[i]=false;
}
}
template <class T,int n>
T &Store<T,n>::getElem(int i)
{
if(!haveValue[i])
{
cout<<"No item present!"<<endl;
exit(1);
}
else
{
haveValue[i]=false;
}
return item[i];
}
template<class T,int n>
void Store <T,n>::putElem(const T &x)
{
bool check=false;
for(int i=0;i<len;i++)
{
if(!haveValue[i])
{
check=true;
item[i]=x;
haveValue[i]=true;
break;
}
}
if(!check)
{
cout<<"there is no place to put the element"<<endl;
return ;
}
}
int main()
{
Store<int,3>s1;
s1.putElem(2);
s1.putElem(5);
int k=s1.getElem(1);
cout<<k<<endl;
Store<double,3>s2;
s2.putElem(1.7);
student t1{1000,2.3};
Store<student,3>s3;
s3.putElem(t1);
cout<<"student's id is "<<s3.getElem(0).id<<endl;
cout<<s1.getElem(3)<<endl;
return 0;
}