A<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B_Tutorial%2Ftemplate%2Fgeneric_stack</id>
		<title>C++ Tutorial/template/generic stack - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B_Tutorial%2Ftemplate%2Fgeneric_stack"/>
		<link rel="alternate" type="text/html" href="http://cppe.ru/index.php?title=C%2B%2B_Tutorial/template/generic_stack&amp;action=history"/>
		<updated>2026-04-11T02:16:51Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://cppe.ru/index.php?title=C%2B%2B_Tutorial/template/generic_stack&amp;diff=2591&amp;oldid=prev</id>
		<title> в 14:21, 25 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://cppe.ru/index.php?title=C%2B%2B_Tutorial/template/generic_stack&amp;diff=2591&amp;oldid=prev"/>
				<updated>2010-05-25T14:21:17Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 14:21, 25 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://cppe.ru/index.php?title=C%2B%2B_Tutorial/template/generic_stack&amp;diff=2592&amp;oldid=prev</id>
		<title>Admin: 1 версия:&amp;#32;Импорт контента...</title>
		<link rel="alternate" type="text/html" href="http://cppe.ru/index.php?title=C%2B%2B_Tutorial/template/generic_stack&amp;diff=2592&amp;oldid=prev"/>
				<updated>2010-05-25T10:30:04Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия: Импорт контента...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==A generic stack with size 10==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
const int SIZE = 10;&lt;br /&gt;
template &amp;lt;class StackType&amp;gt; class stack {&lt;br /&gt;
  StackType stck[SIZE];&lt;br /&gt;
  int tos;&lt;br /&gt;
public:&lt;br /&gt;
  stack() {&lt;br /&gt;
     tos = 0;&lt;br /&gt;
  }&lt;br /&gt;
    void push(StackType ob)&lt;br /&gt;
    {&lt;br /&gt;
      if(tos==SIZE) {&lt;br /&gt;
        cout &amp;lt;&amp;lt; &amp;quot;Stack is full.\n&amp;quot;;&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
      stck[tos] = ob;&lt;br /&gt;
      tos++;&lt;br /&gt;
    }&lt;br /&gt;
    StackType pop()&lt;br /&gt;
    {&lt;br /&gt;
      if(tos==0) {&lt;br /&gt;
        cout &amp;lt;&amp;lt; &amp;quot;Stack is empty.\n&amp;quot;;&lt;br /&gt;
        return 0; // return null on empty stack&lt;br /&gt;
      }&lt;br /&gt;
      tos--;&lt;br /&gt;
      return stck[tos];&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
int main() {&lt;br /&gt;
  stack&amp;lt;char&amp;gt; s1, s2;&lt;br /&gt;
  s1.push(&amp;quot;a&amp;quot;);&lt;br /&gt;
  s2.push(&amp;quot;x&amp;quot;);&lt;br /&gt;
  s1.push(&amp;quot;b&amp;quot;);&lt;br /&gt;
  s2.push(&amp;quot;y&amp;quot;);&lt;br /&gt;
  s1.push(&amp;quot;c&amp;quot;);&lt;br /&gt;
  s2.push(&amp;quot;z&amp;quot;);&lt;br /&gt;
  for(int i=0; i&amp;lt;3; i++)&lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;Pop s1: &amp;quot; &amp;lt;&amp;lt; s1.pop() &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
  for(int i=0; i&amp;lt;3; i++)&lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;Pop s2: &amp;quot; &amp;lt;&amp;lt; s2.pop() &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
  stack&amp;lt;double&amp;gt; ds1, ds2;&lt;br /&gt;
  ds1.push(1.1);&lt;br /&gt;
  ds2.push(2.2);&lt;br /&gt;
  ds1.push(3.3);&lt;br /&gt;
  ds2.push(4.4);&lt;br /&gt;
  ds1.push(5.5);&lt;br /&gt;
  ds2.push(6.6);&lt;br /&gt;
  for(int i=0; i&amp;lt;3; i++)&lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;Pop ds1: &amp;quot; &amp;lt;&amp;lt; ds1.pop() &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
  for(int i=0; i&amp;lt;3; i++)&lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;Pop ds2: &amp;quot; &amp;lt;&amp;lt; ds2.pop() &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Pop s1: c&lt;br /&gt;
Pop s1: b&lt;br /&gt;
Pop s1: a&lt;br /&gt;
Pop s2: z&lt;br /&gt;
Pop s2: y&lt;br /&gt;
Pop s2: x&lt;br /&gt;
Pop ds1: 5.5&lt;br /&gt;
Pop ds1: 3.3&lt;br /&gt;
Pop ds1: 1.1&lt;br /&gt;
Pop ds2: 6.6&lt;br /&gt;
Pop ds2: 4.4&lt;br /&gt;
Pop ds2: 2.2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Generic Stack==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using std::cout;&lt;br /&gt;
using std::endl;&lt;br /&gt;
template&amp;lt; typename T &amp;gt;&lt;br /&gt;
class Stack &lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
    template&amp;lt; typename T &amp;gt;&lt;br /&gt;
    Stack( int s ): size( s &amp;gt; 0 ? s : 10 ),top( -1 ),stackPtr( new T[ size ] ){&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
   ~Stack() &lt;br /&gt;
   { &lt;br /&gt;
      delete [] stackPtr;&lt;br /&gt;
   }&lt;br /&gt;
    bool push( const T &amp;amp;pushValue )&lt;br /&gt;
    {&lt;br /&gt;
       if ( !isFull() ) &lt;br /&gt;
       {&lt;br /&gt;
          stackPtr[ ++top ] = pushValue;&lt;br /&gt;
          return true;&lt;br /&gt;
       }&lt;br /&gt;
    &lt;br /&gt;
       return false;&lt;br /&gt;
    }&lt;br /&gt;
    bool pop( T &amp;amp;popValue )&lt;br /&gt;
    {&lt;br /&gt;
       if ( !isEmpty() ) &lt;br /&gt;
       {&lt;br /&gt;
          popValue = stackPtr[ top-- ];&lt;br /&gt;
          return true;&lt;br /&gt;
       }&lt;br /&gt;
    &lt;br /&gt;
       return false;&lt;br /&gt;
    }&lt;br /&gt;
   bool isEmpty() const &lt;br /&gt;
   { &lt;br /&gt;
      return top == -1; &lt;br /&gt;
   }&lt;br /&gt;
   bool isFull() const &lt;br /&gt;
   { &lt;br /&gt;
      return top == size - 1; &lt;br /&gt;
   }&lt;br /&gt;
private:&lt;br /&gt;
   int size;&lt;br /&gt;
   int top; &lt;br /&gt;
   T *stackPtr;&lt;br /&gt;
};&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   Stack&amp;lt; double &amp;gt; doubleStack( 5 ); // size 5&lt;br /&gt;
   double doubleValue = 1.1;&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;Pushing elements onto doubleStack\n&amp;quot;;&lt;br /&gt;
   while ( doubleStack.push( doubleValue ) ) &lt;br /&gt;
   { &lt;br /&gt;
      cout &amp;lt;&amp;lt; doubleValue &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
      doubleValue += 1.1;&lt;br /&gt;
   }&lt;br /&gt;
   while ( doubleStack.pop( doubleValue ) )&lt;br /&gt;
      cout &amp;lt;&amp;lt; doubleValue &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
   Stack&amp;lt; int &amp;gt; intStack; // default size 10&lt;br /&gt;
   int intValue = 1;&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;\nPushing elements onto intStack\n&amp;quot;;&lt;br /&gt;
   while ( intStack.push( intValue ) ) &lt;br /&gt;
   {&lt;br /&gt;
      cout &amp;lt;&amp;lt; intValue &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
      intValue++;&lt;br /&gt;
   }&lt;br /&gt;
   while ( intStack.pop( intValue ) )  &lt;br /&gt;
      cout &amp;lt;&amp;lt; intValue &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
   return 0;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;7.7&lt;br /&gt;
Exception: Stack&amp;lt;&amp;gt;::top(): empty stack&lt;br /&gt;
7&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Generic stack based on vector==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;/* The following code example is taken from the book&lt;br /&gt;
 * &amp;quot;C++ Templates - The Complete Guide&amp;quot;&lt;br /&gt;
 * by David Vandevoorde and Nicolai M. Josuttis, Addison-Wesley, 2002&lt;br /&gt;
 *&lt;br /&gt;
 * (C) Copyright David Vandevoorde and Nicolai M. Josuttis 2002.&lt;br /&gt;
 * Permission to copy, use, modify, sell and distribute this software&lt;br /&gt;
 * is granted provided this copyright notice appears in all copies.&lt;br /&gt;
 * This software is provided &amp;quot;as is&amp;quot; without express or implied&lt;br /&gt;
 * warranty, and with no claim as to its suitability for any purpose.&lt;br /&gt;
 */&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;deque&amp;gt;&lt;br /&gt;
#include &amp;lt;cstdlib&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
#include &amp;lt;stdexcept&amp;gt;&lt;br /&gt;
template &amp;lt;typename T, typename CONT = std::vector&amp;lt;T&amp;gt; &amp;gt;&lt;br /&gt;
class Stack {&lt;br /&gt;
  private:&lt;br /&gt;
    CONT elems;               // elements&lt;br /&gt;
  public:&lt;br /&gt;
    void push(T const&amp;amp;);      // push element&lt;br /&gt;
    void pop();               // pop element&lt;br /&gt;
    T top() const;            // return top element&lt;br /&gt;
    bool empty() const {      // return whether the stack is empty&lt;br /&gt;
        return elems.empty();&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
template &amp;lt;typename T, typename CONT&amp;gt;&lt;br /&gt;
void Stack&amp;lt;T,CONT&amp;gt;::push (T const&amp;amp; elem)&lt;br /&gt;
{&lt;br /&gt;
    elems.push_back(elem);    // append copy of passed elem&lt;br /&gt;
}&lt;br /&gt;
template &amp;lt;typename T, typename CONT&amp;gt;&lt;br /&gt;
void Stack&amp;lt;T,CONT&amp;gt;::pop ()&lt;br /&gt;
{&lt;br /&gt;
    if (elems.empty()) {&lt;br /&gt;
        throw std::out_of_range(&amp;quot;Stack&amp;lt;&amp;gt;::pop(): empty stack&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    elems.pop_back();         // remove last element&lt;br /&gt;
}&lt;br /&gt;
template &amp;lt;typename T, typename CONT&amp;gt;&lt;br /&gt;
T Stack&amp;lt;T,CONT&amp;gt;::top () const&lt;br /&gt;
{&lt;br /&gt;
    if (elems.empty()) {&lt;br /&gt;
        throw std::out_of_range(&amp;quot;Stack&amp;lt;&amp;gt;::top(): empty stack&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    return elems.back();      // return copy of last element&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
    try {&lt;br /&gt;
        // stack of ints:&lt;br /&gt;
        Stack&amp;lt;int&amp;gt; intStack;&lt;br /&gt;
        // stack of doubles which uses a std::deque&amp;lt;&amp;gt; to manage the elements&lt;br /&gt;
        Stack&amp;lt;double,std::deque&amp;lt;double&amp;gt; &amp;gt; dblStack;&lt;br /&gt;
        // manipulate int stack&lt;br /&gt;
        intStack.push(7);&lt;br /&gt;
        std::cout &amp;lt;&amp;lt; intStack.top() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
        intStack.pop();&lt;br /&gt;
        // manipulate double stack&lt;br /&gt;
        dblStack.push(42.42);&lt;br /&gt;
        std::cout &amp;lt;&amp;lt; dblStack.top() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
        dblStack.pop();&lt;br /&gt;
        dblStack.pop();&lt;br /&gt;
    }&lt;br /&gt;
    catch (std::exception const&amp;amp; ex) {&lt;br /&gt;
        std::cerr &amp;lt;&amp;lt; &amp;quot;Exception: &amp;quot; &amp;lt;&amp;lt; ex.what() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
        return EXIT_FAILURE;  // exit program with ERROR status&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;7&lt;br /&gt;
42.42&lt;br /&gt;
Exception: Stack&amp;lt;&amp;gt;::pop(): empty stack&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Generic stack with deque==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;/* The following code example is taken from the book&lt;br /&gt;
 * &amp;quot;C++ Templates - The Complete Guide&amp;quot;&lt;br /&gt;
 * by David Vandevoorde and Nicolai M. Josuttis, Addison-Wesley, 2002&lt;br /&gt;
 *&lt;br /&gt;
 * (C) Copyright David Vandevoorde and Nicolai M. Josuttis 2002.&lt;br /&gt;
 * Permission to copy, use, modify, sell and distribute this software&lt;br /&gt;
 * is granted provided this copyright notice appears in all copies.&lt;br /&gt;
 * This software is provided &amp;quot;as is&amp;quot; without express or implied&lt;br /&gt;
 * warranty, and with no claim as to its suitability for any purpose.&lt;br /&gt;
 */&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
#include &amp;lt;cstdlib&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;deque&amp;gt;&lt;br /&gt;
#include &amp;lt;stdexcept&amp;gt;&lt;br /&gt;
template &amp;lt;typename T,&lt;br /&gt;
          template &amp;lt;typename ELEM&amp;gt; class CONT = std::deque &amp;gt;&lt;br /&gt;
class Stack {&lt;br /&gt;
  private:&lt;br /&gt;
    CONT&amp;lt;T&amp;gt; elems;         // elements&lt;br /&gt;
  public:&lt;br /&gt;
    void push(T const&amp;amp;);   // push element&lt;br /&gt;
    void pop();            // pop element&lt;br /&gt;
    T top() const;         // return top element&lt;br /&gt;
    bool empty() const {   // return whether the stack is empty&lt;br /&gt;
        return elems.empty();&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
template &amp;lt;typename T, template &amp;lt;typename&amp;gt; class CONT&amp;gt;&lt;br /&gt;
void Stack&amp;lt;T,CONT&amp;gt;::push (T const&amp;amp; elem)&lt;br /&gt;
{&lt;br /&gt;
    elems.push_back(elem);    // append copy of passed elem&lt;br /&gt;
}&lt;br /&gt;
template&amp;lt;typename T, template &amp;lt;typename&amp;gt; class CONT&amp;gt;&lt;br /&gt;
void Stack&amp;lt;T,CONT&amp;gt;::pop ()&lt;br /&gt;
{&lt;br /&gt;
    if (elems.empty()) {&lt;br /&gt;
        throw std::out_of_range(&amp;quot;Stack&amp;lt;&amp;gt;::pop(): empty stack&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    elems.pop_back();         // remove last element&lt;br /&gt;
}&lt;br /&gt;
template &amp;lt;typename T, template &amp;lt;typename&amp;gt; class CONT&amp;gt;&lt;br /&gt;
T Stack&amp;lt;T,CONT&amp;gt;::top () const&lt;br /&gt;
{&lt;br /&gt;
    if (elems.empty()) {&lt;br /&gt;
        throw std::out_of_range(&amp;quot;Stack&amp;lt;&amp;gt;::top(): empty stack&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    return elems.back();      // return copy of last element&lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
    try {&lt;br /&gt;
        Stack&amp;lt;int&amp;gt;   intStack;       // stack of ints&lt;br /&gt;
        Stack&amp;lt;float&amp;gt; floatStack;     // stack of floats&lt;br /&gt;
        // manipulate int stack&lt;br /&gt;
        intStack.push(42);&lt;br /&gt;
        intStack.push(7);&lt;br /&gt;
        // manipulate float stack&lt;br /&gt;
        floatStack.push(7.7);&lt;br /&gt;
        // print float stack&lt;br /&gt;
        std::cout &amp;lt;&amp;lt; floatStack.top() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
        floatStack.pop();&lt;br /&gt;
        std::cout &amp;lt;&amp;lt; floatStack.top() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
        floatStack.pop();&lt;br /&gt;
        std::cout &amp;lt;&amp;lt; floatStack.top() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
        floatStack.pop();&lt;br /&gt;
    }&lt;br /&gt;
    catch (std::exception const&amp;amp; ex) {&lt;br /&gt;
        std::cerr &amp;lt;&amp;lt; &amp;quot;Exception: &amp;quot; &amp;lt;&amp;lt; ex.what() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
    }&lt;br /&gt;
    // stack for ints using a vector as an internal container&lt;br /&gt;
    Stack&amp;lt;int,std::vector&amp;gt; vStack;&lt;br /&gt;
    //...&lt;br /&gt;
    vStack.push(42);&lt;br /&gt;
    vStack.push(7);&lt;br /&gt;
    std::cout &amp;lt;&amp;lt; vStack.top() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
    vStack.pop();&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;7.7&lt;br /&gt;
Exception: Stack&amp;lt;&amp;gt;::top(): empty stack&lt;br /&gt;
7&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Max size as the parameter for a generic stack==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;/* The following code example is taken from the book&lt;br /&gt;
 * &amp;quot;C++ Templates - The Complete Guide&amp;quot;&lt;br /&gt;
 * by David Vandevoorde and Nicolai M. Josuttis, Addison-Wesley, 2002&lt;br /&gt;
 *&lt;br /&gt;
 * (C) Copyright David Vandevoorde and Nicolai M. Josuttis 2002.&lt;br /&gt;
 * Permission to copy, use, modify, sell and distribute this software&lt;br /&gt;
 * is granted provided this copyright notice appears in all copies.&lt;br /&gt;
 * This software is provided &amp;quot;as is&amp;quot; without express or implied&lt;br /&gt;
 * warranty, and with no claim as to its suitability for any purpose.&lt;br /&gt;
 */&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
#include &amp;lt;cstdlib&amp;gt;&lt;br /&gt;
#include &amp;lt;stdexcept&amp;gt;&lt;br /&gt;
template &amp;lt;typename T, int MAXSIZE&amp;gt;&lt;br /&gt;
class Stack {&lt;br /&gt;
  private:&lt;br /&gt;
    T elems[MAXSIZE];        // elements&lt;br /&gt;
    int numElems;            // current number of elements&lt;br /&gt;
  public:&lt;br /&gt;
    Stack();                  // constructor&lt;br /&gt;
    void push(T const&amp;amp;);      // push element&lt;br /&gt;
    void pop();               // pop element&lt;br /&gt;
    T top() const;            // return top element&lt;br /&gt;
    bool empty() const {      // return whether the stack is empty&lt;br /&gt;
        return numElems == 0;&lt;br /&gt;
    }&lt;br /&gt;
    bool full() const {       // return whether the stack is full&lt;br /&gt;
        return numElems == MAXSIZE;&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
// constructor&lt;br /&gt;
template &amp;lt;typename T, int MAXSIZE&amp;gt;&lt;br /&gt;
Stack&amp;lt;T,MAXSIZE&amp;gt;::Stack ()&lt;br /&gt;
  : numElems(0)               // start with no elements&lt;br /&gt;
{&lt;br /&gt;
    // nothing else to do&lt;br /&gt;
}&lt;br /&gt;
template &amp;lt;typename T, int MAXSIZE&amp;gt;&lt;br /&gt;
void Stack&amp;lt;T,MAXSIZE&amp;gt;::push (T const&amp;amp; elem)&lt;br /&gt;
{&lt;br /&gt;
    if (numElems == MAXSIZE) {&lt;br /&gt;
        throw std::out_of_range(&amp;quot;Stack&amp;lt;&amp;gt;::push(): stack is full&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    elems[numElems] = elem;   // append element&lt;br /&gt;
    ++numElems;               // increment number of elements&lt;br /&gt;
}&lt;br /&gt;
template&amp;lt;typename T, int MAXSIZE&amp;gt;&lt;br /&gt;
void Stack&amp;lt;T,MAXSIZE&amp;gt;::pop ()&lt;br /&gt;
{&lt;br /&gt;
    if (numElems &amp;lt;= 0) {&lt;br /&gt;
        throw std::out_of_range(&amp;quot;Stack&amp;lt;&amp;gt;::pop(): empty stack&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    --numElems;               // decrement number of elements&lt;br /&gt;
}&lt;br /&gt;
template &amp;lt;typename T, int MAXSIZE&amp;gt;&lt;br /&gt;
T Stack&amp;lt;T,MAXSIZE&amp;gt;::top () const&lt;br /&gt;
{&lt;br /&gt;
    if (numElems &amp;lt;= 0) {&lt;br /&gt;
        throw std::out_of_range(&amp;quot;Stack&amp;lt;&amp;gt;::top(): empty stack&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    return elems[numElems-1];  // return last element&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
    try {&lt;br /&gt;
        Stack&amp;lt;int,20&amp;gt;         int20Stack;     // stack of up to 20 ints&lt;br /&gt;
        Stack&amp;lt;int,40&amp;gt;         int40Stack;     // stack of up to 40 ints&lt;br /&gt;
        Stack&amp;lt;std::string,40&amp;gt; stringStack;    // stack of up to 40 strings&lt;br /&gt;
        // manipulate stack of up to 20 ints&lt;br /&gt;
        int20Stack.push(7);&lt;br /&gt;
        std::cout &amp;lt;&amp;lt; int20Stack.top() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
        int20Stack.pop();&lt;br /&gt;
        // manipulate stack of up to 40 strings&lt;br /&gt;
        stringStack.push(&amp;quot;hello&amp;quot;);&lt;br /&gt;
        std::cout &amp;lt;&amp;lt; stringStack.top() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
        stringStack.pop();&lt;br /&gt;
        stringStack.pop();&lt;br /&gt;
    }&lt;br /&gt;
    catch (std::exception const&amp;amp; ex) {&lt;br /&gt;
        std::cerr &amp;lt;&amp;lt; &amp;quot;Exception: &amp;quot; &amp;lt;&amp;lt; ex.what() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
        return EXIT_FAILURE;  // exit program with ERROR status&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;7&lt;br /&gt;
hello&lt;br /&gt;
Exception: Stack&amp;lt;&amp;gt;::pop(): empty stack&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==template stack based on deque==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;/* The following code example is taken from the book&lt;br /&gt;
 * &amp;quot;C++ Templates - The Complete Guide&amp;quot;&lt;br /&gt;
 * by David Vandevoorde and Nicolai M. Josuttis, Addison-Wesley, 2002&lt;br /&gt;
 *&lt;br /&gt;
 * (C) Copyright David Vandevoorde and Nicolai M. Josuttis 2002.&lt;br /&gt;
 * Permission to copy, use, modify, sell and distribute this software&lt;br /&gt;
 * is granted provided this copyright notice appears in all copies.&lt;br /&gt;
 * This software is provided &amp;quot;as is&amp;quot; without express or implied&lt;br /&gt;
 * warranty, and with no claim as to its suitability for any purpose.&lt;br /&gt;
 */&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
#include &amp;lt;cstdlib&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;deque&amp;gt;&lt;br /&gt;
#include &amp;lt;stdexcept&amp;gt;&lt;br /&gt;
template &amp;lt;typename T&amp;gt;&lt;br /&gt;
class Stack {&lt;br /&gt;
  private:&lt;br /&gt;
    std::deque&amp;lt;T&amp;gt; elems;   // elements&lt;br /&gt;
  public:&lt;br /&gt;
    void push(T const&amp;amp;);   // push element&lt;br /&gt;
    void pop();            // pop element&lt;br /&gt;
    T top() const;         // return top element&lt;br /&gt;
    bool empty() const {   // return whether the stack is empty&lt;br /&gt;
        return elems.empty();&lt;br /&gt;
    }&lt;br /&gt;
    // assign stack of elements of type T2&lt;br /&gt;
    template &amp;lt;typename T2&amp;gt;&lt;br /&gt;
    Stack&amp;lt;T&amp;gt;&amp;amp; operator= (Stack&amp;lt;T2&amp;gt; const&amp;amp;);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
template &amp;lt;typename T&amp;gt;&lt;br /&gt;
 template &amp;lt;typename T2&amp;gt;&lt;br /&gt;
Stack&amp;lt;T&amp;gt;&amp;amp; Stack&amp;lt;T&amp;gt;::operator= (Stack&amp;lt;T2&amp;gt; const&amp;amp; op2)&lt;br /&gt;
{&lt;br /&gt;
    if ((void*)this == (void*)&amp;amp;op2) {    // assignment to itself?&lt;br /&gt;
        return *this;&lt;br /&gt;
    }&lt;br /&gt;
    Stack&amp;lt;T2&amp;gt; tmp(op2);              // create a copy of the assigned stack&lt;br /&gt;
    elems.clear();                   // remove existing elements&lt;br /&gt;
    while (!tmp.empty()) {           // copy all elements&lt;br /&gt;
        elems.push_front(tmp.top());&lt;br /&gt;
        tmp.pop();&lt;br /&gt;
    }&lt;br /&gt;
    return *this;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
template &amp;lt;typename T&amp;gt;&lt;br /&gt;
void Stack&amp;lt;T&amp;gt;::push (T const&amp;amp; elem)&lt;br /&gt;
{&lt;br /&gt;
    elems.push_back(elem);    // append copy of passed elem&lt;br /&gt;
}&lt;br /&gt;
template&amp;lt;typename T&amp;gt;&lt;br /&gt;
void Stack&amp;lt;T&amp;gt;::pop ()&lt;br /&gt;
{&lt;br /&gt;
    if (elems.empty()) {&lt;br /&gt;
        throw std::out_of_range(&amp;quot;Stack&amp;lt;&amp;gt;::pop(): empty stack&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    elems.pop_back();         // remove last element&lt;br /&gt;
}&lt;br /&gt;
template &amp;lt;typename T&amp;gt;&lt;br /&gt;
T Stack&amp;lt;T&amp;gt;::top () const&lt;br /&gt;
{&lt;br /&gt;
    if (elems.empty()) {&lt;br /&gt;
        throw std::out_of_range(&amp;quot;Stack&amp;lt;&amp;gt;::top(): empty stack&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    return elems.back();      // return copy of last element&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
    try {&lt;br /&gt;
        Stack&amp;lt;int&amp;gt;   intStack;       // stack of ints&lt;br /&gt;
        Stack&amp;lt;float&amp;gt; floatStack;     // stack of floats&lt;br /&gt;
        // manipulate int stack&lt;br /&gt;
        intStack.push(42);&lt;br /&gt;
        intStack.push(7);&lt;br /&gt;
        // manipulate float stack&lt;br /&gt;
        floatStack.push(7.7);&lt;br /&gt;
        // assign stacks of different type&lt;br /&gt;
        floatStack = intStack;&lt;br /&gt;
        // print float stack&lt;br /&gt;
        std::cout &amp;lt;&amp;lt; floatStack.top() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
        floatStack.pop();&lt;br /&gt;
        std::cout &amp;lt;&amp;lt; floatStack.top() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
        floatStack.pop();&lt;br /&gt;
        std::cout &amp;lt;&amp;lt; floatStack.top() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
        floatStack.pop();&lt;br /&gt;
    }&lt;br /&gt;
    catch (std::exception const&amp;amp; ex) {&lt;br /&gt;
        std::cerr &amp;lt;&amp;lt; &amp;quot;Exception: &amp;quot; &amp;lt;&amp;lt; ex.what() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
        return EXIT_FAILURE;  // exit program with ERROR status&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;7&lt;br /&gt;
42&lt;br /&gt;
Exception: Stack&amp;lt;&amp;gt;::top(): empty stack&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==template string stack==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;/* The following code example is taken from the book&lt;br /&gt;
 * &amp;quot;C++ Templates - The Complete Guide&amp;quot;&lt;br /&gt;
 * by David Vandevoorde and Nicolai M. Josuttis, Addison-Wesley, 2002&lt;br /&gt;
 *&lt;br /&gt;
 * (C) Copyright David Vandevoorde and Nicolai M. Josuttis 2002.&lt;br /&gt;
 * Permission to copy, use, modify, sell and distribute this software&lt;br /&gt;
 * is granted provided this copyright notice appears in all copies.&lt;br /&gt;
 * This software is provided &amp;quot;as is&amp;quot; without express or implied&lt;br /&gt;
 * warranty, and with no claim as to its suitability for any purpose.&lt;br /&gt;
 */&lt;br /&gt;
#include &amp;lt;deque&amp;gt;&lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
#include &amp;lt;stdexcept&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;cstdlib&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
template &amp;lt;typename T&amp;gt;&lt;br /&gt;
class Stack {&lt;br /&gt;
  private:&lt;br /&gt;
    std::vector&amp;lt;T&amp;gt; elems;     // elements&lt;br /&gt;
  public:&lt;br /&gt;
    void push(T const&amp;amp;);      // push element&lt;br /&gt;
    void pop();               // pop element&lt;br /&gt;
    T top() const;            // return top element&lt;br /&gt;
    bool empty() const {      // return whether the stack is empty&lt;br /&gt;
        return elems.empty();&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
template &amp;lt;typename T&amp;gt;&lt;br /&gt;
void Stack&amp;lt;T&amp;gt;::push (T const&amp;amp; elem)&lt;br /&gt;
{&lt;br /&gt;
    elems.push_back(elem);    // append copy of passed elem&lt;br /&gt;
}&lt;br /&gt;
template&amp;lt;typename T&amp;gt;&lt;br /&gt;
void Stack&amp;lt;T&amp;gt;::pop ()&lt;br /&gt;
{&lt;br /&gt;
    if (elems.empty()) {&lt;br /&gt;
        throw std::out_of_range(&amp;quot;Stack&amp;lt;&amp;gt;::pop(): empty stack&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    elems.pop_back();         // remove last element&lt;br /&gt;
}&lt;br /&gt;
template &amp;lt;typename T&amp;gt;&lt;br /&gt;
T Stack&amp;lt;T&amp;gt;::top () const&lt;br /&gt;
{&lt;br /&gt;
    if (elems.empty()) {&lt;br /&gt;
        throw std::out_of_range(&amp;quot;Stack&amp;lt;&amp;gt;::top(): empty stack&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    return elems.back();      // return copy of last element&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
template&amp;lt;&amp;gt;&lt;br /&gt;
class Stack&amp;lt;std::string&amp;gt; {&lt;br /&gt;
  private:&lt;br /&gt;
    std::deque&amp;lt;std::string&amp;gt; elems;  // elements&lt;br /&gt;
  public:&lt;br /&gt;
    void push(std::string const&amp;amp;);  // push element&lt;br /&gt;
    void pop();                     // pop element&lt;br /&gt;
    std::string top() const;        // return top element&lt;br /&gt;
    bool empty() const {            // return whether the stack is empty&lt;br /&gt;
        return elems.empty();&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
void Stack&amp;lt;std::string&amp;gt;::push (std::string const&amp;amp; elem)&lt;br /&gt;
{&lt;br /&gt;
    elems.push_back(elem);    // append copy of passed elem&lt;br /&gt;
}&lt;br /&gt;
void Stack&amp;lt;std::string&amp;gt;::pop ()&lt;br /&gt;
{&lt;br /&gt;
    if (elems.empty()) {&lt;br /&gt;
        throw std::out_of_range&lt;br /&gt;
                (&amp;quot;Stack&amp;lt;std::string&amp;gt;::pop(): empty stack&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    elems.pop_back();         // remove last element&lt;br /&gt;
}&lt;br /&gt;
std::string Stack&amp;lt;std::string&amp;gt;::top () const&lt;br /&gt;
{&lt;br /&gt;
    if (elems.empty()) {&lt;br /&gt;
        throw std::out_of_range&lt;br /&gt;
                (&amp;quot;Stack&amp;lt;std::string&amp;gt;::top(): empty stack&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    return elems.back();      // return copy of last element&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
    try {&lt;br /&gt;
        Stack&amp;lt;int&amp;gt;         intStack;       // stack of ints&lt;br /&gt;
        Stack&amp;lt;std::string&amp;gt; stringStack;    // stack of strings&lt;br /&gt;
        // manipulate int stack&lt;br /&gt;
        intStack.push(7);&lt;br /&gt;
        std::cout &amp;lt;&amp;lt; intStack.top() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
        intStack.pop();&lt;br /&gt;
        // manipulate string stack&lt;br /&gt;
        stringStack.push(&amp;quot;hello&amp;quot;);&lt;br /&gt;
        std::cout &amp;lt;&amp;lt; stringStack.top() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
        stringStack.pop();&lt;br /&gt;
        stringStack.pop();&lt;br /&gt;
    }&lt;br /&gt;
    catch (std::exception const&amp;amp; ex) {&lt;br /&gt;
        std::cerr &amp;lt;&amp;lt; &amp;quot;Exception: &amp;quot; &amp;lt;&amp;lt; ex.what() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
        return EXIT_FAILURE;  // exit program with ERROR status&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;7&lt;br /&gt;
hello&lt;br /&gt;
Exception: Stack&amp;lt;std::string&amp;gt;::pop(): empty stack&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Use generic stack to store another container==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;/* The following code example is taken from the book&lt;br /&gt;
 * &amp;quot;C++ Templates - The Complete Guide&amp;quot;&lt;br /&gt;
 * by David Vandevoorde and Nicolai M. Josuttis, Addison-Wesley, 2002&lt;br /&gt;
 *&lt;br /&gt;
 * (C) Copyright David Vandevoorde and Nicolai M. Josuttis 2002.&lt;br /&gt;
 * Permission to copy, use, modify, sell and distribute this software&lt;br /&gt;
 * is granted provided this copyright notice appears in all copies.&lt;br /&gt;
 * This software is provided &amp;quot;as is&amp;quot; without express or implied&lt;br /&gt;
 * warranty, and with no claim as to its suitability for any purpose.&lt;br /&gt;
 */&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
#include &amp;lt;cstdlib&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;deque&amp;gt;&lt;br /&gt;
#include &amp;lt;stdexcept&amp;gt;&lt;br /&gt;
template &amp;lt;typename T, typename CONT = std::deque&amp;lt;T&amp;gt; &amp;gt;&lt;br /&gt;
class Stack {&lt;br /&gt;
  private:&lt;br /&gt;
    CONT elems;            // elements&lt;br /&gt;
  public:&lt;br /&gt;
    void push(T const&amp;amp;);   // push element&lt;br /&gt;
    void pop();            // pop element&lt;br /&gt;
    T top() const;         // return top element&lt;br /&gt;
    bool empty() const {   // return whether the stack is empty&lt;br /&gt;
        return elems.empty();&lt;br /&gt;
    }&lt;br /&gt;
    // assign stack of elements of type T2&lt;br /&gt;
    template &amp;lt;typename T2, typename CONT2&amp;gt;&lt;br /&gt;
    Stack&amp;lt;T,CONT&amp;gt;&amp;amp; operator= (Stack&amp;lt;T2,CONT2&amp;gt; const&amp;amp;);&lt;br /&gt;
};&lt;br /&gt;
template &amp;lt;typename T, typename CONT&amp;gt;&lt;br /&gt;
 template &amp;lt;typename T2, typename CONT2&amp;gt;&lt;br /&gt;
Stack&amp;lt;T,CONT&amp;gt;&amp;amp;&lt;br /&gt;
Stack&amp;lt;T,CONT&amp;gt;::operator= (Stack&amp;lt;T2,CONT2&amp;gt; const&amp;amp; op2)&lt;br /&gt;
{&lt;br /&gt;
    if ((void*)this == (void*)&amp;amp;op2) {    // assignment to itself?&lt;br /&gt;
        return *this;&lt;br /&gt;
    }&lt;br /&gt;
    Stack&amp;lt;T2,CONT2&amp;gt; tmp(op2);        // create a copy of the assigned stack&lt;br /&gt;
    elems.clear();                   // remove existing elements&lt;br /&gt;
    while (!tmp.empty()) {           // copy all elements&lt;br /&gt;
        elems.push_front(tmp.top());&lt;br /&gt;
        tmp.pop();&lt;br /&gt;
    }&lt;br /&gt;
    return *this;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
template &amp;lt;typename T, typename CONT&amp;gt;&lt;br /&gt;
void Stack&amp;lt;T,CONT&amp;gt;::push (T const&amp;amp; elem)&lt;br /&gt;
{&lt;br /&gt;
    elems.push_back(elem);    // append copy of passed elem&lt;br /&gt;
}&lt;br /&gt;
template&amp;lt;typename T, typename CONT&amp;gt;&lt;br /&gt;
void Stack&amp;lt;T,CONT&amp;gt;::pop ()&lt;br /&gt;
{&lt;br /&gt;
    if (elems.empty()) {&lt;br /&gt;
        throw std::out_of_range(&amp;quot;Stack&amp;lt;&amp;gt;::pop(): empty stack&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    elems.pop_back();         // remove last element&lt;br /&gt;
}&lt;br /&gt;
template &amp;lt;typename T, typename CONT&amp;gt;&lt;br /&gt;
T Stack&amp;lt;T,CONT&amp;gt;::top () const&lt;br /&gt;
{&lt;br /&gt;
    if (elems.empty()) {&lt;br /&gt;
        throw std::out_of_range(&amp;quot;Stack&amp;lt;&amp;gt;::top(): empty stack&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    return elems.back();      // return copy of last element&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
    try {&lt;br /&gt;
        Stack&amp;lt;int&amp;gt;   intStack;       // stack of ints&lt;br /&gt;
        Stack&amp;lt;float&amp;gt; floatStack;     // stack of floats&lt;br /&gt;
        // manipulate int stack&lt;br /&gt;
        intStack.push(42);&lt;br /&gt;
        intStack.push(7);&lt;br /&gt;
        // manipulate float stack&lt;br /&gt;
        floatStack.push(7.7);&lt;br /&gt;
        // assign stacks of different type&lt;br /&gt;
        floatStack = intStack;&lt;br /&gt;
        // print float stack&lt;br /&gt;
        std::cout &amp;lt;&amp;lt; floatStack.top() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
        floatStack.pop();&lt;br /&gt;
        std::cout &amp;lt;&amp;lt; floatStack.top() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
        floatStack.pop();&lt;br /&gt;
        std::cout &amp;lt;&amp;lt; floatStack.top() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
        floatStack.pop();&lt;br /&gt;
    }&lt;br /&gt;
    catch (std::exception const&amp;amp; ex) {&lt;br /&gt;
        std::cerr &amp;lt;&amp;lt; &amp;quot;Exception: &amp;quot; &amp;lt;&amp;lt; ex.what() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
    }&lt;br /&gt;
    // stack for ints using a vector as an internal container&lt;br /&gt;
    Stack&amp;lt;int,std::vector&amp;lt;int&amp;gt; &amp;gt; vStack;&lt;br /&gt;
    //...&lt;br /&gt;
    vStack.push(42);&lt;br /&gt;
    vStack.push(7);&lt;br /&gt;
    std::cout &amp;lt;&amp;lt; vStack.top() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
    vStack.pop();&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;7&lt;br /&gt;
42&lt;br /&gt;
Exception: Stack&amp;lt;&amp;gt;::top(): empty stack&lt;br /&gt;
7&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>