Есть некоторые сообщения, связанные с этим, но мне нужно что-то прояснить. У меня есть структура в моей программе, и одно из ее полей - массив фиксированного размера (16). Это приведенный пример указанной структуры:
my_struct{
unsigned char my_field[16];
....
// some more fields here
};
Я хочу использовать это поле в качестве ключа для карты, и вот мой вопрос. - Есть ли способ использовать такую карту, как
map<unsigned char[16], some_defined_structure>
? В противном случае, что было бы лучшим способом как-то скопировать этот массив символов, чтобы он соответствовал массиву или векторной структуре для последующего вставки на карту?
unsigned char[16]
не подходит для ключевой карты. он не соответствует требованиям. Но std::array<unsigned char,16>
делает.
std::copy(std::begin(my_obj.my_field), std::end(my_object.my_field), x.begin())
(где x
- это std::array<unsigned char, 16>
) а затем скопируйте x
в map
.
std::array<unsigned char, 16>
это просто.std::array
- это хорошо), или там есть какой-то разделитель? (для последнего вы можете, например, использоватьstd::array
и пользовательскую функцию сравнения, или извлечь соответствующие символы вstd::string
)