vector容器的实现
简单实现了构造、析构、push_back、pop_back、operator=、operator[]、clear等函数
template<class T>
class my_vector {
private:
int count;
int alloc_size;
T *arr;
public:
my_vector():count(0),alloc_size(0),arr(NULL)
{
}
my_vector(int n, T ele): count(0),alloc_size(n)
{
arr = new T[n];
while(n--)
{
push_back(ele);
}
}
my_vector(const my_vector &other):count(0),alloc_size(0),arr(NULL)
{
*this = other;
} my_vector<T>& operator=(const my_vector &other)
{
count = other.size();
alloc_size = count;
T *oldarr = arr;
arr = new T[count];
for(int i = 0; i < count; i++)
arr[i] = other[i];
delete []oldarr;
} void push_back(T ele)
{
if(count == alloc_size)
{
T *oldarr = arr;
int new_size;
if(alloc_size == 0)
new_size = 1;
else
new_size = alloc_size*2; arr = new T[new_size];
for(int i = 0; i < count; i++)
{
arr[i] = oldarr[i];
}
alloc_size = new_size;
delete []oldarr;
}
arr[count] = ele;
count++;
} void pop_back()
{
if(count > 0)
count--;
} int size()
{
return count;
} T& operator[](int pos)
{
assert(pos < count);
return arr[pos];
} void clear()
{
count = 0;
} ~my_vector()
{
count = 0;
alloc_size = 0;
delete []arr;
arr = NULL;
} };
vector容器的实现的更多相关文章
- 把《c++ primer》读薄(3-2 标准库vector容器+迭代器初探)
督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 标准库vector类型初探,同一种类型的对象的集合(类似数组),是一个类模版而不是数据类型,学名容器,负责管理 和 存储的元素 ...
- C++ STL vector容器学习
STL(Standard Template Library)标准模板库是C++最重要的组成部分,它提供了一组表示容器.迭代器.函数对象和算法的模板.其中容器是存储类型相同的数据的结构(如vector, ...
- vector容器使用和assert断言关键字
C++里面的容器是个比较复杂的东西,我这篇只说vector容器怎么使用,详细的网搜. vector模板类其实是一个动态数组,跟自己用new关键字创建数组一样,只不过vector会自动帮我们用new和d ...
- C++杂谈(二)初识vector容器与迭代器
教科书中失踪的vector 很奇怪的一件事情,在当时学习C++的时候,老师并没有讲授容器的内容,当时参考的谭浩强老师的红皮C++也没有这个内容,不知为何.后来再学C++,发现容器是一个很重要的概念,在 ...
- vector容器的用法
转自一篇博客^-^: 1 基本操作 (1)头文件#include<vector>. (2)创建vector对象,vector<int> vec; (3)尾部插入数字:vec.p ...
- C++ Daily《2》----vector容器的resize 与 reserve的区别
C++ STL 库中 vector 容器的 resize 和 reserve 区别是什么? 1. resize 改变 size 大小,而 reserve 改变 capacity, 不改变size. 2 ...
- 跟我一起学STL(2)——vector容器详解
一.引言 在上一个专题中,我们介绍了STL中的六大组件,其中容器组件是大多数人经常使用的,因为STL容器是把运用最广的数据结构实现出来,所以我们写应用程序时运用的比较多.然而容器又可以序列式容器和关联 ...
- vector容器+iterator迭代器
关于vector容器的详细描述,可参考:http://www.jb51.net/article/41648.htm 关于iterator迭代器的描述,可参考http://www.cppblog.c ...
- 提高Vector容器的删除效率
vector容器是类似与一个线性数组,索引效率高,插入,删除的效率很低,需要遍历数据列表,一般情况下vector的删除操作由一下函数完成: iterator erase(iterator positi ...
- 标准模板库(STL)学习探究之vector容器
标准模板库(STL)学习探究之vector容器 C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被 ...
随机推荐
- Dapper基础知识二
在下刚毕业工作,之前实习有用到Dapper?这几天新项目想用上Dapper,在下比较菜鸟,这块只是个人对Dapper的一种总结. 2,如何使用Dapper? 首先Dapper是支持多种数据库的 ...
- nodejs 封装mysql连接池
写在前面的 在nodejs后台代码中,我们总是会和数据库打交道 然而,每次都要写数据库的配置以及连接和断开,不胜其烦 我就封装了一个连接池模块,不足之处还请多多批评 上代码 一下是写在mysqls.j ...
- 中级前端工程师要掌握的JavaScript 技巧
1.判断对象的数据类型 2.Es5实现数组map方法 3.使用reduce实现数组map方法 4.ES5 实现数组filter方法 5.使用reduce实现filter方法 6.ES5 实现数组som ...
- 利用js自带函数 数组去重
<script> ,,]; //原数组 var a=[]; //定义空数组 arr.map(function(x){ //用 map 遍历数组 ){ //如果当前值没有存在空数组中 a.p ...
- Vue中两种跳转方式
第一种:通过标签跳转,<router-link></router-link> 第二种:通过js跳转,定义点击事件进行跳转
- 队列(Queue)-c实现
相对而言,队列是比较简单的. 代码还有些warning,我改不动,要找gz帮忙. #include <stdio.h> typedef struct node { int data; st ...
- [terry笔记]data guard基础知识
如下介绍了data guard的基础知识,整理自网络: Data Gurad 通过冗余数据来提供数据保护,Data Gurad 通过日志同步机制保证冗余数据和主数据之前的同步,这种同步可以是实时,延时 ...
- 洛谷——P1455 搭配购买
https://www.luogu.org/problem/show?pid=1455 题目描述 明天就是母亲节了,电脑组的小朋友们在忙碌的课业之余挖空心思想着该送什么礼物来表达自己的心意呢?听说在某 ...
- 北京联通光猫WO-36(HG220GS-U)改为桥接模式
家里弄了个极路由,想在公司里去操作路由器,交换文件.提前下载电影什么的,因此需要光猫改为桥接模式,让路由器拨号 由于WO-36(HG220GS-U)这个型号的光猫固件升级后(我的是3.x)不能用工程账 ...
- 多线程相互排斥--mutex
多线程之线程同步Mutex (功能与Critial Sections同样,可是属于内核对象,訪问速度较慢.能够被不同进程调用) 一 Mutex 相互排斥对象(mutex)内核对象可以确保线程拥 ...