惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
Vercel News
Vercel News
Google DeepMind News
Google DeepMind News
罗磊的独立博客
WordPress大学
WordPress大学
The Cloudflare Blog
GbyAI
GbyAI
The Register - Security
The Register - Security
L
LangChain Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Microsoft Security Blog
Microsoft Security Blog
MyScale Blog
MyScale Blog
A
About on SuperTechFans
U
Unit 42
T
The Blog of Author Tim Ferriss
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
Visual Studio Blog
云风的 BLOG
云风的 BLOG
Stack Overflow Blog
Stack Overflow Blog
博客园 - 三生石上(FineUI控件)
博客园 - 司徒正美
Blog — PlanetScale
Blog — PlanetScale
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
M
MIT News - Artificial intelligence
C
CERT Recently Published Vulnerability Notes
T
The Exploit Database - CXSecurity.com
T
Tor Project blog
A
Arctic Wolf
H
Hacker News: Front Page
NISL@THU
NISL@THU
F
Full Disclosure
雷峰网
雷峰网
L
LINUX DO - 热门话题
Recent Announcements
Recent Announcements
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Apple Machine Learning Research
Apple Machine Learning Research
Google Online Security Blog
Google Online Security Blog
I
InfoQ
Webroot Blog
Webroot Blog
S
Security Affairs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
爱范儿
爱范儿
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
N
News | PayPal Newsroom
Forbes - Security
Forbes - Security
博客园 - Franky
V
Vulnerabilities – Threatpost
博客园 - 【当耐特】
Latest news
Latest news

博客园 - Rawu

QT 使用(1) 到广外路线图 假期电话值班问题 test from blogex Event Sample -- from Professional C# DB2数据库中提高INSERT性能详解 [zt] Uwyn C++ Coding Standard 成员模板 template base -- const coding style Symbian OS C++ for Mobile Phones Volume2 -- hand note [zt]DB2编程小结 写个帖子记录一些小问题。 High-performance SQL Using DB2 routines to ease migration [ICNEWCASTLE]Bad day at the office [ICNEWCASTLE]I'll celebrate! the night before last night 's dream find it for a long time .. PB dddw filter Problem's Solution
class template
Rawu · 2006-06-08 · via 博客园 - Rawu

//basic/stack3.hpp

#include 
<vector>
#include 
<stdexcept>

template
<typename T ,typename CONT = std::vector<T> > // type a space between twp '>'

class Stack 
{
    
private:
        CONT elems;            
//contain the elems ,default is vector
        static int static_ver; // this static variable will instantiation in each different types of template is called 
    
    
public:
        
void push(T const&) ;
        
void pop(void);
        T top(
voidconst ;         //why not return T &
        bool empty(voidconst
        
{
            
return elems.empty();
        }

        Stack (Stack
<T,CONT> const&);  //use Stack<> when you need to specify the class type
                                       
//use only Stack when you only want to specify the class name                            
        Stack<T,CONT>& operator= (Stack<T,CONT> const&) ;
        
}
;

template
<typename T ,typename CONT>
void Stack<T,CONT>::push ( T const& elem ) //use Stack<>::
{
    elems.push_back(elem);
}


template
<typename T ,typename CONT>
void Stack<T,CONT>::pop(void)            //why not specify throw 
{
    
if(elems.empty())
    
{
        
throw std::out_of_range("Stack<>::pop(): empty stack");
    }

    elems.pop_back();
}


template
<typename T ,typename CONT>
T Stack
<T,CONT>::top(voidconst
{
    
if (elems.empty())
    
{
        
throw std::out_of_range("Stack<>::top(): empty stack");
    }

    
return elems.back();
}

//basics/stack3test.cpp


#include 
<iostream>
#include 
<deque>
#include 
<cstdlib>
#include 
"stack3.hpp"

int main(void)
{
    
try
    
{
      Stack
<int> intStack;
      intStack.push(
7)  ;  // only instantiation the function when it's called 
                           
// so you can use the 'type' that cannot perform all method in this template ,but only can perform the method you will use in your application.
      std::cout<< intStack.top() <<std::endl;
      intStack.pop();
      intStack.pop();
      std::cin.
get();
      
    }

    
catch (std::exception const& ex)
    
{
          std::cerr
<<"Exception: "<<ex.what()<<std::endl;
          std::cin.
get();
          
return EXIT_FAILURE;
    }

}