- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课后任务一
数据结构课后任务一
作业1:
通过分析知导致输出不确定数字的代码为:
copy(v.begin(), v.begin() +5, back_inserter(v));
在执行上述代码前后,通过输出向量v的容量我们发现,执行前v的容量是13,而执行后容量增加到了19,很明显执行copy操作的过程中进行了扩容。而这个问题也就是在扩容的过程中产生的:首先back_inserter在向v中插入元素时发现,此时v中元素已满,则重新申请一块新的连续的内存区域,并将以前的元素都拷贝到新的内存区域中去,此时一个关键步骤就是修改begin()或end()操作返回的迭代器,在上面的copy函数中,显然迭代器未被修改(未重新加载迭代器),函数中仍旧使用的是以前的迭代器,则插入的元素已不再是现在的向量v中,而是在以前的向量v的内存区域里,而要插入的整型数值却没有被插入到新的内存区域中去。因为插入元素成功所以向量v的size要跟着增大。但是因为数值没有插入到正确的位置,而无法被访问,出现了不确定值。
作业2:
STL中的sort排序算法与数据结构教材中的快速排序并不完全一样,通过阅读源码发现,STL中的sort算法做了很多优化:
A.为了防止数据数据分割时的不平衡,而采用了三点取中、九点取中的方法使其能够减少在对部分有序的序列排序时的递归层数。
B.如果数据量太大,递归层数过大,超过了算法模板给出的阈值,则程序将采用堆排序算法来对数据排序,从而减少时空复杂度。
作业3:
程序源文件结构:
Student.h student类的定义文件
Processor.h 一个静态类包含了对student类中数据的操作集合
Test.cpp 主程序
源代码:
/*****************Student.h*****************/
#ifndef _STUDENT_H_
#define _STUDENT_H_
#include string
#include iostream
class Student
{
public:
Student(){}
Student(std::string num, std::string nam, float grad):
number(num), name(nam), grade(grad){}
friend float operator+(const int gd, const Student stu)
{
float tmp;
tmp = gd + stu.grade;
return tmp;
}
Student operator + (const Student stu2)
{
grade = grade + stu2.grade;
return *this;
}
friend float operator+(const Student stu1, const Student stu2)
{
float tmp;
tmp = stu1.grade + stu2.grade;
return tmp;
}
friend bool operator (const Student stu1, const Student stu2)
{
return (stu1.grade stu2.grade);
}
friend std::istream operator (std::istream in, Student stu)
{
in stu.number stu.name stu.grade;
return in;
}
friend std::ostream operator (std::ostream out, const Student stu)
{
out stu.number
stu.name
stu.grade;
return out;
}
float getGrade();
std::string getName();
std::string getNumber();
private:
std::string number;
std::string name;
float grade;
};
std::string Student::getName()
{
return name;
}
std::string Student::getNumber()
{
return number;
}
float Student::getGrade()
您可能关注的文档
最近下载
- 上锁挂牌管理制度[1].doc VIP
- 精细化工工艺学(第三)第2章表面活性剂.ppt VIP
- 第2课第二次鸦片战争导学案(有答案).pdf VIP
- 《土壤的成分》教案-2024-2025学年青岛版(五四制)(2024)小学科学三年级上册.docx VIP
- 2025中国融通旅业发展集团有限公司社会招聘笔试参考题库附答案解析.docx VIP
- 绿色节能的成本和效益(学时).ppt VIP
- 《土壤的种类》教案-2024-2025学年青岛版(五四制)(2024)小学科学三年级上册.docx VIP
- 基于PLC的智能微波炉控制系统设计.doc VIP
- 监控-投诉-通用-L2.docx
- 污水处理厂设施设备安全操作规程.doc VIP
文档评论(0)