我刚开始学习向量,对于
size()
和capacity()
感到有些困惑。我对它们的了解很少。但是为什么在这个程序中两者都不同呢?即使array(10)
为10个元素腾出空间并初始化为0。
添加array.push_back(5)
之前
所以array.size();
是10,这是可以的。
所以array.capacity();
是10,这是可以的。
添加array.push_back(5)
之后
所以array.size();
是11,这是可以的(已经添加了10个0,然后push_back再添加一个元素5)
。
所以array.capacity();
是15,为什么呢?(难道它为一个int保留了5个块吗?)
。
#include <iostream>
#include <vector>
int main(){
std::vector<int> array(10); // make room for 10 elements and initialize with 0
array.reserve(10); // make room for 10 elements
array.push_back(5);
std::cout << array.size() << std::endl;
std::cout << array.capacity() << std::endl;
return 0;
}
flush
,就像endl
一样,否则消息可能不会及时出现或顺序错误。(至少这是我的经验) - underscore_d