网易云课堂_C++程序设计入门(下)_第10单元:月映千江未减明 – 模板_第10单元 - 单元作业:OJ编程 - 创建数组类模板
第10单元 - 单元作业:OJ编程 - 创建数组类模板
温馨提示:
1.本次作业属于Online Judge题目,提交后由系统即时判分。
2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩。
本单元作业练习创建模板类。
单元作业会涉及冒泡排序、线性查找等算法。如果对排序、查找不熟悉,可以自行baidu或者google
依照学术诚信条款,我保证此作业是本人独立完成的。
题目具体内容参见本章 【第10单元 - 作业说明:【OJ - 创建Array类模板】】
#include <iostream>
#include <vector>
#include <limits> using namespace std; template <typename T>
class Array
{
public:
//2. Array类的构造函数如下:
Array(vector<T> v) {
size_ = v.size();
data_ = static_cast<T*> (new T[size_]);
for (int i = 0; i < size_; i++) {
data_[i] = v[i];
}
} //3. 需编写的Array类的其它三个函数如下:
~Array(); // 析构函数,释放已经申请到的内存
void sort(); // 排序,将数组中所有元素由小到大排序
int seek(T key); // 查找指定的元素key,返回其所在位置(位置编号从0开始); 如果没有找到,则返回 -1 //4. Array类的 display函数如下:
void display() {
int i;
for (i = 0; i < size_; i++) {
cout << data_[i];
if (i != size_ - 1)
cout << " "; // 输出一个空格
}
} private:
//1. Array类有2个私有数据成员:
T* data_; //存放数组中所有元素的内存的首地址
int size_; //数组中元素的数量
}; template<typename T>
Array<T>::~Array()// 析构函数,释放已经申请到的内存
{
delete[]data_;
} template<typename T>
void Array<T>::sort()// 排序,将数组中所有元素由小到大排序
{
for (int i = 0; i < size_ - 1; i++)
{
for (int j = 0; j < size_ - 1 - i; j++)
{
if (data_[j] > data_[j + 1])
{
T temp = data_[j];
data_[j] = data_[j + 1];
data_[j + 1] = temp;
}
}
}
} template<typename T>
int Array<T>::seek(T key)// 查找指定的元素key,返回其所在位置(位置编号从0开始); 如果没有找到,则返回 -1
{
for (int i = 0; i < size_; i++)
{
if (key == data_[i])
{
return i;
}
} return -1;
} int main() {
vector<int> vi;
int ti;
vector<double> vd;
double td;
vector<char> vc;
char tc; while (cin.get() != '\n') {
cin.unget();
cin >> ti;
vi.push_back(ti);
} while (cin.get() != '\n') {
cin.unget();
cin >> td;
vd.push_back(td);
} while (cin >> tc) {
vc.push_back(tc);
} Array<int> ai(vi);
Array<double> ad(vd);
Array<char> ac(vc); cout << ai.seek(10) << endl;
cout << ad.seek(10.0) << endl;
cout << ac.seek('a') << endl; ai.sort();
ad.sort();
ac.sort(); ai.display();
cout << endl;
ad.display();
cout << endl;
ac.display(); // GCC及VC编译器在调试模式下会暂停,便于查看运行结果
#if ( defined(__DEBUG__) || defined(_DEBUG) )
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cin.get();
#endif
return 0;
}
网易云课堂_C++程序设计入门(下)_第10单元:月映千江未减明 – 模板_第10单元 - 单元作业:OJ编程 - 创建数组类模板的更多相关文章
- 网易云课堂_C++程序设计入门(下)_第9单元:白公曾咏牡丹芳,一种鲜妍独“异常”_第9单元 - 作业5:OJ编程 - 使用异常进行图形类的错误处理
第9单元 - 作业5:OJ编程 - 使用异常进行图形类的错误处理 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前 ...
- 网易云课堂_C++程序设计入门(下)_第7单元:出入虽同趣,所向各有宜 – 文件输入和输出_第7单元 - 作业2:编程互评
第7单元 - 作业2:编程互评 查看帮助 返回 提交作业(剩余10天) 完成并提交作业 作业批改 互评训练 互评作业 自评作业 成绩公布 查看成绩 由于在线编程不支持 ...
- 网易云课堂_C++程序设计入门(下)_期末考试_期末考试在线编程题目
期末考试在线编程题目 返回考试 本次考试题目一共两个,在考试期间可以不限制次数地提交 温馨提示: 1.本次考试属于Online Judge题目,提交后由系统即时判分. 2.学生可以在考试截止时间 ...
- 网易云课堂_C++程序设计入门(下)_第11单元:工欲善其事必先利其器 - STL简介_第11单元 - 单元作业2:OJ编程 - list 与 deque
第11单元 - 单元作业2:OJ编程 - list 与 deque 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之 ...
- 网易云课堂_C++程序设计入门(下)_第8单元:年年岁岁花相似– 运算符重载_第8单元 - 作业2:OJ编程 - 重载数组下标运算符
第8单元 - 作业2:OJ编程 - 重载数组下标运算符 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提 ...
- 网易云课堂_C++程序设计入门(上)_第2单元:丹青画松石– EGE图形库
第2节:一个简单的EGE程序 #ifndef _GRAPHICS_H_ #define _GRAPHICS_H_ #ifndef __cplusplus #error You must use C++ ...
- 网易云课堂_C++程序设计入门(上)_第6单元:丹枫虽老犹多态–继承与多态_第6单元作业【2】- 在线编程(难度:中)
第6单元作业[2]- 在线编程(难度:中) 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统 ...
- 网易云课堂_C++程序设计入门(上)_第1单元:C++概览_第1单元作业 - 写代码 - 互评 (难度:易)
第1单元作业 - 写代码 - 互评 (难度:易) 查看帮助 返回 提交作业(截止时间已过) 完成并提交作业 作业批改 互评训练 互评作业 自评作业 成绩公布 查看成绩 温 ...
- 网易云课堂_C++程序设计入门(上)_第5单元:万类霜天竞自由 – 对象和类的更多内容_第5单元作业【4】 - 在线编程(难度:难)
第5单元作业[4] - 在线编程(难度:难) 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系 ...
随机推荐
- JS转为number的四种方法
// 1.Number() var num1 = Number(true); console.log(num1); var num2 = Number(" ") console.l ...
- java内存泄漏与处理
内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory: 内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空 ...
- html5 音乐 audio
手机做小项目,需要添加音乐,做此笔记,依赖jquery,代码如下: <!DOCTYPE html> <html lang="en"> <head> ...
- Array数组对象方法
Array 对象方法 方法 描述 concat() 连接两个或更多的数组,并返回结果. copyWithin() 从数组的指定位置拷贝元素到数组的另一个指定位置中. entries() 返回数组的可迭 ...
- 在百度ueditor上粘贴从word中copy的图片和文字 图片无法显示的问题
我这边从world 里面复制粘贴图片到编辑器中,它自动给我上传了,但是我是用的第三方的要设置一个token值,我找了很久,也没有找到应该在哪里设置这个上传的参数,如果是点击图片上传,我知道在dialo ...
- HGOI20190809 省常中互测2
Problem A 时之终结 构造一个含有$n$个节点的无重边无自环的有向图, 使得从$1$出发,每一次经过一条$(u,v) (u < v)$的边到达节点$n$的方案恰好有$y$种. 对于$10 ...
- Single-shot Object Detection
以下转自:http://lanbing510.info/2017/08/28/YOLO-SSD.html 在深度学习出现之前,传统的目标检测方法大概分为区域选择(滑窗).特征提取(SIFT.HOG等) ...
- Spark指标项监控
监控配置 spark的监控主要分为Master.Worker.driver.executor监控.Master和Worker的监控在spark集群运行时即可监控,Driver和Excutor的监控需要 ...
- python学习之路(17)
sorted 排序算法 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大 ...
- pip & conda 换源
conda换源方法具体参考清华大学镜像站Anaconda 镜像使用帮助 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn ...