本系列博客是我假期在B站花了一天时间看了一个快速入门C++的视频,大概是4个小时,不过来回截图,整理笔记也花了一大整天;
15. 类模版
调用vector类模板:
#include<iostream>
#include<vector>
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'<<endl;
}
使用自己定义的类来模拟 类模板vector
#include<iostream>
#include<string>
using namespace std;
template<typename T>
//struct student
class student{
string name;
double score;
public:
student(string n="no", double s=0){
name = n; score = s;
}
friend ostream & opeartor<<(ostream &o, String s);
}
ostream & opeartor<<(ostream &o, String s){
for (int i=0; i < str2.size(); i++)
cout << s[i];
return o;
}
class Vector{
T * data;
int capacity;
int n;
public:
//自定义构造函数
Vector(int cap){
data = new int[cap];
if(data==0){
cap=0; n=0;
return;
}
capacity = cap;
n=0;
}
void push_back(T e){
if(n==capacity){
int *p=new T[2*capacity];
if(p){
for(int i=0; i<n;i++)
p[i] = data[i];
delate[] data;
data = p;
capacity = 2*capacity;
}
else{
return;
}
}
data[n] = e;
n++;
}
T operator[](int i) const{
if(i<0 || i>=n) throw "下表非法!\n"
return data[i];
}
T &operator[](int i) {
if(i<0 || i>=n) throw "下表非法!\n"
return data[i];
}
int size(){
return 0;
}
}
int main(){
Vector<student> v;
v.push_back(student("Li",45,7));
v.push_back(student("Zhang",42,8));
v.push_back(student("Wang",40,4));
for(int i=0;i<v.size(); i++){
cout<<v[i]<<'\t'; }
#if 0
Vector<int> v;
v.push_back(3);
v.push_back(4);
v.push_back(5);
/*
Vector<string> v;
v.push_back("Hello ");
v.push_back("world");
v.push_back("!");
*/
for(int i=0;i<v.size(); i++){
cout<<v[i]<<'\t'; }
#endif
}