现在的位置: 首页 > 综合 > 正文

C++模板简叙

2014年02月03日 ⁄ 综合 ⁄ 共 4040字 ⁄ 字号 评论关闭

                           

 Definition :

 

                 A predefined class or form that is applied to each new class or form you create.

Template is a “Generic Term “ . Template declaration specifies a set of parameterized classes or functions.

Main usage for Templates :

1) Receive at run time any type of argument ( string , int ,float , ..etc.,) in a

  single prototype  declaration.

2) Reduce the size ofs Code

3) Lots of Built in code like Predefined operations (Standard Template Library) (List ,map, set , ..etc )

4) Support OOPS Concept

5) Memory Management.

 Templates specifies  :

Class Template and Function Template.

Class Template :

Class templates define a family of related classes that are based on the parameters passed to the class upon instantiation

Syntax :

template  < typelist > Class Declaration

Example :

#include <iostream>
#include <string>
using namespace std;
 
ostream &newline(ostream&nel){
            return nel<<endl<<endl;
 
}
template < class T>
class James
{
             T Number;
             James *Next;
            public:
                         void Create(James<T> *);
                         void Display(James<T> *);
                         int Print(T); 
 
};
 
template <class T> void James<T>::Create(James<T> *p)
{
            //p=new James<T>;
            cout<<"Enter the Number "<<newline;
            cin>>p->Number;
            cout<<"Enter "<<newline;
            cin>>p->Next->Number;
}
 
template< class T> void James<T>::Display(James<T> *p)
{
cout<<"Answers : "<<newline<<p->Number<<newline<<p->Next->Number<<endl;
}
 
template<class T> int James<T>::Print(T Integer)
{
cout<<Integer <<newline;
return 1;
}
 
void main()
{
James<int> *m=new James<int>;
James<float> *m1=new James<float>;
James<string> *m2=new James<string>;
m2->Create(m2);
m2->Display(m2);
delete m2;
}

In the above program explain the clear idea about  “ class templates “

Function Template :

Function templates are similar to class templates, but define a family of functions .

Syntax :

 template  < typelist > Function  Declaration

Example :

#include <iostream>
#include <string>
using namespace std;
 
template<class T> void f()
{
cout<<"I Won with the Help of C++"<<endl;
}
 
void main()
{
void g();
g();
}
void g()
{
f<int>();
}
 

Standard Template Library  ( STL ) :

STL is a general purpose library consist of algorithm and data structure.

It consists of

  • Containers
  • Generic Algorithm
  • Iterators
  • Function Objects
  • Allocators
  • Adaptors

 

Sample Program :

Display a string using Vector Template

#include <iostream>
#include <vector>
using namespace std;
 
class sample{
public:
            void display()
            {
            cout<<"Display"<<endl;
            }
};
void main()
{
vector<sample> a;
vector<sample>::iterator i=a.begin();
i->display();
}

Display a Name and Year using Vector Template

#include <string>
 
using namespace std;
 
class sample{
            string name;
            int number;
public:
            sample(){}
            sample(string newname,int newnumber):name(newname),number(newnumber){}
            static void Display(vector<sample>*p)
            {
                        for(vector<sample>::iterator i=p->begin();i!=p->end();i++)
                        {
                        cout<<i->name<<"\t"<<i->number<<endl;
                        }
            }
};
 
void main()
{
            vector<sample> *a=new vector<sample>;
            cout<<endl<< "NAME "<<"\t"<<"YEAR"<<endl<<endl;;
            a->insert(a->begin(),sample("India",23));
            a->insert(a->begin(),sample("James",22));
            a->insert(a->begin(),sample("MACMET",21));
            a->insert(a->begin(),sample("Technologies",20));
            sample::Display(a);
            cout<<endl;
            delete a;
}
 

Arithmetic Function Object:

Arithmetic Function objects supports standard arithmetic operations

 

For addition Function Object  

Syntax:

 

plus<type >

Sample Program :

a)    #include <iostream>
  #include <string>
  #include <functional>
 
  using namespace std;
 
  void main()
{
            plus<int> add;
            cout<<add(1,2)<<endl;
            plus<string> add1;
            cout<<add1("james", "  prasanna ")<<endl;
}
 
 
b) #include <iostream>
#include <numeric>
#include <vector>
#include <functional>
 
using namespace std;
 
void main()
{
            minus<int> red;
            negate<int> neg;
            cout<<red(1,2)<<endl;
            cout<<neg(2)<<endl;
}
 

Auto ptr Class :

Auto_ptr class avoid memory Leak

Syntax:

auto_ptr<type>

Sample Program :

#include <iostream>
#include <memory>
#include <string>
using namespace std;
 
void main()
{
            auto_ptr<string> a(new string("jshdfjhsd"));
            cout<<*a<<endl;
            a->insert(strlen("  "),"james");
            cout<<*a<<endl;
}

Stack Template :

#include <stack>
#include <iostream>
using namespace std;
 
void main()
{
            stack<int> a;
            a.push(1);
            if(!a.empty())
                        cout<<"Not Empty "<<endl;
                 else
             cout<<"Empty "<<endl;
            cout<<a.top()<<endl;}
 
 

Set Template :

#include <set>
#include <iostream>
using namespace std;
 
void truefalse(int x)
{
            cout<<(x?"true":"false")<<endl;
}
void main()
{
            set<int> a,b;
            a.insert(1);
            a.insert(2);
            a.insert(3);
     set<int>::iterator i;
             for(i=a.begin();i!=a.end();i++)
             cout<<*i<<endl;
             truefalse(a.key_comp()(1,2));
              i=a.find(0);
             truefalse(i!=a.end());
}
 
 

 

 

抱歉!评论已关闭.