1

我有一张专辑,上面有标题、发行年份和专辑中的歌曲。

我的数组是这样设置的:

std::string alb_name[256]['title', 'year', 'songs'];

但我希望歌曲关联数组最多容纳 20 首歌曲。是否有捷径可寻?我在编程 1 节课,但我想不出办法。任何帮助都会得到帮助。

4

3 回答 3

5

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;

等等

于 2013-04-14T20:53:02.163 回答
1

首先,您想使用数据库:在什么情况下值得使用数据库?

您将需要多个关联数组或映射。这将允许您根据不同的字段进行搜索和排序。

例如:
标题表

+----------+-------+  
| ID_Title | Title |  
+----------+-------+  

艺术家表

+-----------+-------------+
| ID_Artist | Artist name |
+-----------+-------------+

歌表

+-----------+----------+
| ID_Artist | ID_Title |
+-----------+----------+

您可以将歌曲表设置为按艺术家或标题排序。

还可以在网上搜索“数据库范式”。

于 2013-04-14T21:19:55.213 回答
0

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;
于 2013-04-14T20:57:29.043 回答