vector <bool>

时间:2019-04-25 12:48:24

标签: c++ vector stl

嗨, 我想了解vector<bool>的rinkle_to_fit方法的可能问题。 我有下一段代码:

#include <cstdlib>
#include <iostream>
#include <vector>

int main(int argc, char *argv[]) {
    std::vector<bool> v(100);
    printf("size: %d \n", v.size());
    printf("capacity: %d \n", v.capacity());

    v.reserve(10000);
    printf("capacity after reserve: %d \n", v.capacity());
    v.shrink_to_fit();
    printf("shrinked capacity: %d \n", v.capacity());

    return 0;
}

我创建了大小等于100的向量v。下一步,我打印了该向量的容量。应该是> =100。它是128。似乎可以。 下一个我保留了10000。在这种情况下为10048。然后我执行了rinkle_to_fit方法并打印了容量

shrinked capacity: 10048

vector<bool>可以吗?为什么?

因为我使用了https://www.onlinegdb.com/,并且打印了源代码中的最后一行

shrinked capacity: 128

这是vector<bool>高效使用空间的主要原因,还是在stl库中有问题?

我使用gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0

0 个答案:

没有答案