一个简单的seqlist的模板实现
2017-04-23 21:52
330 查看
首先是 seqlist.h
然后是seqlist.cpp
一个测试文件
还未完善。。。
template <typename T> class seqlist { public: seqlist(int capacity); ~seqlist(); int get_length(); //获取长度 int get_capacity();//获取容量 bool insert(int pos, T& t); //在pos位置插入一个元素 bool del(int pos, T& t); //在pos位置删除一个元素 T& at(int pos); //在pos位置获取一个元素 private: int capacity; //容量 int length; //长度 T *p_array; };
然后是seqlist.cpp
#include "seqlist.h" template <typename T> seqlist<T>::seqlist(int capacity) { p_array = new T[capacity]; this->capacity = capacity; this->length = 0; } template <typename T> seqlist<T>::~seqlist() { delete[] p_array; p_array = NULL; capacity = 0; length = 0; } template <typename T> int seqlist<T>::get_length() //获取长度 { return this->length; } template <typename T> int seqlist<T>::get_capacity()//获取容量 { return this->capacity; } template <typename T> bool seqlist<T>::insert(int pos, T& t) //在pos位置插入一个元素 { int i; for (i = length; i > pos; i--) { p_array[i] = p_array[i - 1]; } p_array[i] = t; //对象复制!! this->length++; return true; } template <typename T> bool seqlist<T>::del(int pos, T& t) //在pos位置删除一个元素 { if (pos <0 || pos >= get_length()) return false; t = p_array[pos]; //对象复制!! for (int i = get_length()-1; i > pos; i--) { p_array[i-1] = p_array[i]; } this->length--; return true; } template <typename T> T& seqlist<T>::at(int pos) //在pos位置获取一个元素 { return p_array[pos]; }
一个测试文件
#include<iostream> #include<list> using namespace std; #include "seqlist.cpp" struct Teacher { public: int age; char name[32]; Teacher(){} Teacher(int a, char* _name) { age = a; strcpy_s(name, _name); } }; int main() { seqlist<Teacher> tlist(10); Teacher t1(10,"张三"), t2(20, "李四"), t3(30,"王五"), t4(40, "孙六"); tlist.insert(0, t1); tlist.insert(0, t2); tlist.insert(0, t3); tlist.insert(0, t4); Teacher tmp; cout << "tlist.at()" << endl; for (int i = 0; i < tlist.get_length(); i++) { tmp = tlist.at(i); cout << tmp.name << " :" << tmp.age << endl; } cout << "tlist.del()" << endl; tlist.del(2,tmp); cout << tmp.name << " :" << tmp.age << endl; tlist.del(0,tmp); cout << tmp.name << " :" << tmp.age << endl; cout << "tlist.capacity():" <<tlist.get_capacity()<< endl; system("pause"); return 0; }
还未完善。。。
相关文章推荐
- 转载的标准文档:C语言实现一个简单的单向链表list
- 【Python】简单例题tuple和list的转换;实现删除一个list里重复的元素;对list a进行排序,并且从最后一个开始删除重复元素
- 原生JavaScript实现一个简单的todo-list
- 用vue的双向绑定简单实现一个todo-list的示例代码
- C++ 使用模板实现一个List的实例
- 一个简单的模板系统的实现(动态载入DLL)
- 200行python代码实现一个类似django的简单模板引擎
- 一个简单地list侧滑菜单,自己实现不是梦
- 一个简单的List实现
- 一个利用CAN实现车辆控制的简单模板
- 将任意类型映射到一个唯一整数(C++模板实现TypeList)
- C++ 使用模板实现的一个List
- 一个简单的Java模板工具类(二)—简单表达式解析实现
- 如何实现Java中一个简单的LinkedList
- 中级JavaScript例子, 如何实现一个简单实用的模板套用机制, GXTemplate , 第4章(估计要写9章)
- 一个简单的WeakList的实现
- 中级JavaScript例子, 如何实现一个简单实用的模板套用机制, GXTemplate , 第2章(估计要写9章)
- SequenceList 的一个简单实现
- 使用go语言的list实现一个简单的LRU缓存
- PHP技术-实现一个最简单的模板分离