从C到C++快速入门(13. 类模板)

vector

#include<iostream>
#include<vector>  // C++的一个向量,也就是类模板
using namespace std;
int main() {
	 vector<int> v;  
	 v.push_back(3);
	 v.push_back(4);
	 v.push_back(5);
 	for (int i = 0; i < v.size(); i++)
		  cout << v[i] << '\t';
	 cout << endl;
	 v.push_back(6);
	 v.push_back(7);
 	for (int i = 0; i < v.size(); i++)
 		 cout << v[i] << '\t';
 	cout << endl;
}


模拟vector< int >的类 Vector

/*
 模拟vector<int>的类Vector
*/
#include<iostream>
#include<vector>  // C++的一个向量,也就是类模板
using namespace std;
class Vector {
 	int *data;    //动态数组
 	int capacity;   // 容量
 	int n;    // 当前元素个数
public:
 	//定义非默认构造函数    cap: 初始空间
 	Vector(int cap = 3 ) {   //参数给默认值,即同时定义了默认构造函数
 		 data = new int[cap];
 		 if (data == 0) {        //分配失败
 			  cap = 0; n = 0;
  			  return;
 		 }
  		capacity = cap;
 		 n = 0;
 	}
	void push_back(int e) {
 		 if (n == capacity) {  //空间已经满
   			cout << "增加容量!\n";
 		        int *p = new 					int[2 * capacity]; //增大两倍容量
  			if (p) {   //分配成功
  				  for (int i = 0; i < n; i++)
   					  		p[i] = data[i];  //旧空间数据放到新空间位置
 				 delete[] data;   //释放旧空间
  				 data = p;    //让data指针变量等于新的空间
  			         capacity = 2 * capacity;   //新的空间容量
  		       }
		       else {     //如果分配失败
  			         return;
  		       }
	         }
 		 data[n] = e;
 		 n++;
 	   }
	int operator[](int i) const {
 		 if (i < 0 || i >= n) throw "下标非法!";
 		 return data[i];
  
	 }
 	int size() {
 		 return n;
 	}
 }int main() {
	 Vector v;  
	 v.push_back(3);
	 v.push_back(4);
	 v.push_back(5);
	 for (int i = 0; i < v.size(); i++)
		  cout << v[i] << '\t';
	 cout << endl;
	v.push_back(6);
	 v.push_back(7);
 	for (int i = 0; i < v.size(); i++)
 		 cout << v[i] << '\t';
 	cout << endl;
 }

  

上面的程序只能存放int型的数据,那我们怎么存放double或字符串等等其他类型的数据呢?

可以把它变成一个类模板: template

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值