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

推荐订阅源

Latest news
Latest news
G
GRAHAM CLULEY
P
Privacy International News Feed
Know Your Adversary
Know Your Adversary
N
Netflix TechBlog - Medium
C
CERT Recently Published Vulnerability Notes
O
OpenAI News
T
Tenable Blog
Attack and Defense Labs
Attack and Defense Labs
S
Schneier on Security
The GitHub Blog
The GitHub Blog
M
MIT News - Artificial intelligence
PCI Perspectives
PCI Perspectives
博客园 - 司徒正美
Microsoft Azure Blog
Microsoft Azure Blog
MyScale Blog
MyScale Blog
Martin Fowler
Martin Fowler
S
Secure Thoughts
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
T
The Exploit Database - CXSecurity.com
U
Unit 42
The Register - Security
The Register - Security
Google DeepMind News
Google DeepMind News
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
WordPress大学
WordPress大学
B
Blog
Project Zero
Project Zero
NISL@THU
NISL@THU
Cloudbric
Cloudbric
TaoSecurity Blog
TaoSecurity Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
MongoDB | Blog
MongoDB | Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Security Archives - TechRepublic
Security Archives - TechRepublic
I
Intezer
L
Lohrmann on Cybersecurity
Webroot Blog
Webroot Blog
P
Proofpoint News Feed
C
Check Point Blog
Schneier on Security
Schneier on Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Hugging Face - Blog
Hugging Face - Blog
I
InfoQ
Recent Commits to openclaw:main
Recent Commits to openclaw:main
T
Threatpost
Apple Machine Learning Research
Apple Machine Learning Research
Spread Privacy
Spread Privacy
The Hacker News
The Hacker 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;
    }

}