热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

STL:模板类手写数组

#includeusingnamespacestd;templateclassMyArray{friendvoidtest01();友元函数

#include
using namespace std;template<class T>
class MyArray {friend void test01();//友元函数
public:MyArray(int capacity)//构造函数{this->mCapacity &#61; capacity;this->mSize &#61; 0;//申请空间this->ptr &#61; new T[this->mCapacity];}MyArray(const MyArray<T>& another)//拷贝函数{this->mCapacity &#61; another.mCapacity;this->mSize &#61; another.mSize;//申请空间this->ptr &#61; new T[this->mCapacity];//开始拷贝for (int i &#61; 0; i < this->mSize; i&#43;&#43;){this->ptr[i] &#61; another.ptr[i];}}T& operator[](int index)// []操作符重载{return this->ptr[index];}MyArray<T>& operator&#61;(const MyArray<T>& another)// &#61;操作符重载{//原本容器有值if (this->ptr !&#61; nullptr) {delete[] this->ptr;this->ptr &#61; nullptr;this->mCapacity &#61; 0;this->mSize &#61; 0;}this->mCapacity &#61; another.mCapacity;this->mSize &#61; another.mSize;this->ptr &#61; new T[this->mCapacity];for (int i &#61; 0; i < this->mSize; i&#43;&#43;){this->ptr[i] &#61; another.ptr[i];}return *this;}void PushBack(T& data) {//一个&是对左值取引用//判断容器中是否有位置if (this->mCapacity <&#61; this->mSize) {return ;}this->ptr[this->mSize] &#61; data;this->mSize&#43;&#43;;}void PushBack(T&& data) {//两个&&是对右值取引用//判断容器中是否有位置if (this->mCapacity <&#61; this->mSize) {return ;}this->ptr[this->mSize] &#61; data;this->mSize&#43;&#43;;
}~MyArray() {if (this->ptr !&#61; nullptr) {delete[] this->ptr;this->ptr &#61; nullptr;this->mCapacity &#61; 0;this->mSize &#61; 0;}}
private://一共可以存储多少元素int mCapacity;//现在有多少元素int mSize;//保存数据的首地址T* ptr;
};
void test01() {//测试构造函数MyArray<int> marray(20);int a &#61; 10, b &#61; 20, c &#61; 30;//测试数组内添加元素//对左值取引用marray.PushBack(a);marray.PushBack(b);marray.PushBack(c);//对右值取引用marray.PushBack(1);marray.PushBack(2);marray.PushBack(3);//测试[ ]操作符重载for (int i &#61; 0; i < marray.mSize; i&#43;&#43;) {cout << marray[i] << " ";}
}int main() {test01();
}

在这里插入图片描述


推荐阅读
  • 在2021-2022 ACM集训队月度编程挑战赛第二轮中,题目“最大值与最小值的选择”要求参赛者处理一个包含n个元素的数组,并给定一个整数k。任务是通过选择特定的子数组,计算并返回这些子数组的最大值和最小值之间的差值。该问题考验了选手对数组操作和优化算法的理解与应用能力。 ... [详细]
  • 寒假作业解析:第三周 2月12日 第7题
    尽快完成之前的练习任务!每日一练2.1 Problem A Laurenty and Shop 的题目要求是选择两条不同的路线以最小化总的等待时间。简要分析:通过对比不同路线的等待时间,可以找到最优解。此问题可以通过动态规划或贪心算法来解决,具体取决于路线的复杂性和约束条件。 ... [详细]
  • 本文对常见的字符串哈希函数进行了全面分析,涵盖了BKDRHash、APHash、DJBHash、JSHash、RSHash、SDBMHash、PJWHash和ELFHash等多种算法。这些哈希函数在不同的应用场景中表现出各异的性能特点,通过对比其算法原理、计算效率和碰撞概率,为实际应用提供了有价值的参考。 ... [详细]
  • 题目链接:POJ 2777。问题描述:给定一个区域,需要进行多次涂色操作,并在每次操作后查询某个区间内的不同颜色数量。解决方案:由于题目中颜色种类不超过30种,可以利用线段树的懒惰更新策略来高效处理这些操作。通过懒惰标记,避免了不必要的节点更新,从而显著提高了算法的效率。此外,该方法还能有效应对大规模数据输入,确保在合理的时间内完成所有操作。 ... [详细]
  • 每日精选Codeforces训练题:1119E(贪心算法)、821C(栈模拟)和645D(拓扑排序)
    题目涉及三种不同类型的算法问题:1119E(贪心算法)、821C(栈模拟)和645D(拓扑排序)。其中,1119E的问题背景是有n种不同长度的棍子,长度分别为2^0, 2^1, …, 2^(n-1),每种棍子的数量为a[i]。任务是计算可以组成的三角形数量。根据三角形的性质,任意两边之和必须大于第三边。该问题可以通过贪心算法高效解决,通过合理选择棍子组合来最大化三角形的数量。 ... [详细]
  • 本文探讨了 Java 中 Pair 类的历史与现状。虽然 Java 标准库中没有内置的 Pair 类,但社区和第三方库提供了多种实现方式,如 Apache Commons 的 Pair 类和 JavaFX 的 javafx.util.Pair 类。这些实现为需要处理成对数据的开发者提供了便利。此外,文章还讨论了为何标准库未包含 Pair 类的原因,以及在现代 Java 开发中使用 Pair 类的最佳实践。 ... [详细]
  • 深入解析C语言中的动态规划算法:以背包问题为例
    本文深入探讨了C语言中动态规划算法的应用,以经典的背包问题为例进行详细解析。通过实例分析,展示了如何利用动态规划解决复杂优化问题,并提供了高效的代码实现方法。文章不仅涵盖了算法的基本原理,还讨论了其在实际编程中的应用技巧和优化策略,为读者提供了全面的理解和实践指导。 ... [详细]
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
  • 在解决区间相关问题时,我发现自己经常缺乏有效的思维方式,即使是简单的题目也常常需要很长时间才能找到解题思路,而一旦得到提示便能迅速理解。题目要求对一个包含n个元素的数组进行操作,并给出一个参数k,具体任务是…… ... [详细]
  • 本文介绍了如何在iOS平台上使用GLSL着色器将YV12格式的视频帧数据转换为RGB格式,并展示了转换后的图像效果。通过详细的技术实现步骤和代码示例,读者可以轻松掌握这一过程,适用于需要进行视频处理的应用开发。 ... [详细]
  • 在编程笔试和面试中,全排列算法因其适中的难度而备受青睐,不仅能够考察应聘者的算法基础,还能测试其对递归和回溯的理解。本文将深入解析全排列算法的实现原理,探讨其应用场景,并提供优化建议,帮助读者更好地掌握这一重要算法。 ... [详细]
  • 蓝桥杯算法实战:节点选取策略优化分析
    本文针对蓝桥杯算法竞赛中的节点选取策略进行了深入分析与优化。通过对比不同节点选择方法的效果,提出了基于贪心算法和动态规划的综合优化方案,旨在提高算法效率和准确性。实验结果表明,该优化策略在处理大规模数据集时表现出色,显著提升了算法性能。 ... [详细]
  • PHP服务接口的专业测试方法与实践 ... [详细]
  • 本文深入解析了C++中`while`循环的使用方法及其应用场景,包括计数控制和时间控制两种主要类型。通过具体的代码示例,详细介绍了如何利用`while`循环实现精确的计数控制和灵活的时间控制,帮助读者更好地理解和掌握这一重要的编程结构。此外,文章还探讨了`while`循环在实际开发中的常见用法和优化技巧,为初学者提供了宝贵的实践经验。 ... [详细]
  • 掌握PHP编程必备知识与技巧——全面教程在当今的PHP开发中,了解并运用最新的技术和最佳实践至关重要。本教程将详细介绍PHP编程的核心知识与实用技巧。首先,确保你正在使用PHP 5.3或更高版本,最好是最新版本,以充分利用其性能优化和新特性。此外,我们还将探讨代码结构、安全性和性能优化等方面的内容,帮助你成为一名更高效的PHP开发者。 ... [详细]
author-avatar
于英豪H
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有