C++程序设计_part 3 数据结构 chap15 模板

来源:互联网 发布:python 英文分词 编辑:程序博客网 时间:2024/06/10 19:54
#include <iostream>#include <string>using namespace std;/*C++允许定义具有通用类型的函数模板 *该程序定义了一个具有通用类型的两个值中秋较大者的模板函数 */template <typename T>T maxValue(T value1, T value2){    if(value1 > value2)        return value1;    else        return value2;}int main(){    cout<<"Maximum between 1 and 3 is "<<maxValue(1,3)<<endl;    cout<<"Maximum between 1.5 and 0.3 is "<<maxValue(1.5,0.3)<<endl;    cout<<"Maximum between 'A' and 'N' is "<<maxValue('A','N')<<endl;    cout<<"Maximum between \"ABC\" and \"ABD\" is "<<maxValue("ABC","ABD")<<endl;    return 0;}

数据结果:


#include <iostream>#include <string>using namespace std;template <typename T>void sort(T list[], int arraySize){    //Find the maximum in the list[0...i]    T currentMax = list[0];    for(int i = arraySize - 1; i >= 1; i-- ){        for(int j = 1; j <= i; j++){            if (currentMax < list[j]){                currentMax = list[j];                list[j] = list[i];                list[i] = currentMax;            }        }    }}template <typename T>void printArray(T list[], int arraySize){    for(int i = 0; i < arraySize; i++)        cout << list[i] <<" ";    cout << endl;}int main(){    int list1[] = {3, 5, 1, 0, 2, 8, 7};    sort(list1, 7);    printArray(list1, 7);    double list2[] = {3.5, 0.5, 1.4, 0.4, 2.5, 1.8, 4.7};    sort(list2, 7);    printArray(list2, 7);    string list3[] = {"Atlanta", "Denver", "Chicago", "Dallas"};    sort(list3, 4);    printArray(list3, 4);    return 0;}


下面通过是一个栈实现用例,展现模板的用处

#ifndef STACK_H#define STACK_Htemplate <typename T>class Stack{public:    Stack();    bool empty();    T peek();    void push(T value);    T pop();    int getSize();private:    T elements[100];    int size;};template <typename T>Stack<T>::Stack(){    size = 0;}template <typename T>bool Stack<T>::empty(){    return (size == 0);}template <typename T>T Stack<T>::peek(){    return elements[size - 1];}template <typename T>void Stack<T>::push(T value){    elements[size++] = value;}template <typename T>T Stack<T>::pop(){    return elements[--size];}template <typename T>int Stack<T>::getSize(){    return size;}#endif // STACK_H
#include <iostream>#include <string>#include "GenericStack.h"using namespace std;template<typename T>void printStack(Stack<T> &stack){ //定义了一个打印Stack的函数    while(!stack.empty())        cout << stack.pop() <<" ";    cout << endl;}int main(){    //Create a stack of int values    Stack<int> intStack;    for(int i = 0; i < 10; i++)        intStack.push(i);    printStack(intStack);    //Create a stack of strings    Stack<string> stringStack;    stringStack.push("Chicago");    stringStack.push("Los Angeles");    stringStack.push("London");    printStack(stringStack);    return 0;}



0 0