drucken ein Vektor in c++
Ich bin neu in C++ und ich habe eine Funktion, die liest Elemente in einen Vektor und eine Funktion, druckt die Elemente. Das problem ist, dass die print-Funktion nicht gut funktioniert.
#include <iostream>
using namespace std;
1)
int read()
{
int elements,i;
cout<<"Give the number of elements:";
cin>>elements;
int v[elements];
for(i=1;i<=elements;i++)
{
cout<<"v["<<i<<"]=";
cin>>v[i];
}
return elements;
}
2)
void print_vector(int elements)
{
int i;
int v[elements];
for(i=1;i<=elements;i++)
{
cout<<v[i];
}
}
int main()
{
int n=read();
print_vector(n);
return 0;
}
Example:
Give the number of elements:5
v[1]=1
v[2]=2
v[3]=3
v[4]=4
v[5]=5
1348
Druckt er 1348 anstelle der 12345. Was ist falsch an der Funktion und wie kann ich es ändern, zu drucken, die passenden Elemente?
- Ihr code wird mit einem compiler-Erweiterung. Verwenden
std::vector
statt, die variable-Länge-array. - Bitte Lesen Sie whathaveyoutried.com und befolgen Sie die Ratschläge.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diesem erstellen Sie eine neue Integer-array.
Ist es relativ schwer zu passieren, um arrays, wie Sie müssen vorsichtig sein, wie Sie mit der Zuweisung von Speicher, und Sie hark zurück zu den alten Tagen der
C
.Wie Sie lernen
C++
können Sie eineclass
zum verwalten von Speicher-Probleme.std::vector
ist syntaktisch ähnlich zu einem array, aber sieht nach Zuweisung und ändern der Größe für Sie, und erinnert sich, was Größe ist es auch.Übergeben werden können Objekte an Funktionen per Referenz
&
, und innerhalb der Funktion wird es sein, die Lage zu ändern das übergebene Objekt aus und haben eine nachhaltige Wirkung, nachdem die Funktion beendet wurde.Also insgesamt:
Alternativ, wenn Sie möchten, Objekt-orientiert, sollten Sie auf der Suche nach Möglichkeiten der Gruppierung von Daten und Funktionen zusammen, so dass Sie vermeiden, durch um Daten insgesamt. In diesem Fall können Sie die Vektor-und die read-und print-Funktionen. Vielleicht nennen es
UserIntegers
:Verwendung:
Haben Sie Fehler in der drucken-Funktion
Erhöhen Sie den index habe ich zweimal und array-index beginnt mit 0, nicht 1; es endet am Anzahl (Elemente-1) nicht die Elemente, mittlerweile, Sie sind mit array, nicht Vektor.
In
read()
Lesen Sie die Elemente in einem lokalen arrayv
. Wenn die Funktion endet, wird das array Weg, als gut. Das gleiche passiert inprint_vector()
.Ein weiterer Fehler ist die Indizierung der Arrays. Sie Zugriff auf die Elemente von
1
zuelements
inclusive, die ignoriert das erste element0
an und greift schließlich ein element außerhalb der array-Grenzen (elements
).Müssen Sie reservieren ein array, besser ein
std::vector
außerhalb der beiden Funktionen und pass, die inread()
für Füll-und inprint_vector()
für den Druck.