C++(四十四) — 数组模板类(vector工具)
实现 stl 中的 vector 操作。
1、MyVector.h
#pragma once #include <iostream>
using namespace std; template <typename T>
class MyVector
{
friend ostream& operator<< <T>(ostream &out, MyVector<T> &obj);
public:
MyVector(int size = );//构造函数
MyVector(const MyVector &obj);//拷贝构造函数
~MyVector();//析构函数 T& operator[] (int index);
MyVector &operator=(const MyVector &obj); int getLen() {
return m_len;
}
protected:
T *m_space;
T m_len;
};
2、MyVector.cpp
#include <iostream>
using namespace std;
#include "MyVector.h" template <typename T>
MyVector<T>::MyVector(int size = ) //构造函数
{
m_space = new T[size];
m_len = size;
}
template <typename T>
MyVector<T>::MyVector(const MyVector &obj)//拷贝构造函数
{
m_len = obj.m_len;
m_space = new T[m_len]; for (int i = ; i < m_len; i++)
{
m_space[i] = obj.m_space[i];
}
}
template <typename T>
MyVector<T>::~MyVector()//析构函数
{
if (m_space != nullptr)
{
delete[] m_space;
m_space = nullptr;
m_len = ;
}
}
//ostream& operator<< <T>(ostream &out, MyVector<T> &obj)
template <typename T>
ostream& operator<< (ostream &out, MyVector<T> &obj)
{
for (int i = ; i < obj.m_len; i++)
{
out << obj.m_space[i] << " ";
}
out << endl;
return out;
} template <typename T>
T& MyVector<T>::operator[] (int index)
{
return m_space[index];
} template <typename T>
MyVector<T> & MyVector<T>::operator=(const MyVector<T> &obj)
{
if (m_space != nullptr)
{
delete[] m_space;
m_space = nullptr;
m_len = ;
}
m_len = obj.m_len;
m_space = new T[m_len];
for (int i = ; i < m_len; i++)
{
m_space[i] = obj[i];
} return *this;
}
3、MyVector.cpp(测试函数)
#include <iostream>
using namespace std;
#include "MyVector.cpp" void main()
{
MyVector<int> mv1();
for (int i = ; i < mv1.getLen(); i++)
{
mv1[i] = i + ;
cout << mv1[i] << endl;
}
cout << endl; MyVector<int> mv2 = mv1;
for (int i = ; i < mv2.getLen(); i++)
{
mv2[i] = i + ;
}
cout << mv2 << endl; system("pause"); }
C++(四十四) — 数组模板类(vector工具)的更多相关文章
- NeHe OpenGL教程 第四十四课:3D光晕
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- 模板类 vector
概要 介绍一下模板类 vector 的常用操作,以及一个应用举例,顺时针打印矩阵. 基本定义 模板类 vector 是一种动态数组,它是使用 new 创建动态数组的替代品,实际上,vector 也 ...
- 网站开发进阶(四十四)input type="submit" 和"button"的区别
网站开发进阶(四十四)input type="submit" 和"button"的区别 在一个页面上画一个按钮,有四种办法: 这就是一个按钮.如果你不写ja ...
- Gradle 1.12用户指南翻译——第四十四章. 分发插件
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- SQL注入之Sqli-labs系列第四十一关(基于堆叠注入的盲注)和四十二关四十三关四十四关四十五关
0x1普通测试方式 (1)输入and1=1和and1=2测试,返回错误,证明存在注入 (2)union select联合查询 (3)查询表名 (4)其他 payload: ,( ,( 0x2 堆叠注入 ...
- “全栈2019”Java第四十四章:继承
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 孤荷凌寒自学python第四十四天Python操作 数据库之准备工作
孤荷凌寒自学python第四十四天Python操作数据库之准备工作 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天非常激动地开始接触Python的数据库操作的学习了,数据库是系统化设计 ...
- Android项目实战(四十四):Zxing二维码切换横屏扫描
原文:Android项目实战(四十四):Zxing二维码切换横屏扫描 Demo链接 默认是竖屏扫描,但是当我们在清单文件中配置横屏显示的时候: <activity android:name=&q ...
- 第四十四个知识点:在ECC密码学方案中,描述一些基本的防御方法
第四十四个知识点:在ECC密码学方案中,描述一些基本的防御方法 原文地址:http://bristolcrypto.blogspot.com/2015/08/52-things-number-44-d ...
- Spark(四十四):使用Java调用spark-submit.sh(支持 --deploy-mode client和cluster两种方式)并获取applicationId
之前也介绍过使用yarn api来submit spark任务,通过提交接口返回applicationId的用法,具体参考<Spark2.3(四十):如何使用java通过yarn api调度sp ...
随机推荐
- preHandle、postHandle与afterCompletion
preHandle 调用时间:Controller方法处理之前 执行顺序:链式Intercepter情况下,Intercepter按照声明的顺序一个接一个执行 若返回false,则中断执行,注意:不会 ...
- [LeetCode] 369. Plus One Linked List 链表加一运算
Given a non-negative number represented as a singly linked list of digits, plus one to the number. T ...
- [LeetCode] 507. Perfect Number 完美数字
We define the Perfect Number is a positive integer that is equal to the sum of all its positive divi ...
- Linux thread process and kernel mode and user mode page table
Linux 中线程和进程切换的开销: Linux 操作系统层面的进程和线程的实现都是task_struct描述符. task_struct 包含成员变量:内核态stack. 这些都存在3-4G虚拟地 ...
- ubuntu16.04+cuda9.0_cudnn7.5+tensorflow-gpu==1.12.0
1.查找可用的tensorflow源,该命令运行后终端会输出所有可用的源 anaconda search -t conda tensorflow 2.这里name是上一步中输出源的tensorflow ...
- [转帖]Redis、Memcache和MongoDB的区别
Redis.Memcache和MongoDB的区别 https://www.cnblogs.com/tuyile006/p/6382062.html >>Memcached Memcach ...
- 【Tools】VMware虚拟机三种网络模式详解和操作
目录 00. 目录 01. VMware虚拟机三种网络模式 02. Bridged(桥接模式) 03. NAT(地址转换模式) 04. Host-Only(仅主机模式) 00. 目录 @ 参考:htt ...
- Mybatis @Many注解一对多关联映射
@Many注解:fetchType属性用于配置是否延迟加载
- AS3放大镜工具类
package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Display ...
- Spring Boot(二)
Spring MVC流程图 注册流程图: result代码: import java.io.UnsupportedEncodingException; import java.net.URLEncod ...