嗨,
我想了解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