Modernes C++ programmieren

Okt 23, 2024

lst-0741-godb.cpp

//#(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
}