📅  最后修改于: 2023-12-03 14:58:21.408000             🧑  作者: Mango
本题为门 | GATE CS 2021 |套装2 |问题12,考察了面向对象程序设计、C++语法及STL容器等知识。
假设有一个Fruit类,其成员数据包括水果名称(name)和保质期(expiryDate)。现在需要实现一个类Basket,其中包含一个vector容器用于存储Fruit类的对象。请实现Basket类的以下功能:
要求:
void addFruit(Fruit f)
:将f添加到vector容器中;void removeFruit(string name)
:从vector容器中删除指定名称的水果对象;int checkExpiryDate(string name)
:返回vector容器中指定名称水果的保质期。本题主要考验了对于STL容器vector的使用。
Basket类中的vector容器用于存储Fruit对象,可以使用vector的push_back函数实现添加;使用erase函数实现删除;使用迭代器进行遍历查找指定名称的水果对象。
#include <iostream>
#include <vector>
#include <string>
using namespace std;
class Fruit {
public:
string name;
int expiryDate;
Fruit(string n, int e) : name(n), expiryDate(e) {}
};
class Basket {
public:
vector<Fruit> fruits;
Basket() {}
~Basket() {}
void addFruit(Fruit f) { fruits.push_back(f); }
void removeFruit(string name) {
for (vector<Fruit>::iterator it = fruits.begin(); it != fruits.end(); it++) {
if (it->name == name) {
fruits.erase(it);
break;
}
}
}
int checkExpiryDate(string name) {
for (vector<Fruit>::iterator it = fruits.begin(); it != fruits.end(); it++) {
if (it->name == name) {
return it->expiryDate;
}
}
return 0;
}
};
int main() {
Fruit apple("apple", 5);
Fruit banana("banana", 7);
Fruit lemon("lemon", 3);
Basket basket;
basket.addFruit(apple);
basket.addFruit(banana);
basket.addFruit(lemon);
cout << "expired date of apple: " << basket.checkExpiryDate("apple") << endl;
cout << "expired date of banana: " << basket.checkExpiryDate("banana") << endl;
cout << "expired date of lemon: " << basket.checkExpiryDate("lemon") << endl;
basket.removeFruit("apple");
cout << "expired date of apple: " << basket.checkExpiryDate("apple") << endl;
return 0;
}
以上代码实现了Fruit和Basket两个类,其中Basket类使用了vector容器进行管理。在main函数中对Basket类进行了测试,添加了三种水果对象,并对其中两种对象的保质期进行了输出;然后删除了一个水果对象,并对删除操作进行了测试。