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 ...
随机推荐
- SAP views
文章转自 http://blog.csdn.net/HikenWong/article/details/8263969 1. sap的视图的类型sap的视图的类型有五种: Database views ...
- 必备Mysql命令
文章来源:https://macrozheng.github.io/mall-learning/#/reference/mysql 开发者必备Mysql命令 开发者必备Mysql常用命令,涵盖了数据定 ...
- Jenkenis报错:该jenkins实例似乎已离线
使用运行war的形式安装jenkins,因为伟大的墙出现,“该jenkins实例似乎已离线” 问题 解决方法: 1. 保留此离线页面,重新开启一个浏览器tab标签页 2.输入输入网址http://lo ...
- php实用功能小记
1.任意数目的参数 function fun(){ $args = func_get_args(); foreach ($args as $k => $v) { echo "arg&q ...
- Influx Sql系列教程零:安装及influx-cli使用姿势介绍
influxdb 时序数据库,因为实际业务中使用到了,然而并没有发现有特别好的文章,完整的介绍influx sql的使用姿势,因此记录下实际开发中学习的体会,主要参考来自于官方文档 Influx Qu ...
- 利用Idea查看类的继承关系图
1.将光标定位到你想查看的类,点击右键,选择 Diagrams,其中有 show 和 show ... Popup,只是前者新建在标签页内,后者以浮窗的形式展示 可得,如下图所示. 查看图中的Appl ...
- C++容器简介1—stack
一.简介 stack是一种容器适配器(STL的容器分为顺序容器和关联容器,容器适配器),被设计来用于操作先进后出(FILO)结构的情景,在这种情况下, 元素的插入和删除都只能在容器的尾部进行. sta ...
- python模块知识三 hashlib 加密模块、collections、re模块
8.hashlib 加密模块 主要用于加密和校验 常见密文:md5,sha1,sha256,sha512 只要明文相同,密文就相同 只要明文不相同,密文就是不相同的 不能反逆(不能解密)--md5 ...
- 解决Windows10关闭UAC后,开机启动项不生效的问题
Windows10关闭UAC后,会发现启动项不生效. 运行输入gpedit.msc打开组策略(家庭版没有组策略功能) 依次展开计算机配置->Windows设置->安全设置->本地策略 ...
- nginx在Windows环境安装
nginx介绍 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行网站的发布处理,另外 ...