Ist es möglich, ein C++ - Programm zu schreiben, das eine vom Benutzer eingegebene Anzahl von Elementen zuweist und ihnen vom Benutzer eingegebene Werte zuweist Element der gerade zugewiesenen, ohne Zeigerarithmetik zu verwenden? Ich frage das, weil das menschliche Gehirn nicht denkt, dass "das 7. Element die Adresse des ersten Elements + 6 Schritte voraus ist"; Es kann dynamisch dynamisch erzeugte Elemente und ihre aktuellen Eigenschaften binden. Wenn dies in C++ möglich ist, würde dies natürlich die Programmausführung beschleunigen.Direkt auf ein beliebiges Element mit dynamischer Länge verweisen Anzahl der Elemente ohne Zeigerarithmetik
Beispiel-Code zu klären, was ich bin auf:
//
// main.cpp
// This code doesn't compile
// but it's for clarification purposes
// Created by Måns Nilsson on 2017-01-02.
// Copyright © 2017 Måns Nilsson. All rights reserved.
//
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
int currval;
int otherval;
int arrlength;
cout<<"How many elements would you like to allocate?"<<endl<<"Your input: ";
cin >> arrlength;
int numlist[arrlength];
//User inputs the element values and variables are assigned to
//point directly to each element
for(int i=0;i<arrlength;i++) {
cout<<"Enter a value for element "<<(i + 1)<<": ";
cin >> currval;
numlist[i] = currval;
int &var(i) = numlist[i];
}
cout<<"Enter the index of the element you want to modify: ";
cin >> currval;
cout<<"Enter a new value for element "<<currval<<": ";
cin >> otherval;
var(currval-1) = otherval;
return 0;
}
* "Wenn dies in C++ möglich ist, würde es natürlich die Programmausführung beschleunigen." * Huh? Warum denkst du das? –
Ich bin mir nicht sicher, ob ich die Frage verstehe. Wenn Sie sagen, "int * arr = new int [someSize];", können Sie 'arr [7]' schreiben - es hat genau die gleiche Bedeutung wie '* (arr + 7)'. Was scheint wieder das Problem zu sein? –
Sie beginnen bei der Adresse des ersten Elements und fügen 6 hinzu, so dass Sie zu * (arr + 6) gelangen, welches die Adresse des 7. Elements ist. Sie können jedoch nicht dynamisch neue Variablen erstellen, um die Elementadressen direkt zu kennen. Es verwendet immer noch Zeigerarithmetik. –