Vektor c++ darstellen?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Bleibe dabei doch bei der klassischen, einfachen for-Schleife:

#include <iostream>
#include <vector>

using namespace std;

int main()
{
  vector<int> numbers;

  for (int i = 0; i < 1001; i += 4) {
    numbers.push_back(i);
  }

  for (auto number : numbers) {
    cout << number << endl;
  }

  return 0;
}

Die erste Schleife läuft in Viererschritten, je Durchlauf wird der aktuelle Zähler an den Vektor hinten angehängt.

Die zweite Schleife ist nur zur Demonstration, dass der Vektor befüllt wurde. An sich könnte man beide Schleifen einfach miteinander kombinieren.

Bei deinem Programm gibt es verschiedene Fehler.

1) Die erste Schleife würde durch alle Elemente deines definierten Arrays { 1001 } laufen. Das wäre nur das eine Element mit dem Wert 1001.

for (auto i : { 1001 }) { 

2) Die Zuweisung ist nicht logisch:      

vec[i + 4] = i;

Sie würde immer den aktuellen Index + 4 vom Vektor nehmen und dem den aktuellen Index zuweisen. Angenommen, du würdest von 0 bis 3 (inklusive) laufen, würde der Vektor danach grafisch so dargestellt werden können:

[0]
[1]
[2]
[3]
[4] = 0
[5] = 1
[6] = 2
[7] = 3

Die ersten vier Stellen hätten den initialen Wert 0.

Doch einmal abgesehen davon würdest du in jedem Fall versuchen, auf einen Index zuzugreifen, der noch gar nicht existiert. Folglich hättest du schon beim ersten Durchlauf einen Fehlerfall, selbst wenn du nichts auf den Index draufrechnen würdest.

vec[i] = i // error

iIovemusic 
Fragesteller
 03.12.2019, 04:18

Vielen Dank. Ich beschäftige mich gerade mit Vektoren, wollte einmal schauen, wie man hier mit Vektoren umgeht. Ich finde Vektoren sehr interessant, da sie hier komischerweise keine feste Größe haben und sich der Anzahl der Elemente dynamisch anpassen.

0

Warum willst Du nur jedes vierte Element anfassen?

Da hast DU wohl einen kleinen Denkfehler ;-).