1.类测试:
#include<bits/stdc++.h>
using namespace std;
template<class T>
class Array{
private:
T *arr;
int size;
int capacity;
public:
Array();
Array(int capacity);
Array(const Array &ob);
~Array();
Array& operator=(Array& ob);
void pushback(T elem);
void popback(void);
};
template<class T>
Array<T>::Array(){
capacity=5;
size=0;
arr=new T [capacity];
cout<<"无参"<<endl;
memset(arr,0,sizeof(T)*capacity);
}
template<class T>
Array<T>::Array(int capacity){
this->capacity=capacity;
size=0;
arr=new T [capacity];
memset(arr,0,sizeof(T)*capacity);
}
template<class T>
Array<T>::Array(const Array &ob){
capacity=ob.capacity;
size=ob.size;
arr=new T [capacity];
memset(arr,0,capacity*sizeof(T));
memcpy(arr,ob,sizeof(T)*size);
}
template<class T>
Array<T>::~Array(){
if(arr!=NULL){
delete [] arr;
arr=NULL;
}
}
template<class T>
Array<T> &Array<T>::operator=(Array<T> &ob){
if(arr!=NULL){
delete [] arr;
arr=NULL;
}
size=ob.size;
capacity=ob.capacity;
arr=new T [capacity];
memset(arr,0,sizeof(T)*capacity);
memcpy(arr,ob,sizeof(T)*size);
return *this;
}
template<class T>
void Array<T>::pushback(T elem){
T *tmp;
if(size==capacity){
capacity=2*capacity;
tmp=new T [capacity];
if(arr!=NULL){
memcpy(tmp,arr,sizeof(T)*size);
delete [] arr;
}
arr=tmp;
}
arr[size]=elem;
size++;
cout<<arr[0]<<endl;
}
template<class T>
void Array<T>::popback(void){
if(size==0){
cout<<"容器为空"<<endl;
}
else{
size--;
arr[size]=0;
}
}
int main(void){
Array<int> ob(10);
ob.pushback(10);
return 0;
}
2.map测试:
#include<bits/stdc++.h>
using namespace std;
class Base{
public:
int classnum;
void inputclassnum(void){
cout<<"Input the class number: ";
cin>>classnum;
cout<<endl;
}
void getclassnum(void){
cout<<"The class number is "<<classnum<<endl;
}
};
class Person:public Base{
private:
string name;
int subnum;
float *score;
public:
Person(){
subnum=0;
score=new float [5];
memset(score,0,5*sizeof(float));
}
Person(string name,int subnum){
this->name=name;
this->subnum=subnum;
score=new float [subnum];
memset(score,0,sizeof(float)*subnum);
int i;
for(i=0;i<subnum;i++){
cout<<name<<"'s score"<<i+1<<" is:";
cin>>score[i];
cout<<endl;
}
}
Person(const Person &ob){
this->name=ob.name;
this->subnum=ob.subnum;
score=new float [ob.subnum];
memset(score,0,sizeof(float)*subnum);
if(ob.score!=NULL){
memcpy(score,ob.score,sizeof(float)*ob.subnum);
}
}
~Person(){
if(score!=NULL){
delete [] score;
score=NULL;
}
name="";
subnum=0;
}
void Print(void){
cout<<"Name: "<<name<<"; Subject number: "<<subnum<<endl;
int i;
for(i=0;i<subnum;i++){
cout<<"The score"<<i+1<<" is "<<score[i]<<endl;
}
}
friend class Printname;
friend void Printf(map<int, Person> &m);
};
class Printname{
public:
void operator()(string str){
cout<<"The name is "<<str<<endl;
}
};
void Printf(map<int, Person> &m){
map<int,Person>::const_iterator it=m.begin();
for(;it!=m.end();it++){
cout<<(*it).first<<" "<<(*it).second.name<<endl;
Printname()((*it).second.name);
}
}
int main(){
map<int,Person> m;
m.insert(make_pair(101,Person("Bob",3)));
//m.insert(make_pair(102,Person("Tom",3)));
//m.insert(make_pair(103,Person("Jack",3)));
Printf(m);
return 0;
}
3.template测试:
#include<bits/stdc++.h>
using namespace std;
template<class T>
class Person{
private:
T *arr;
int size;
int capacity;
public:
Person(){
arr=new T [5];
memset(arr,0,sizeof(T)*5);
size=0;
capacity=5;
}
Person(int capacity){
this->capacity=capacity;
size=capacity;
arr=new T [capacity];
memset(arr,0,sizeof(T)*capacity);
int i;
for(i=0;i<capacity;i++){
cout<<"The element"<<i+1<<" is ";
cin>>arr[i];
cout<<endl;
}
}
Person(const Person &ob){
this->capacity=ob.capacity;
this->size=ob.size;
arr=new T [ob.capacity];
memset(arr,0,sizeof(T)*ob.capacity);
memcpy(arr,ob.arr,ob.size*sizeof(T));
}
~Person(){
if(arr!=NULL){
delete [] arr;
arr=NULL;
}
capacity=0;
size=0;
}
void myInsert(void){
if(size==capacity){
T *arr1;
arr1=new T [2*capacity];
memset(arr1,0,sizeof(T)*2*capacity);
memcpy(arr1,arr,sizeof(T)*2*capacity);
delete [] arr;
arr=arr1;
}
cout<<"Input the element:";
cin<<arr[size];
cout<<endl;
size++;
}
void myPrint(void){
int i;
for(i=0;i<size;i++){
cout<<"The data"<<i+1<<" is "<<arr[i]<<endl;
}
}
void getsize(void){
cout<<"The capacity is "<<capacity<<endl;
cout<<"The size is "<<size<<endl;
}
Person &operator=(Person &ob){
if(arr!=NULL){
delete [] arr;
arr=NULL;
}
this->capacity=ob.capacity;
this->size=ob.size;
memcpy(arr,ob.arr,ob.size*sizeof(T));
return 0;
}
friend void Print(map<int,Person<int> > m);
};
void Print(map<int,Person<int> > m){
int i;
map<int,Person<int> >::iterator it=m.begin();
for(;it!=m.end();it++){
cout<<"The number is"<<(*it).first<<endl;
for(i=0;i<(*it).second.capacity;i++){
cout<<"The element"<<i+1<<" is "<<(*it).second.arr[i]<<endl;
}
}
}
int main(){
map<int,Person<int> > m;
m.insert(make_pair(101,Person<int>(3)));
m.insert(make_pair(102,Person<int>(3)));
Print(m);
return 0;
}
4.适配器测试:
#include<bits/stdc++.h>
using namespace std;
class Print:public binary_function<int,int,void>{
public:
void operator()(int value,int tmp) const
{
cout<<value+tmp<<endl;
}
};
int main(){
int tmp;
vector<int> v1;
cout<<"Input the tmp:";
cin>>tmp;
v1.push_back(10);
v1.push_back(20);
v1.push_back(30);
v1.push_back(40);
v1.push_back(50);
for_each(v1.begin(),v1.end(),bind2nd(Print(),tmp));
return 0;
}
2336

被折叠的 条评论
为什么被折叠?



