1>C:\Users\24624\Desktop\杂货铺\数据结构课程设计\AI写的乐库管理系统\AI写的乐库管理系统.cpp(71,9): error C3861: “sort”: 找不到标识符
时间: 2023-07-07 15:45:17 浏览: 92
这个错误是由于程序中调用了 `sort` 函数,但是没有包含相应的头文件。`sort` 函数属于 C++ 标准库中的算法,需要包含头文件 `<algorithm>` 才能使用。
修改代码,在文件头部添加 `#include <algorithm>` 即可。
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <algorithm> // 添加此行
using namespace std;
// 歌曲信息结构体
struct Song {
string name; // 歌曲名
string artist; // 歌手名
string album; // 专辑名
int year; // 发行年份
};
// 乐库管理系统类
class MusicLibrary {
public:
// 添加歌曲
void addSong(const Song& song) {
songs.push_back(song);
}
// 删除歌曲
void deleteSong(int index) {
if (index < songs.size()) {
songs.erase(songs.begin() + index);
}
}
// 编辑歌曲信息
void editSong(int index, const Song& song) {
if (index < songs.size()) {
songs[index] = song;
}
}
// 按照歌曲名搜索歌曲
vector<Song> searchSongByName(const string& name) const {
vector<Song> result;
for (const auto& song : songs) {
if (song.name == name) {
result.push_back(song);
}
}
return result;
}
// 按照歌手名搜索歌曲
vector<Song> searchSongByArtist(const string& artist) const {
vector<Song> result;
for (const auto& song : songs) {
if (song.artist == artist) {
result.push_back(song);
}
}
return result;
}
// 按照专辑名搜索歌曲
vector<Song> searchSongByAlbum(const string& album) const {
vector<Song> result;
for (const auto& song : songs) {
if (song.album == album) {
result.push_back(song);
}
}
return result;
}
// 按照发行年份排序歌曲
void sortSongByYear() {
sort(songs.begin(), songs.end(), [](const Song& a, const Song& b) {
return a.year < b.year;
});
}
// 打印所有歌曲信息
void printAllSongs() const {
for (int i = 0; i < songs.size(); i++) {
cout << "歌曲信息 #" << (i + 1) << ":" << endl;
cout << "歌曲名: " << songs[i].name << endl;
cout << "歌手名: " << songs[i].artist << endl;
cout << "专辑名: " << songs[i].album << endl;
cout << "发行年份: " << songs[i].year << endl;
cout << endl;
}
}
private:
vector<Song> songs; // 存储所有歌曲信息
};
// 主函数
int main() {
MusicLibrary library;
// 添加歌曲
Song song1 = { "七里香", "周杰伦", "七里香", 2004 };
Song song2 = { "稻香", "周杰伦", "魔杰座", 2008 };
library.addSong(song1);
library.addSong(song2);
// 打印所有歌曲信息
cout << "所有歌曲信息:" << endl;
library.printAllSongs();
// 编辑歌曲信息
Song song3 = { "夜曲", "周杰伦", "范特西", 2001 };
library.editSong(0, song3);
cout << "编辑后的歌曲信息:" << endl;
library.printAllSongs();
// 删除歌曲
library.deleteSong(1);
cout << "删除后的歌曲信息:" << endl;
library.printAllSongs();
// 搜索歌曲
cout << "搜索歌曲结果:" << endl;
vector<Song> result = library.searchSongByArtist("周杰伦");
for (const auto& song : result) {
cout << song.name << " - " << song.album << endl;
}
// 排序歌曲
cout << "按照发行年份排序后的歌曲信息:" << endl;
library.sortSongByYear();
library.printAllSongs();
return 0;
}
```
阅读全文