c++ 找出一个整形数组中元素的最大值
来源:互联网 发布:国际软件 编辑:程序博客网 时间:2024/05/17 01:01
这是谭老书上的一个例题,考前复习的时候看到这了,用c代码可能几行就解决了,但是现在正在学习c++,而且我对c++代码的具体书写并不熟悉(一直在写c风格的c++代码),在这里锻炼一下,我对问题进行了扩展,运用类模板可以对不同类型的数组找寻其中的最大元素,在这还特意进行了降序排序,来测试sort()函数在类里面如何使用模板函数cmp。
#include <iostream>
#include <algorithm>#define MAX 1000
using namespace std;
template <typename numtype>
class Array_max
{
public:
Array_max(int a):n(a){}
void set_value();
void sort_array();
void show_max();
private:
numtype a[MAX];
int n;
};
template <typename numtype>
bool cmp(numtype a,numtype b)
{
return a>b;
}
template <typename numtype>
void Array_max<numtype>::set_value()
{
for(int i=0;i<n;i++)
cin>>a[i];
}
template <typename numtype>
void Array_max<numtype>::sort_array()
{
sort(a,a+n,cmp<numtype>);
}
template <typename numtype>
void Array_max<numtype>::show_max()
{
cout<<"Max:"<<a[0]<<endl;
}
int main()
{
int m;
cin>>m;
Array_max<int>case1(m);
case1.set_value();
case1.sort_array();
case1.show_max();
return 0;
}
PS:我比较喜欢类外定义成员函数,因为这样比较好分文件
c++代码的优势在这里可以体现出来:代码重用
只要你的代码足够抽象,足够通用,你可以对其稍加修改就可以解决另一个问题,这是c代码所做不到的,c代码往往针对的是某一个问题。
只要对上面的代码稍加修改,我就可以用它来解决同样是书上的问题:对5个字符串排序,从小到大输出。代码如下:
#include <iostream>
#include <algorithm>
#include <string>
#define MAX 1000
using namespace std;
template <typename numtype>
class Array_max
{
public:
Array_max(int a):n(a){}
void set_value();
void sort_array();
void show_array();
private:
numtype a[MAX];
int n;
};
template <typename numtype>
bool cmp(numtype a,numtype b)
{
return a<b;
}
template <typename numtype>
void Array_max<numtype>::set_value()
{
for(int i=0;i<n;i++)
cin>>a[i];
}
template <typename numtype>
void Array_max<numtype>::sort_array()
{
sort(a,a+n,cmp<numtype>);
}
template <typename numtype>
void Array_max<numtype>::show_array()
{
cout<<a[0];
for(int i=1;i<n;i++)
cout<<' '<<a[i];
cout<<endl;
}
int main()
{
int m;
cin>>m;
Array_max<string>case1(m);
case1.set_value();
case1.sort_array();
case1.show_array();
return 0;
}
- c++ 找出一个整形数组中元素的最大值
- Class 找出一个整形数组中的元素的最大值
- 找出整形数组中的元素最大值。
- 找出数组元素的最大值
- 找出一个整型数组中的元素的最大值
- Leetcode421. 找出数组中两个元素异或的最大值
- 给定一个整形数组(10个元素)求出最大值。
- 计算一个整形数组里的连续元素和的最大值
- 如何计算一个整形数组里的连续元素和的最大值?
- 有一个二维数组整形数组中,每一行都有一个最大值,编程求出这些最大值以及他们的和
- 找出一个整形数组的所有元素除了一个、两个、三个元素外,其余全是成对出现的,找出这些元素
- 求一个整形数组的最大元素
- 找出一个数组中只出现过一次的元素
- 找出一个数组中出现次数超过一半的元素
- 【一个小实验】找出两个数组中相同的元素
- 找出一个数组中最小的K个元素
- 找出子数组中最大值最小值差值的最大值
- C指针实现找出一个数组中的最大值和次大值
- ViewPager动画效果
- 第十一周上机实践项目——项目1-点-圆-圆柱类族的设计
- HDU 2034 人见人爱A-B
- 文章标题 改进的模式匹配算法
- Java 反射基础(上)
- c++ 找出一个整形数组中元素的最大值
- filter配置多个url-pattern和排除个别servlet
- DP 动态规划 Problem N 1014 折线分割平面
- python简单爬虫学习
- Lua安装及使用总结
- python 调用Google Translate API进行翻译
- HDU 2035 人见人爱A^B(快速幂取模 )
- 解决:Connections could not be acquired from the underlying database!
- POJ 1012--Joseph