gpt4 book ai didi

c++ - C++中的动态大小的类

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:06:35 27 4
gpt4 key购买 nike

我想创建一个包含单词的类 Word。我将为字典中的几乎每个单词(如此多)创建一个类的实例——不,我不能使用树结构来为我的特定应用程序存储它。当然,字符串的大小可能会有所不同,我不想破坏内存。我想在类里面这样做:

class Word {
public:
...
private:
int len;
LetterData letters[];
};

然后动态分配 Word 使用:

Word *pNewWord = malloc(sizeof(Word)+sizeof(LetterData)*len);   

我意识到这不是很 C++ 风格。所以我的问题是:首先,是否有更好的方法来做到这一点,如果没有,这会导致问题吗? Word 不会继承任何其他类类型(我很确定继承会杀死它......)。

注意:内存使用和速度非常重要——我想避免每个单词有一个额外的指针,我想避免每次访问有一个额外的指针延迟...

最佳答案

我的出发点是构建目前仅是 std::string 的代理类:

class Word
{
public:
std::size_t getSize() const; // in place of your 'len' member.

private:
std::string m_data;
};

然后,如果我的 Word 类 cf 出现性能问题,我将构建我的程序的其余部分,仅在那时。该程序的其他区域我会尝试重构它,将 m_data 替换为其他内容。

我认为这是不必要的,而您对 C++ 标准库对象没有足够性能的怀疑是没有根据的。

关于c++ - C++中的动态大小的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46770064/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com