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 ...
随机推荐
- kubernetes-subpath用法(把文件挂载在已存在的目录下,不覆盖原目录)
以ngxin的配置文件为例子: nginx-deployment.yaml : apiVersion: v1 kind: ConfigMap metadata: name: nginx-cm data ...
- ASP.NET Core Restful Web API 相关资源索引
GraphQL 使用ASP.NET Core开发GraphQL服务器 -- 预备知识(上) 使用ASP.NET Core开发GraphQL服务器 -- 预备知识(下) [视频] 使用ASP.NET C ...
- laravel相关知识点
参考地址:http://note.youdao.com/noteshare?id=9899f8328427de449390230c35489934
- jquery json对象转换
jquery json对象转换 <pre>//json数组转json串var arr = [1,2,3, { a : 1 } ];JSON.stringify( arr ); //json ...
- python断点
pycharm怎么debug单步调试 1.打开一个Pycharm的界面,需要选中编辑器中的左侧. 2.点击Run---->Debug运行 3.点击箭头,向下运行 4.可以看到代码运行到下一条 5 ...
- Python之 random 模块
#!/usr/bin/env python # -*- coding:utf8 -*- import random ''' 如果想要随机的内容的话,就可以使用这个模块来完成 ''' ######### ...
- 长乐培训Day4
T1 矩阵 题目 [题目描述] 从前有个 n×m 的矩阵,初始时每个位置均为 0.你需要依次执行 q 个操作,每个操作会指定一行或一列,然后将该行或该列的所有元素全部赋为一个相同的值. 输出操作完成后 ...
- matlab 2017b 支持的C编译器
在电力电子开发领域,matlab是非常重要的工具,随着系统仿真和编程开发的不断融合,在matlab中使用混合编程并进行仿真验证,甚至是软件工程里面,源文件的自生成.编译以及一键程序下载等功能,都是越来 ...
- 在KubeSphere中部署Kubeapps
1. 情况说明 使用一台VMWare Workstation虚拟机,4核8G内存,50G磁盘 已安装KubeSphere 2.1 版本,已经按照官方文档的入门必读,示例一创建好相应的账号信息等 Kub ...
- android使用http3
http3的github地址: https://github.com/cloudflare/quiche