C++程序设计模板,向量和栈
1. 模板基础
模板功能提供了在函数和类中将类型作为参数的能力,可以设计具有通用类型的函数和类,而编译
器可在编译时将通用类型确定为一种特定类型
//一个求最大值的通用模板
GenericType maxValue(GenericType value1,GenericType value2){
if(value1 > value2){
return value1
}else return value2;
}
# include <iostream>
# include <string>
using namespace std;
template<typename T>//一定要有typename或class,也被称为模板前缀,推荐用typename
T maxValue(T value1,T value2){
if(value1 > value2){
return value1
}else return value2;
}
//字符串比较,比较的是指向字符串的位置
3. 一个通用的排序函数
template<typename T>
void sort(T list[] , int size){
for(int i=0; i< size; i++){
T currentMin = list[i];
int currentMinIndex = i;
for(int j=i+1 ; j<size ; j++){
if(list[j] < currentMin){
currentMin = list[j];
currentMinIndex = j;
}
}
if(currentMinIndex != i){
list[currentMinIndex] = list[i];
list[i] = currentMin;
}
}
}
//打印通用函数
template<typename T>
void printArr(const T list[], int size){
for(int i =0 ; i< size ;i++){
cout << list[i] << " ,";
}
cous << endl ;
}
4. 模板类
可以实现具有通用类型的类
对于模板类,定义和实现放在一个文件里更为安全
#ifndef STACK_h
#define STACK_h
template<typename T >//T= int>//默认类型为int,默认类型只用于模板类>
class Stack //<typename T,int capacity>赋予数组容量
{
public:
Stack();
bool empty() const;
T peek() const;
void push(T value);
T pop();
int getSize() const;
private:
T elemens[100];
int size;
}
template<typename T>
Stack<>::Stack(){
size = 0;
}
template<typename T>
bool Stack<>::empty() const{
return size == 0;
}
template<typename T>
T Stack<>::peek() const{
return elements[size-1];
}
template<typename T>
Stack<>::push(T value){
elements[size++] = value;
}
template<typename T>
T Stack<>::pop(){
return elements[--size];
}
template<typename T>
int Stack<>::getSize() const{
return size;
}
#endif
5. c++向量类
提供了通用类vector,可用于存储对象列表
vector<elementType> vectorName;
其中包含较多用法
6. 用vector代替数组
向量可以用来替换数组,且比数组更灵活,但数组更为高效
二维数组的向量表示
vector<vector<int> > vectorName(size);
本文探讨了C++程序设计中的模板基础,包括一个通用排序函数的实现,深入解析了模板类。同时,文章重点介绍了C++的向量类,并阐述了如何使用vector替代传统数组进行更高效的操作。
1711

被折叠的 条评论
为什么被折叠?



