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

extra
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;
}
  1. 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
  1. 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
  1. 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