gpt4 book ai didi

c++ - 在 vector 中存储重复字符串时节省内存?

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

我正在使用 C++,它是 STL。我有一个大 (100MB+) 文本文件。该文件只有很多“单词”(由空格分隔的字符串),例如:

sdfi sidf ifids sidf assd fdfd fdfd ddd ddd

我需要将这些“单词”中的每一个放入一个 vector 中:

vector<string> allWordsInFile;

所以对于我从文件中读取的每个单词,我会:

allWordsInFile.push_back(word);

该文件有很多重复的单词,我正在寻找节省内存的方法。每个单词都需要在 vector 中的正确位置表示。如果我可以只列出 vector 外的所有单词,然后只在 vector 中放置一个引用,那就太好了,但据我所知,不可能在 vector 中放置引用。然后我想到了只存储指向单词的指针,但是每个单词的长度太短了,我认为它不会有太大区别吗? (每个指针在我的系统上都是 4 个字节,大多数字符串的大小可能大致相同)。

有人可以建议另一种方法来解决这个问题吗?

最佳答案

boost::flyweight在这里看起来很有用。

事实上tutorial example显示boost::flyweight<std::string>用于压缩数据库中的重复名称。

关于c++ - 在 vector 中存储重复字符串时节省内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/811088/

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