C++程序设计模板,向量和栈

本文探讨了C++程序设计中的模板基础,包括一个通用排序函数的实现,深入解析了模板类。同时,文章重点介绍了C++的向量类,并阐述了如何使用vector替代传统数组进行更高效的操作。

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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值