我有一张带有标题的专辑,它出现的年份和专辑中的歌曲。
我的阵列设置如下:
std::string alb_name[256]['title', 'year', 'songs'];
但我希望歌曲关联数组最多能容纳20首歌曲。 是否有捷径可寻?我正在编程1课程,我无法找到一种方法来做到这一点。任何帮助都是适当的。
答案 0 :(得分:5)
C ++有一个叫做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;
等
答案 1 :(得分:1)
首先,您要使用数据库:At what point is it worth using a database?
您需要多个关联数组或地图。这将允许您根据不同的字段进行搜索和排序。
例如:
标题表
+----------+-------+
| ID_Title | Title |
+----------+-------+
艺术家表
+-----------+-------------+
| ID_Artist | Artist name |
+-----------+-------------+
歌曲表
+-----------+----------+
| ID_Artist | ID_Title |
+-----------+----------+
您可以将歌曲表设置为按艺术家或标题排序。
还在网上搜索“数据库普通表格”。
答案 2 :(得分:0)
struct
结构数据:
struct Album {
string title;
string year;
vector<string> tracks;
};
map
将值映射到另一个值:
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;