编写并使用数组类模板Array:(1)类中包括对数组进行排序、查找和求元素和的方法 (2) 然后由此产生模板类Array<int>和Array<Box>(Box重载<、=-、+)

时间: 2024-05-10 08:21:20 浏览: 7
``` #include <iostream> #include <algorithm> // for std::sort template <typename T> class Array { private: T* m_data; int m_size; public: Array(int size) : m_size(size) { m_data = new T[size]; } ~Array() { delete[] m_data; } void sort() { std::sort(m_data, m_data + m_size); } int find(const T& value) { for (int i = 0; i < m_size; i++) { if (m_data[i] == value) return i; } return -1; } T sum() { T result = 0; for (int i = 0; i < m_size; i++) { result += m_data[i]; } return result; } T& operator[] (int index) { return m_data[index]; } }; class Box { private: int m_value; public: Box(int value = 0) : m_value(value) {} bool operator< (const Box& other) const { return m_value < other.m_value; } Box& operator= (const Box& other) { m_value = other.m_value; return *this; } friend std::ostream& operator<< (std::ostream& out, const Box& box) { out << box.m_value; return out; } }; int main() { Array<int> intArray(5); intArray[0] = 3; intArray[1] = 1; intArray[2] = 4; intArray[3] = 2; intArray[4] = 5; intArray.sort(); std::cout << "Sorted array: "; for (int i = 0; i < 5; i++) { std::cout << intArray[i] << " "; } std::cout << std::endl; int index = intArray.find(4); std::cout << "Index of value 4: " << index << std::endl; int sum = intArray.sum(); std::cout << "Sum of array: " << sum << std::endl; Array<Box> boxArray(3); boxArray[0] = Box(3); boxArray[1] = Box(1); boxArray[2] = Box(2); boxArray.sort(); std::cout << "Sorted box array: "; for (int i = 0; i < 3; i++) { std::cout << boxArray[i] << " "; } std::cout << std::endl; return 0; } ``` 输出: ``` Sorted array: 1 2 3 4 5 Index of value 4: 3 Sum of array: 15 Sorted box array: 1 2 3 ```

相关推荐

最新推荐

recommend-type

JavaScript数组Array对象增加和删除元素方法总结

本文实例总结了JavaScript数组Array对象增加和删除元素方法。分享给大家供大家参考。具体分析如下: pop 方法 移除数组中的最后一个元素并返回该元素。 arrayObj.pop( ) 必选的 arrayObj 引用是一个 Array 对象。 ...
recommend-type

python对数组进行排序,并输出排序后对应的索引值方式

#一维数组排序 arr = [1, 3, 5, 2, 4, 6] arr = np.array(arr) print arr print np.sort(arr)#或print np.sort(arr,axis=None) print (np.argsort(arr)) # 正序输出索引,从小到大 print (np.argsort(-arr)) # 逆序...
recommend-type

java中删除 数组中的指定元素方法

下面小编就为大家带来一篇java中删除 数组中的指定元素方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
recommend-type

python 实现多维数组(array)排序

&gt;&gt;&gt; data = np.array([[2,2,5],[2,1,3],[1,2,3],[3,1,4]]) &gt;&gt;&gt;&gt; data array([[2, 2, 5], [2, 1, 3], [1, 2, 3], [3, 1, 4]]) 将数组先按照第一列升序,第二列升序,第三列升序的方式排序: &gt;&gt;&gt; idex=np.lexsort...
recommend-type

新建文本文档.txt

新建文本文档
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

HSV转为RGB的计算公式

HSV (Hue, Saturation, Value) 和 RGB (Red, Green, Blue) 是两种表示颜色的方式。下面是将 HSV 转换为 RGB 的计算公式: 1. 将 HSV 中的 S 和 V 值除以 100,得到范围在 0~1 之间的值。 2. 计算色相 H 在 RGB 中的值。如果 H 的范围在 0~60 或者 300~360 之间,则 R = V,G = (H/60)×V,B = 0。如果 H 的范围在 60~120 之间,则 R = ((120-H)/60)×V,G = V,B = 0。如果 H 的范围在 120~180 之间,则 R = 0,G = V,B =
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。