分享一个手写vector
  • 板块灌水区
  • 楼主ljx20130810
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/11/11 19:48
  • 上次更新2023/11/11 21:41:46
查看原帖
分享一个手写vector
1054319
ljx20130810楼主2023/11/11 19:48
#include<iostream>
using namespace std;
template<typename T> 
struct vector{
	T *data;
	int length, capsize;
	vector(){init(0);}
	vector(int n){init(n);}
	vector(int n, int val){init(n, val);}
	T &operator[](int i){return data[i];}
	void init(int n, T val = 0){
		data = (T*)malloc(sizeof(T) * n);
		length = capsize = n;
		for(int i = 0; i < length; i++)data[i] = val;
	}
	void increase(){
		T *tmp = data;
		data = (T*)malloc(sizeof(T) * 2 * capsize);
		for(int i = 0; i < length; i++)data[i] = tmp[i];
		capsize *= 2;
	}
	void push_back(int val){
		if(length == capsize)increase();
		data[length++] = val;
	}
	void pop_back(){data[--length] = 0;}
	int size(){return length;}
	int capacity(){return capsize;}
	bool empty(){return length == 0;}
	T at(int id){return data[id];}
	void clear(){length = 0;}
};
2023/11/11 19:48
加载中...