目前我有這回事:創建的std :: string與固定數據位置
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);
}
};
這結構,就是要在MMF指針位置的解釋。在開始的時候,我有一個散列表,緊接着是那些串聯的HashItems。我想知道,如果有可能創建一個std ::字符串與一個固定的char *(指向char Key當前所在的位置)爲它保存實際數據的位置?
無論如何都手動管理內存,並且使用字符串字段而不是字符字段會更方便。
'std :: string'可以比常量字符串文字多得多 - 所以通常答案是否定的。爲什麼不在指針到期時使用指針?如果你需要在你的密鑰上真正做字符串(比如比較),你必須自己實現它們(即使用C字符串的標準庫),但是你也要避免分配開銷。 – BeyelerStudios
是一個錯字,還是'Key'只是一個字符? –
@SergeBallesta它是一個佔位符,僅用於檢索指針 – user81993