在工作中的项目中使用了很多std :: list和std :: vector。由于很少需要随机插入,我开始将std :: lists更改为std :: vectors。但是每次切换时,结果代码大小都会增加(不是固定数量,而是平均大约1kB)。鉴于已经使用了std :: vector,我不明白为什么将std :: list切换到std :: vector会增加代码大小。有什么想法吗?使用的编译器是g ++。
答案 0 :(得分:2)
也许您添加了一个新类型的向量(例如,在您使用的原始代码vector<int>
中,现在添加了vector<string>
:它们是不同的类型,因此代码大小将增加到包括新型)。
答案 1 :(得分:0)
这是处于调试模式吗?如果是,则可以使用内联范围检查代码来增加代码大小。请注意,对于列表而言,这不是必需的,您只需要检查下一个节点是否为空。
答案 2 :(得分:0)
好的,没有进一步的细节我们只能猜测。
向量存储器是连续的(由标准保证),但列表存储器不是。因此,可能是编译器能够更好地矢量化和展开基于矢量的代码,这会导致更大的指令和更长的二进制代码。
答案 3 :(得分:-1)
std :: vector包含的功能和代码多于列表(列表中没有随机访问)