【发布时间】:2015-12-02 04:23:26
【问题描述】:
目前正在处理图书馆模拟器任务。一切正常,但我想知道一些事情只是为了了解它。
在这个程序中有 3 个类:Book、Patron 和 Library。图书馆类包含 3 个私有数据成员:一个指向书籍的指针向量、一个指向读者指针的向量和一个 currentDate int。
有问题的函数如下:
void Library::incrementCurrentDate()
{
currentDate++;
for (int i = 0; i < members.size(); i++)
{
vector<Book*> ptr = members.at(i)->getCheckedOutBooks();
for (int j = 0; j < ptr.size(); j++)
{
if (currentDate > ptr.at(j)->getCheckOutLength())
members.at(i)->amendFine(.10);
}
}
}
对功能的要求是这样的:
增加当前日期;每借阅一本逾期图书,每位读者的罚款增加 10 美分(使用 amendFine)
我上面写的方式现在可以正常工作了。因为我刚刚在我的计算机科学课程的第一学期,我们不能使用我们没有涵盖的任何东西,我知道很多。话虽如此,是否有更有效的方法来使用更高级的 c++ 编程方法来实现此功能?
【问题讨论】:
-
保持书籍按截止日期排序,这样您就不会检查每一本书
-
@NickD
const std::vector<Book*>& ptr -
使用
[]而不是at,因为您已经在进行范围检查 -
统计逾期图书数量,最后调整一次罚款,可能比每次调用函数都快。
-
Everything is working fine- 插入Code Review
标签: c++ performance function