gpt4 book ai didi

C++ (gcc/g++) 两个巨大的字符串数组需要很长时间才能编译

转载 作者:可可西里 更新时间:2023-11-01 18:25:40 27 4
gpt4 key购买 nike

对于用 C++ 编写的程序,我需要两个包含数据的巨大字符串数组。

它们在头文件中定义如下:

#include <string>
static const string strdataA[30000]={"this is the first line of the data",
"the second line of data",
"other stuff in the third line",

下降到

    "last line."};
//second array strings
static const string strdataB[60000]={"this is the first line of the data",
"the second line of data",
"other stuff in the third line",

下降到

    "last line."};

但是当我用 g++ 编译它时,它花了很长时间,我还没有看到它完成。它还使用大约 2 GB 的虚拟内存。所以我注释掉了strdataB[],然后程序确实编译了,但还是过了很长时间。可执行文件只有大约 8 Mb,并且运行良好。

我该怎么做才能加快编译过程?我不介意是否必须更改代码,但我不想使用外部文件加载。我想要一个数组,因为它在程序中非常适合我。

我在网上某处读到“static const”应该可以解决问题,但我从经验中了解到它不能。

非常感谢您提出任何建议!

最佳答案

你不应该为此使用 std::string。使用普通的旧 const char*:

const char * const strdataA[30000] = {
"one",
"two",
//...
};

static 关键字在这里应该没有太大区别。

这样,字符串本身将作为简单文字存储在只读数据部分,而数组本身将只是一个指针数组。此外,您还可以避免在运行时运行字符串构造函数/析构函数。

关于C++ (gcc/g++) 两个巨大的字符串数组需要很长时间才能编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15420839/

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