std::vector<size_t> primes { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41 ,43 ,47 }; std::cout << "The size is " << primes.size() << std::endl; std::cout << "The capacity is" << primes.capacity() << std::endl;输出语句输出的容器大小和容董都为 15,这是由初始化列表决定的。然而,如果用 push_back() 函数添加一个元素,然后再输出容器的大小和容量,这时大小变为 16,容量变为 30。当容器的大小等于容量时,容器每次增加多少容量,取决于算法的实现。一些实现可能会双倍地增加容量。
auto nElements = primes.size();记住,对于 auto,需要使用 =,而不能使用初始化列表;否则,就不能确定 size_type 的类型。通常保存容器的大小是为了可以用索引遍历 vector 的元素。我们也可以使用循环来遍历 vector:
for(auto& prime : primes) prime *= 2;在前面,我们知道可以通过调用 reserve() 来增加容器的容量;这时元素的个数并没有改变。通过调用成员函数 resize() 可以改变容器大小,这也可能导致容量的增加。下面是 resize() 的几种用法:
std::vector<int> values {1,2,3}; values.resize (5); values.resize (7, 99); values.resize (6);第一个 resize() 调用会把元素的个数变为参数指定的值,所以会增加两个用默认值初始化的元素。如果添加了一个元素,导致超过当前容器的容景,容量会自动增加。
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有