. - -, . C++11 , .
, ref :
,
.
, .
:
,
.
, ,
, , , .
C++11 std::vector<>::shrink_to_fit() ( . 1- ). (tnx Psyduck). , , , , .
, capacity, ref
, , .
, > , .
, > .
, capacity pop_back, ref - , - .
, , ref capacity, , , , capacity .
:
#include <iostream>
#include <vector>
int main() {
const int N = 1000000;
std::vector<int> v1;
v1.reserve(N);
for (int i = 0; i < N; ++i) {
v1.push_back(i);
}
std::cout << v1.capacity() << " and size = " << v1.size() << std::endl;
for (int i = 0; i < N - 2; ++i) {
v1.pop_back();
}
std::cout << v1.capacity() << " and size = " << v1.size() << std::endl;
return 0;
}
:
1000000 and size = 1000000
1000000 and size = 2
capacity .
[EDIT]
question, , . :
1)
STL 17. ( , OP ) std::vector. "" , > , .
2)
, .
3)
, GCC - , , ( ), Allocator , Allocator reallocate(). , , .
.
[EDIT.2]
question :
Q: pop_back() capacity?
A: .
( , ), , pop_back() - .