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