//#(compile) c++; compiler:g132; options:-O3 -std=c++23; libs:-
// https://godbolt.org/z/xYsherrjs
#include <vector>
#include <iostream>
#include <format> // C++20
using namespace std;
ostream& operator<<(ostream&os, const vector<int> &vec) {
for(auto &elem : vec) { os << elem << ' '; } return os;
}
int main() {
vector<int> data {}; // erzeugt einen leeren vector
data.reserve(3); // Platz für 3 Elemente
cout << format("{}/{}\n", data.size(), data.capacity()); // 0/3
data.push_back(111); // ein Element hinzufügen
data.resize(3); // Größe verändern; hier fügt es neue Elemente an
data.push_back(999); // noch ein Element hinzufügen
cout << format("{}/{}\n", data.size(), data.capacity()); // 4/6
cout << data << '\n'; // 111, 0, 0, 999
data.push_back(333); // noch ein Element anfügen
cout << data << '\n'; // 111, 0, 0, 999, 333
data.reserve(1); // nichts passiert, denn capacity() > 1
data.resize(3); // schrumpfen; Elemente werden entfernt
cout << data << '\n'; // 111, 0, 0
cout << format("{}/{}\n", data.size(), data.capacity()); // 3/6
data.resize(6, 44); // noch mal vergrößern, mit 44en auffüllen
cout << data << '\n'; // 111, 0, 0, 44, 44, 44
}