Containers in Practice
Vector Growth
Vectors keep items in order and grow as new values are appended.
vector
A `std::vector` stores values in order and supports indexed access.
push_back
`push_back` appends a new value to the end of the vector.
Vector Growth
vector_growth.cpp
Replay: real traced execution (multi-file project)
#include <iostream>
#include <vector>
int main() {
int extra = 8;
std::vector<int> scores{4, 6};
scores.push_back(extra);
int size = static_cast<int>(scores.size());
int last = scores.back();
std::cout << "size=" << size << std::endl;
std::cout << "last=" << last << std::endl;
return 0;
}
#include <iostream>
#include <vector>
int main() {
int extra = 3;
std::vector<int> scores{4, 6};
scores.push_back(extra);
int size = static_cast<int>(scores.size());
int last = scores.back();
std::cout << "size=" << size << std::endl;
std::cout << "last=" << last << std::endl;
return 0;
}
#include <iostream>
#include <vector>
int main() {
int extra = 12;
std::vector<int> scores{4, 6};
scores.push_back(extra);
int size = static_cast<int>(scores.size());
int last = scores.back();
std::cout << "size=" << size << std::endl;
std::cout << "last=" << last << std::endl;
return 0;
}
extra ← 8, scores ← [4, 6], size ← 3, last ← 8
4int main() {5 int extra→ 8 = 8; //@extra=3, 1267 std::vector<int> scores→ [4, 6]{4, 6};8 scores→ [4, 6, 8].push_back(extra8);910 int size→ 3 = static_cast<int>(scores[4, 6, 8].size());11 int last→ 8 = scores[4, 6, 8].back();1213 std::cout << "size=" << size3 << std::endl;14 std::cout << "last=" << last8 << std::endl;15 return 0;16}outputsize=3 last=8
extra ← 3, scores ← [4, 6], size ← 3, last ← 3
4int main() {5 int extra→ 3 = 3;67 std::vector<int> scores→ [4, 6]{4, 6};8 scores→ [4, 6, 3].push_back(extra3);910 int size→ 3 = static_cast<int>(scores[4, 6, 3].size());11 int last→ 3 = scores[4, 6, 3].back();1213 std::cout << "size=" << size3 << std::endl;14 std::cout << "last=" << last3 << std::endl;15 return 0;16}outputsize=3 last=3
extra ← 12, scores ← [4, 6], size ← 3, last ← 12
4int main() {5 int extra→ 12 = 12;67 std::vector<int> scores→ [4, 6]{4, 6};8 scores→ [4, 6, 12].push_back(extra12);910 int size→ 3 = static_cast<int>(scores[4, 6, 12].size());11 int last→ 12 = scores[4, 6, 12].back();1213 std::cout << "size=" << size3 << std::endl;14 std::cout << "last=" << last12 << std::endl;15 return 0;16}outputsize=3 last=12