# Einfügen von Elementen und die unterschiedlichen Befehle 1. **Welche Datenstruktur gemeint ist** * **Liste/Array (sequenziell)** → Der häufigste Begriff ist `append` oder `push`, weil man typischerweise etwas **am Ende** der Liste anhängt. * **Menge (Set)** → Hier wird meist `add` verwendet, weil man ein Element zur Sammlung hinzufügt – egal, wo. (Die Reihenfolge spielt bei Mengen keine Rolle.) * **Assoziatives Array / Map / Dictionary (Schlüssel-Wert-Paare)** → Hier heißt es oft `put` oder `insert`, weil man einem Schlüssel einen Wert zuordnet, also „etwas ablegt“. 2. **Sprache / Konvention** * In **Python**: * `list.append(x)` → hängt hinten an. * `set.add(x)` → fügt hinzu, wenn es noch nicht existiert. * `dict[key] = value` oder `dict.update()` → entspricht `put`. * In **Java**: * `ArrayList.add(x)` → fügt ans Ende ein. * `HashSet.add(x)` → wie bei Mengen. * `Map.put(key, value)` → weil es ein Schlüssel-Wert-Paar ist. * In **C++ STL**: * `vector.push_back(x)` → am Ende einfügen. * `set.insert(x)` → fügt ein, wenn neu. * `map.insert({key, value})` oder `map[key] = value`. 3. **Semantik** * `add` → neutrales „füge hinzu“ (egal wo, meist Mengen oder Listen). * `append` → „hänge an das Ende an“ (nur sinnvoll für geordnete Sequenzen). * `put` → „lege unter einem Schlüssel ab“ (assoziative Strukturen). * `insert` → meist „füge an bestimmter Stelle ein“. ## Hier eine Übersicht | **Datenstruktur** | **Typische Operation** | **Python** | **Java** | **C++ STL** | **Bedeutung** | | ----------------------------- | ----------------------------------- | ----------------------- | ------------------- | ----------------------- | ----------------------------------------- | | **Liste / Array (geordnet)** | *am Ende anhängen* | `list.append(x)` | `ArrayList.add(x)` | `vector.push_back(x)` | hängt ein Element hinten an | | | *an bestimmter Stelle einfügen* | `list.insert(i, x)` | `list.add(i, x)` | `vector.insert(pos, x)` | fügt an einer Position ein | | **Menge (Set)** | *hinzufügen, falls nicht vorhanden* | `set.add(x)` | `HashSet.add(x)` | `set.insert(x)` | Reihenfolge egal, Duplikate nicht erlaubt | | **Schlüssel-Wert (Map/Dict)** | *einfügen oder überschreiben* | `dict[key] = value` | `Map.put(k, v)` | `map[key] = v` | ordnet einem Schlüssel einen Wert zu | | | *nur einfügen, wenn neu* | `dict.setdefault(k, v)` | `putIfAbsent(k, v)` | `map.insert({k, v})` | fügt nur ein, wenn Schlüssel fehlt |