数据结构(C++)—— 向量(Vector)
2016-05-25 23:47
621 查看
1. 动态内存管理
1.1 扩容
template <typename T> void Vector<T>::expand(){ if (_size < _capacity) return; if (_capacity < DEFAULT_CAPACITY) _capacity = DEFAULT_CAPACITY; T *oldElem = _elem; _elem = new T[_capacity*=2]; for (int i = 0; i < _size; _elem[i] = oldElem[i++]); delete [] oldElem; }
1.2 缩容
template <typename T> void Vector<T>::shrink(){ if (_capacity < DEFAULT_CAPACITY << 1) return; if (_size << 2 > _capacity) return; T *oldElem = _elem; _elem = new T[_capacity >>= 1]; for (int i = 0; i < _size; ++i){ _elem[i] = oldElem[i]; } delete [] oldElem; }
1.3 删除区间
template <typename T> int Vector<T>::remove(Rank lo, Rank hi){ if (lo == hi) return 0; while (hi < _size){ _elem[lo++] = _elem[hi++]; } _size = lo; shrink(); return hi - lo; }
1.4 查找与去重
相关文章推荐
- 数据结构与算法的分析
- 模拟实现顺序表
- 图形的遍历方法之先广后深法
- 算法的时间复杂度和空间复杂度杂谈
- caffe中的数据结构解析
- 数据结构实验之栈:行编辑器
- 树-Path Sum II(指定和,求根到叶子的路径)
- 面向对象的数据结构--栈和队列
- OC 数据结构
- 数据结构 —— 链表总结
- 数据结构实验之栈六:下一较大值(二)
- Python 数据结构与算法 —— 链表
- poj 2406 : acm 数据结构Power Strings (KMP)
- POJ 1611 ACM数据结构The Suspects (并查集)
- 数据结构实验5-2
- C/C++、JAVA 数据结构 :双向循环链表
- 字符串操作
- Poj 3320 acm 数据结构 哈希表入门
- 数据结构实验-用C++实现带头结点的循环链表
- java数据结构-Vector