gpt4 book ai didi

c++ - 创建大量对象指针

转载 作者:行者123 更新时间:2023-11-27 23:49:03 25 4
gpt4 key购买 nike

我定义了这样一个类:

  class myClass {
private:
int count;
string name;
public:
myClass (int, string);
...
...
};

myClass::myClass(int c, string n)
{
count = c;
name = n;
}
...
...

我还有一个 *.txt 文件,每一行都有一个名称:

David
Jack
Peter
...
...

现在我逐行读取文件并为每一行创建一个新的对象指针并将所有对象存储在一个 vector 中。函数是这样的:

vector<myClass*> myFunction (string fileName)
{
vector<myClass*> r;
myClass* obj;
ifstream infile(fileName);
string line;
int count = 0;
while (getline(infile, line))
{
obj = new myClass (count, line);
r.push_back(obj);
count++;
}
return r;
}

对于小的 *.txt 文件我没有问题。但是,有时我的 *.txt 文件包含超过 100 万行。在这些情况下,程序会非常慢。您有什么建议可以让它更快吗?

最佳答案

首先,找到比标准流更快的 io。

其次,你能用字符串 View 代替字符串吗?它们是 C++17,但到处都有 C++11 和更早的版本。

第三,

myClass::myClass(int c, string n) {
count = c;
name = n;
}

应该阅读

myClass::myClass(int c, std::string n):
count(c),
name(std::move(n))
{}

这会对长名称产生影响。由于“小字符串优化”,短字符串没有。

第四,停止制作指针 vector 。创建值 vector 。

第五,失败时,找到一种更有效的方法来分配/取消分配对象。

关于c++ - 创建大量对象指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48148522/

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