C++标准没有明确规定小对象优化。但是,许多STL实现都采用了小对象优化。下面是一个示例:
#include
#include
using namespace std;
int main() {
vector v;
for (int i = 0; i < 10; ++i) {
v.push_back(i);
cout << "Size: " << v.size() << ", Capacity: " << v.capacity() << endl;
}
return 0;
}
输出结果:
Size: 1, Capacity: 1
Size: 2, Capacity: 2
Size: 3, Capacity: 3
Size: 4, Capacity: 4
Size: 5, Capacity: 5
Size: 6, Capacity: 6
Size: 7, Capacity: 7
Size: 8, Capacity: 8
Size: 9, Capacity: 9
Size: 10, Capacity: 10
可以看到,在向vector中添加元素时,容量一直增加。这表明底层实现会根据需求自动改变大小,以便节省内存。但是,这种优化取决于具体的实现,不能假定所有的STL实现都会进行小对象优化。