Linux C/C++ 模板:类模板成员特化
来源:互联网 发布:javascript 控制台输出 编辑:程序博客网 时间:2024/05/18 13:04
一、代码
不需要完全特化整个类,只特化相关函数即可。
#include <iostream>#include <cstring>#include <vector>#include <algorithm>using namespace std;//主模板template <typename T>class Heap{public: void push(const T& val); T pop(); bool empty() const { return m_vec.empty(); }private: vector<T> m_vec;};template <typename T>void Heap<T>::push(const T& val){ m_vec.push_back(val); push_heap(m_vec.begin(), m_vec.end());}template <typename T>T Heap<T>::pop(){ pop_heap(m_vec.begin(), m_vec.end()); T tmp = m_vec.back(); m_vec.pop_back(); return tmp;}//bool strLess(const char* a, const char* b){ return strcmp(a, b) < 0;}//类模板成员特化template <>void Heap<const char*>::push(const char* const & val) //参数格式必须与原型一致{ m_vec.push_back(val); push_heap(m_vec.begin(), m_vec.end(), strLess);}//类模板成员特化template <>const char* Heap<const char*>::pop(){ pop_heap(m_vec.begin(), m_vec.end()); const char* tmp = m_vec.back(); m_vec.pop_back(); return tmp;}//int main(int argc, char*argv[]){ // Heap<int> h1; h1.push(1); h1.push(3); h1.push(2); cout<<"is empty: "<<h1.empty()<<endl; cout<<h1.pop()<<endl; cout<<h1.pop()<<endl; cout<<h1.pop()<<endl; cout<<"is empty: "<<h1.empty()<<endl<<endl; // Heap<const char*> h2; h2.push("aa"); h2.push("cc"); h2.push("bb"); cout<<"is empty: "<<h2.empty()<<endl; cout<<h2.pop()<<endl; cout<<h2.pop()<<endl; cout<<h2.pop()<<endl; cout<<"is empty: "<<h2.empty()<<endl; return 0;}
二、输出结果
0 0
- Linux C/C++ 模板:类模板成员特化
- 【C++】模板类、特化以及偏特化!!!
- C++-必知必会_类模板成员特化(条款48)
- Linux C/C++ 模板:主模板、完全特化、局部特化
- 特化类模板成员
- 特化类模板成员
- C++:函数模板、类模板及其特化
- 【c++】模板的特化
- Linux C/C++ 模板:主模板、完全特化
- C++—模板特化和偏特化
- Linux C/C++ 模板:成员模板
- Linux C/C++ 模板:模板术语 模板参数/模板实参/模板名字/模板ID/特化/实例化
- Linux C/C++ 模板:针对类型信息的特化
- 模板类成员函数特化写法
- C++-必知必会_类模板显式特化(条款46)
- C++模板的特化
- C++模板的特化
- C++——模板特化和偏特化
- 人间万事消磨尽,只有清香似旧时
- 持续更新--Phonegap基础学习总结
- 《剑指offer》树中两个结点的最低公共祖先
- Linux练习题2
- 统计 水NOJ 1599
- Linux C/C++ 模板:类模板成员特化
- iOS 获取网络制式
- 结果集中获取记录的4种方法
- 如何简单快速调试高大上的谷歌浏览器
- Odoo(OpenERP)与SAP的对比
- 渗透测试之DNS暴力破解fierce教程
- iOS 判断名称是否合法
- Linux C/C++ 模板:成员模板
- ZOJ 3659 Conquer a New Region【并查集】