#include <cstring> #include <vector>含有vector相关的语句是什么意思,有简单的替换吗
时间: 2023-12-07 07:03:38 浏览: 98
这些语句是 C++ STL(标准模板库)中的头文件,其中 <vector> 是用于操作动态数组的头文件,提供了 vector 容器类。使用 vector 容器类可以方便地实现动态数组的操作,比如增加、删除和访问元素等。而 <cstring> 是用于操作字符串的头文件,提供了一些字符串处理函数。
如果您不想使用 vector 容器类,可以使用 C++ 的数组来实现动态数组的操作。例如,可以使用 new/delete 运算符动态分配和释放内存,或者使用 malloc/free 函数来实现。但是,这样做需要手动管理内存,容易出现内存泄漏和内存泄漏等问题。
下面是使用数组实现餐厅管理系统的示例代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
// 菜品类
class Dish {
private:
string name; // 菜品名称
double price; // 菜品价格
public:
Dish(string name, double price) : name(name), price(price) {}
void setName(string name) {
this->name = name;
}
string getName() {
return name;
}
void setPrice(double price) {
this->price = price;
}
double getPrice() {
return price;
}
};
// 餐厅类
class Restaurant {
private:
Dish* menu; // 菜单数组
int menuSize; // 菜单大小
Dish* order; // 顾客点单数组
int orderSize; // 顾客点单大小
public:
Restaurant() : menu(nullptr), menuSize(0), order(nullptr), orderSize(0) {}
~Restaurant() {
delete[] menu;
delete[] order;
}
// 增加菜品
void addDish(Dish dish) {
Dish* temp = new Dish[menuSize + 1];
for (int i = 0; i < menuSize; i++) {
temp[i] = menu[i];
}
temp[menuSize] = dish;
delete[] menu;
menu = temp;
menuSize++;
}
// 删除菜品
void deleteDish(string name) {
for (int i = 0; i < menuSize; i++) {
if (menu[i].getName() == name) {
for (int j = i; j < menuSize - 1; j++) {
menu[j] = menu[j + 1];
}
menuSize--;
break;
}
}
}
// 展示菜单
void showMenu() {
cout << "菜单:" << endl;
for (int i = 0; i < menuSize; i++) {
cout << menu[i].getName() << " " << menu[i].getPrice() << endl;
}
}
// 顾客点单
void orderDish(string name) {
for (int i = 0; i < menuSize; i++) {
if (menu[i].getName() == name) {
Dish* temp = new Dish[orderSize + 1];
for (int j = 0; j < orderSize; j++) {
temp[j] = order[j];
}
temp[orderSize] = menu[i];
delete[] order;
order = temp;
orderSize++;
break;
}
}
}
// 显示顾客点单信息
void showOrder() {
double totalPrice = 0;
cout << "顾客点单信息:" << endl;
for (int i = 0; i < orderSize; i++) {
cout << order[i].getName() << " " << order[i].getPrice() << endl;
totalPrice += order[i].getPrice();
}
cout << "总价:" << totalPrice << endl;
}
};
int main() {
Restaurant restaurant;
restaurant.addDish(Dish("鱼香肉丝", 28.0));
restaurant.addDish(Dish("宫保鸡丁", 32.0));
restaurant.addDish(Dish("回锅肉", 38.0));
restaurant.showMenu();
restaurant.orderDish("鱼香肉丝");
restaurant.orderDish("宫保鸡丁");
restaurant.showOrder();
restaurant.deleteDish("鱼香肉丝");
restaurant.showMenu();
return 0;
}
```
这个示例代码使用了 Dish 类和 Restaurant 类,其中菜单和顾客点单分别用动态数组 menu 和 order 实现。在增加菜品、删除菜品、展示菜单、顾客点单和显示顾客点单信息等功能中,使用了动态数组的操作。需要注意的是,在使用动态数组时,需要手动管理内存,以避免出现内存泄漏和内存泄漏等问题。
阅读全文