Какова наилучшая структура данных для хранения 1 ключа и 2 значений в C ?

#c #data-structures

#c #структуры данных

Вопрос:

Я хочу хранить данные, которые выглядят следующим образом:

 NAME SURNAME BIRTHDATE
 

например:

 {{"Anna", "Smith", "16/06/1965"}
{"Bob", "Smith", "26/07/1982"}}
 

Я думаю, что я могу сам создать такую структуру:

 struct PEOPLE {
    string name;
    string surname;
    string birthdate;
};
 

Но есть ли какая-либо структура данных, которую я могу использовать для этой цели? Например, где имя — это ключ, а фамилия и даты рождения — значения?

Комментарии:

1. std::map<std::string, std::pair<std::string, std::string>> , std::map<std::string, PEOPLE> ?

2. Каким должен быть ваш «уникальный ключ»? Подходите к этому как к проблеме с базой данных.

3. Кроме того, вам следует прочитать «Ложь, которую программисты считают именами » Патрика Маккензи .

Ответ №1:

У вас всегда может быть что-то вроде:

 using Key   = std::string;
using Value = std::pair<std::string, std::string>;
 

и используйте его как:

 using HumanBeing = std::pair<Key, Value>;
 

или:

 std::map<Key, Value>
 

Конечно, псевдонимы не так уж необходимы 🙂

Ответ №2:

Вы могли бы попробовать использовать map или multimap с name ключом as и a struct surname , birthdate , и все, что вы хотите в нем) в качестве значения, но обратите внимание, что, как бы вы это ни делали, в вашем приложении вы, вероятно, захотите, чтобы ключ был уникальным для каждой записи, и name , возможно, этого не будет.