Actuellement, j'ai cela se passe:Créer une std :: string avec un emplacement de données fixe
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);
}
};
Ce struct est censé être une interprétation d'un emplacement du pointeur dans un MMF. Au début, j'ai une table de hachage et juste après, ce sont ces HashItems en série. Je me demandais cependant s'il était possible de créer une chaîne std :: avec un caractère fixe * (pointant vers où se trouve actuellement la clé char) pour savoir où conserver les données réelles?
Cette mémoire est gérée manuellement de toute façon et avoir un champ de chaîne au lieu d'un champ char serait plus pratique.
'std :: string' peut être tellement plus qu'un littéral de chaîne constant - donc généralement la réponse est non. Pourquoi ne pas utiliser un pointeur où un pointeur est dû? Si vous devez réellement faire des chaînes sur votre clé (comme la comparaison), vous devrez les implémenter vous-même (c'est-à-dire utiliser la bibliothèque standard pour les chaînes C), mais vous éviterez également les frais d'allocation. – BeyelerStudios
Is est une faute de frappe, ou 'Key' est juste un seul char? –
@SergeBallesta Son un espace réservé pour récupérer le pointeur seulement – user81993