std::vector<char> VS std::string,哪个更快?

std::vector<char> VS std::string, which one is faster?

我研究元胞自动机有一段时间了,我选择实现它们的方式是创建一个二维元胞向量,其中每个元胞最初都是一个整数向量 (因为我希望每个单元格存储多个值),后来我将其更改为短无符号整数,然后更改为字符,因为我意识到最小的数据类型足以满足我的需求。 ..

我目前正在寻找提高性能的方法,这让我开始思考,如果我用字符串替换字符向量是否会更好地优化?

知道整个矩阵总是有一个固定的大小,这意味着二维网格的大小以及每个单元格的大小从一开始就被分配,并且在程序运行期间是不变的:

哪个访问速度更快?调整?复制?还是预成型一般操作?

此外,我知道我说过一切都有固定大小,但仅供将来参考,根据我对向量的表面知识,每次你都必须重新分配一个向量 push_back()加入新元素,字符串也是这样吗?

which one is faster?

视情况而定。哪一个,取决于你如何使用它们。您可以通过...测量来确定一个是否明显比另一个快。

它们都使用基本相同的抽象数据结构,并且对所有操作具有相同的渐近复杂度。

according to my surface-level knowledge of vectors, a vector has to be re-allocated everytime you push_back()

您的知识有误。 std::vector 只有在超过向量的 容量 时才被重新分配 ,这不是每次 push_back.同样适用于 std::string

从这个回复中 我认为我们可以观察到字符串比 g++ 和 clang++ 的向量更快