我有一张专辑,上面有标题、发行年份和专辑中的歌曲。
我的数组是这样设置的:
std::string alb_name[256]['title', 'year', 'songs'];
但我希望歌曲关联数组最多容纳 20 首歌曲。是否有捷径可寻?我在编程 1 节课,但我想不出办法。任何帮助都会得到帮助。
我有一张专辑,上面有标题、发行年份和专辑中的歌曲。
我的数组是这样设置的:
std::string alb_name[256]['title', 'year', 'songs'];
但我希望歌曲关联数组最多容纳 20 首歌曲。是否有捷径可寻?我在编程 1 节课,但我想不出办法。任何帮助都会得到帮助。
C++ 有一个叫做 a 的东西std::map
,它作为一个关联数组工作。
#include <map>
#include <string>
#include <vector>
struct AlbumData
{
int year;
std::vector<std::string> songs;
};
std::map<std::string, AlbumData> albums;
AlbumData d;
d.year = 1966;
d.songs.push_back("A Day in the Life");
d.songs.push_back("When I'm 64");
albums["Sgt Pepper's Lonely Hearts Club Band"] = d;
等等
首先,您想使用数据库:在什么情况下值得使用数据库?
您将需要多个关联数组或映射。这将允许您根据不同的字段进行搜索和排序。
例如:
标题表
+----------+-------+
| ID_Title | Title |
+----------+-------+
艺术家表
+-----------+-------------+
| ID_Artist | Artist name |
+-----------+-------------+
歌表
+-----------+----------+
| ID_Artist | ID_Title |
+-----------+----------+
您可以将歌曲表设置为按艺术家或标题排序。
还可以在网上搜索“数据库范式”。
Astruct
结构数据:
struct Album {
string title;
string year;
vector<string> tracks;
};
Amap
将一个值映射到另一个值:
map<string, Album> albums;
Album album;
album.title = "Acoustic Sketches";
album.year = "1996";
album.tracks.push_back("Metamorphosis");
album.tracks.push_back("Rivulets");
//.. etc
albums[album.title] = album;