- //stack.h
- #pragma once
- #include
-
- template <class T>
- class Stack
- {
- public:
- Stack(int = 10) ;
- ~Stack() { delete [] stackPtr ; }
- int push(const T&);
- int pop(T&) ; // pop an element off the stack
- int isEmpty()const { return top == -1 ; }
- int isFull() const { return top == size - 1 ; }
- private:
- int size ; // Number of elements on Stack
- int top ;
- T* stackPtr ;
- } ;
-
- //constructor with the default size 10
- template <class T>
- Stack
::Stack(int s) - {
- size = s > 0 && s < 1000 ? s : 10 ;
- top = -1 ; // initialize stack
- stackPtr = new T[size] ;
- }
- // push an element onto the Stack
- template <class T>
- int Stack
::push(const T& item) - {
- if (!isFull())
- {
- stackPtr[++top] = item ;
- return 1 ; // push successful
- }
- return 0 ; // push unsuccessful
- }
-
- // pop an element off the Stack
- template <class T>
- int Stack
::pop(T& popValue) - {
- if (!isEmpty())
- {
- popValue = stackPtr[top--] ;
- return 1 ; // pop successful
- }
- return 0 ; // pop unsuccessful
- }
-
- ///
-
- //#include "stack.h"
- using namespace std ;
- int main()
- {
- typedef Stack<float> FloatStack ;
- typedef Stack<int> IntStack ;
-
- FloatStack fs(5) ;
- float f = 1.1 ;
- cout << "Pushing elements onto fs" << endl ;
- while (fs.push(f))
- {
- cout << f << ' ' ;
- f += 1.1 ;
- }
- cout << endl << "Stack Full." << endl
- << endl << "Popping elements from fs" << endl ;
- while (fs.pop(f))
- cout << f << ' ' ;
- cout << endl << "Stack Empty" << endl ;
- cout << endl ;
-
- IntStack is ;
- int i = 1.1 ;
- cout << "Pushing elements onto is" << endl ;
- while (is.push(i))
- {
- cout << i << ' ' ;
- i += 1 ;
- }
- cout << endl << "Stack Full" << endl
- << endl << "Popping elements from is" << endl ;
- while (is.pop(i))
- cout << i << ' ' ;
- cout << endl << "Stack Empty" << endl ;
- return 0;
- }
- Pushing elements onto fs
- 1.1 2.2 3.3 4.4 5.5
- Stack Full.
-
- Popping elements from fs
- 5.5 4.4 3.3 2.2 1.1
- Stack Empty
-
- Pushing elements onto is
- 1 2 3 4 5 6 7 8 9 10
- Stack Full
-
- Popping elements from is
- 10 9 8 7 6 5 4 3 2 1
- Stack Empty
- #include
- using namespace std;
-
- template < typename Type1, typename Type2 = double >
- class Point {
- public:
- // Constructor
- Point< Type1, Type2 >( Type1 x, Type2 y)
- : m_x( x ), m_y( y )
- {
- }
-
- Type2 distance()
- {
- return static_cast< Type2 >( sqrt( m_x * m_x + m_y * m_y ) );
- }
-
- private:
- Type1 m_x;
- Type2 m_y;
-
- };//class Point
-
- int main()
- {
- // Sample use of template function with two data types
- Point<int,int> pt1(2,3);
- Point<float> pt2(3.2,4.3);
- std::cout<
distance()<<"\n"; - std::cout<
distance()<<"\n"; -
-
- return 0;
- }