В настоящее время я это происходит:Создать зЬй :: строку с фиксированным адресом данных
struct HashItem {
uint32_t Value;
char Key;
uint32_t GetSize() {
return 4 + GetKey().size();
}
void SetKey(std::string &Key) {
memcpy(&(this->Key), Key.c_str(), Key.size());
}
std::string GetKey() {
return std::string(&Key);
}
static HashItem* Cast(void* p) {
return reinterpret_cast<HashItem*>(p);
}
};
Это структура предназначается, чтобы быть интерпретация местоположения указателя в ММФ. В начале этого, у меня есть хеш-таблица и сразу после того, как это те HashItems в серии. Мне было интересно, хотя если бы можно было создать std :: string с фиксированным char * (указывая на то, где в данный момент находится ключ ключа), где он хранит фактические данные?
Эта память управляется вручную в любом случае, и поле string, а не поле char будет более удобным.
'std :: string' может быть гораздо больше, чем константный строковый литерал, поэтому в целом ответ отрицательный. Почему бы не использовать указатель, в котором должен быть указатель? Если вам нужно на самом деле создавать струнные элементы на вашем ключе (например, сравнение), вам придется реализовать их самостоятельно (т. Е. Использовать стандартную библиотеку для строк C), но вы также избегаете накладных расходов. – BeyelerStudios
Есть опечатка, или 'Key' - это всего лишь один символ? –
@SergeBallesta Его заполнитель для извлечения указателя только – user81993