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



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

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

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

哪个访问速度更快?修改复制还是预制棒的一般操作?

此外,我知道我说过所有东西都有一个固定的大小,但只是为了将来参考,根据我对向量的表面级知识,每次你把一个新元素推到向量中时,向量都必须重新分配,字符串就是这样吗?

哪个更快?

取决于。任何一种,取决于你如何使用它们。你可以通过…测量来发现一个是否比另一个快。

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

根据我对向量的表面级知识,每次按下((时都必须重新分配向量

您的知识不正确。只有当向量的容量超过时,std::vector才需要重新分配,这并不是每次推送_返回时的情况。适用于std::string

从此响应https://stackoverflow.com/a/25581325/15824294我认为我们可以观察到字符串比向量更快,同时使用g++和clang++

最新更新