用c++写一个有关乐器价格顺序表,类包括删除,查找,插入等
时间: 2024-09-17 11:08:27 浏览: 51
在C++中,你可以创建一个名为`Instrument`的类来表示乐器,包含价格属性以及删除、查找和插入操作。下面是一个简单的示例:
```cpp
#include <iostream>
#include <vector>
#include <algorithm> // 使用这个头文件来进行排序
class Instrument {
public:
// 构造函数
Instrument(int price) : price_(price) {}
// 用于比较乐器价格的辅助函数
bool comparePrice(const Instrument& other) const {
return price_ < other.price_;
}
// 插入操作
void insert(Instrument newInstr) {
instruments_.push_back(newInstr);
std::sort(instruments_.begin(), instruments_.end(), comparePrice); // 按价格排序
}
// 删除操作(假设通过价格查找)
void removeByPrice(int targetPrice) {
auto it = std::find_if(instruments_.begin(), instruments_.end(), [targetPrice](const Instrument& instr) { return instr.price_ == targetPrice; });
if (it != instruments_.end()) {
instruments_.erase(it);
}
}
// 查找操作
const Instrument* findPrice(int targetPrice) const {
for (const Instrument& instr : instruments_) {
if (instr.price_ == targetPrice) {
return &instr;
}
}
return nullptr; // 如果未找到,则返回nullptr
}
private:
int price_; // 乐器价格
std::vector<Instrument> instruments_; // 存储乐器的容器,按价格排序
};
int main() {
// 创建一些乐器并进行操作
Instrument guitar(500), piano(1500), flute(300);
guitar.insert(piano);
guitar.insert(flute);
std::cout << "Instrument list before removal:\n";
for (const Instrument& instr : guitar.instruments_) {
std::cout << "Price: " << instr.price_ << ", Name: [instrument type]\n"; // 显示简化的名称
}
guitar.removeByPrice(500);
std::cout << "\nAfter removing the guitar:\n";
Instrument* foundInstr = guitar.findPrice(1500);
if (foundInstr) {
std::cout << "Found instrument with price 1500: ";
// 打印详细信息...
} else {
std::cout << "Could not find instrument with price 1500.\n";
}
return 0;
}
```
在这个例子中,我们首先创建了一个`Instrument`类,它有价格属性,并实现了插入、删除和查找功能。然后,在`main`函数中演示了如何使用这些操作。
阅读全文