Кажется, что у вас есть определение "ключ" и "данные" в обратном порядке.
Ваш пример показывает, что вы группируете два "ключа" под одним значением "данных". В информатике значение, по которому вы группируете, называется ключом. Ключ, безусловно, может быть связан с двумя значениями данных.
Например, для объекта person_data
поля house_number
и phone_number
будут членами данных. Они, конечно, не были бы ключами; номера домов не уникальны, и не у всех есть номер телефона.
Следовательно, вы можете использовать просто std::vector<person_data>
. Если у вас do есть правильный ключ для людей (значение, которое однозначно идентифицирует каждого человека), вы можете отсортировать по этому и иметь std::set<person_data>
.