c++vector简单实现
const int DEFAULT_CAP = 3; template <typename T>
class vector {
//
int capacity;
T* _data;
int _size; public:
//const
vector ():capacity(DEFAULT_CAP),_size(0),_data(new T[capacity]){}; vector(vector& v):capacity(v.cap()),_size(v.size()),_data(new T[capacity]) {
memcpy(_data, v._data, _size*sizeof(T));
}
vector(vector&& v):capacity(v.cap()),_size(v.size()) {
_size = v.getdata();
v._data = nullptr;
}
//deconst
virtual ~vector(){ delete [] _data;}
//operator
vector& operator=(const vector &v) {
/*
if(this != &v){
delete [] _data;
_size = v.size();
capacity = v.cap();
_data = new T[capacity];
memcpy(_data, v._data, _size*sizeof(T));
}*/
sw(v);
return *this;
}
T& operator[](int i) const{
return _data[i];
}
//retrun
int size() const {return _size;}
int cap() const {return capacity;}
const int getdata() const noexcept {_data;}
//function
void expand() {
if(_size == capacity){
capacity = capacity<<1;
T *old = _data;
_data = new T[capacity];
memcpy(_data, old, _size*sizeof(T));
delete [] old;
}
}
void push_back(T const& temp) {
expand();
_data[_size++] = temp;
}
void each(){
for (int i = 0; i < _size; ++i) {
cout<<_data[i]<<endl;
}
}
void sw(vector& v) {
swap(_size, v._size);
swap(capacity, v.capcity);
swap(_data, v._data);
}
};
c++vector简单实现的更多相关文章
- C++线性序列容器<vector>简单总结
C++线性序列容器<vector>简单总结 vector是一个长度可变的数组,使用的时候无须声明上限,随着元素的增加,Vector的长度会自动增加:Vector类提供额外的方法来增加.删除 ...
- c++ 头文件 及 sort 和 vector简单介绍
c++ sort :http://www.16kan.com/post/997260.html http://wenku.baidu.com/view/e064166daf1ffc4ffe47ac6 ...
- vector简单使用
在刷ccf题的时候日常做完去网上查看别的同学怎么做的 发现有使用vector后三十几行代码就写出来的,虽然时间复杂度和我一样十几毫秒,but !我看中了它的代码量啊!多么的少啊! 所以百度了vecto ...
- c++ vector 简单实现。
第二次修改: 1)熟悉基本的模板编程,头文件和定义必须放到一起. 2)熟悉内存管理模板类 allocator<T>. 1.使用标准库的内存管理类 allocator<T> 代替 ...
- C++STL vector简单使用练习1
#include <iostream> #include <vector> #include <numeric> using namespace std; int ...
- Vector简单介绍
/*枚举就是Vector特有的取出方式发现枚举和迭代器很像其实枚举和迭代是一样的因为枚举的名称以及方法的名称都过长了.所以被迭代器取代了枚举郁郁而终了. */ import java.util.*;c ...
- STL vector简单用法
初涉c++,此为<算法笔记>中的内容,有待个人理解完善. vector vector翻译为向量,叫做"变长数组"更容易理解. 头文件:#include<vecto ...
- STL - 容器 - vector简单应用
VectorTest.cpp #include <vector> #include <iostream> #include <string> #include &l ...
- vector简单常用用法
Vector是什么? vector翻译为向量,从某种角度来说就是一个可以变长的数组,它会根据需要自动扩充数组的容量,除此之外其是一个STL中的模板类,其 还具有一些内部的方法. Vector的使用方法 ...
随机推荐
- 图论trainning-part-2 B. Claw Decomposition
B. Claw Decomposition Time Limit: 1000ms Memory Limit: 131072KB 64-bit integer IO format: %lld ...
- TOJ3039: 材质贴图
3039: 材质贴图 Time Limit(Common/Java):1000MS/3000MS Memory Limit:65536KByteTotal Submit: 46 ...
- 07-复习数组和简单api
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- FZU 2186 小明的迷宫 【压状dp】
Problem Description 小明误入迷宫,塞翁失马焉知非福,原来在迷宫中还藏着一些财宝,小明想获得所有的财宝并离开迷宫.因为小明还是学生,还有家庭作业要做,所以他想尽快获得所有财宝并离开迷 ...
- Linux(10):期中架构(2)--- NFS存储服务 & 实时同步
1. 共享存储服务概念: # NFS是Network File System的缩写,中文意思是网络文件系统, # 它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录. 2. ...
- CodeForces 731C Socks
http://codeforces.com/problemset/problem/731/C 并查集+贪心 将要求颜色相同的袜子序号放入一个集合中 贪心:然后统计这个集合中出现次数最多但颜色 可以得到 ...
- jsp、Html页面注释的种类
<!-- 这里面的注释在查看页面源代码时,依旧可以看到,另外页面加载时这里面注释的内容仍旧会编译 --> <%-- JSP中的注释,这里面的内容在查看页面源代码时,看不到这里面注释书 ...
- Struts2牛逼的拦截器,卧槽这才是最牛的核心!
struts 拦截器 一 拦截器简介及简单的拦截器实例 Struts2拦截器是在访问某个Action或者Action的某个方法,在字段前或者之后实施拦截,并且Struts2拦截器是可以插拔的,拦截器是 ...
- T3139 栈练习3 codevs
http://codevs.cn/problem/3139/ 题目描述 Description 比起第一题,本题加了另外一个操作,访问栈顶元素(编号3,保证访问栈顶元素时或出栈时栈不为空),现在给出这 ...
- FIREDAC字段类型映射
为什么需要字段类型映射? 作为通用型数据引擎的FIREDAC或者UNIDAC,驱动某一种数据库以后,总有一些数据库的一些字段类型,数据引擎不能识别,反应到程序中就是数据引擎不能正确地读取该字段的值 . ...