Dyn. Array in C++

pepsi_gx

Erfahrenes Mitglied
Morgen!

ein paar Fragen über Array in C++ habe ich:

1. Ich arbeite in VC++, wie legt man ein dyn. Array an?
Ich hab z.B so was probiert, das aber gescheitert hat.
C++:
...
string strArray[];
...

2. wie erhält man die Anzahl von so nem dyn. Array?(betrifft auch ein stat. Array)

Ich hab mir überlegt, vielleicht kann ein VEKTOR mir helfen, aber bleibe lieber erst beim Array...
 
schau dir z. B. mal 'CStringArray' an.
Alternativ auch noch die std Sachen, wie z. B. std::list, std::vector, ...


grüssle :)
 
Hallo,
beim statischen Array musst du die Feldgröße konstant vorgeben, z.B:
Code:
const size_t groesse = 100;
string strArray[groesse];
Beim dynamischen Array reservierst du einen Speicherbereich mit "new" und merkst dir den Zeiger. WICHTIG: Du selbst musst diesen Bereich zum Ende hin wieder mit "delete" freigeben!
Code:
string* strArray = new string[100];
...
delete [] strArray;
Wenn du dich um Speicher und dessen Freigabe nicht kümmern möchtest, nimm z.B. vector.
Code:
#include <vector>
#include <string>
#include <iostream>
using namespace std;

vector<string> strArray;      // Vektorgröße ist noch 0

// Vektor füllen:
strArray.push_back("Banane");
strArray.push_back("Birne");

cout << "Vektor hat " << strArray.size() << " Elemente.\n"
 
Bezüglich deiner zweiten Frage: Solange du nicht vector etc nimmst, musst du dir die Größe selber irgendwo merken
 
Hallo pepsi_gx,

wenn dynamisch werden soll, kommst du um eine spezielle Container-Klasse dafür nicht drumherum (es sei denn, du willst die dafür nötige Speicherverwaltung selbst implementieren).
Vielleicht hilft dir das weiter.

Gruß
MCoder
 
Beim dynamischen Array reservierst du einen Speicherbereich mit "new" und merkst dir den Zeiger. WICHTIG: Du selbst musst diesen Bereich zum Ende hin wieder mit "delete" freigeben!
Code:
string* strArray = new string[100];
...
delete [] strArray;
Hallo,

danke für die Hilfe.

Ich möchte noch gerne wissen, wie kann ich durch so ein dynaisches Array iterativ laufen lassen? etwas wie:
Code:
for(int i=strArray.MIN; i<strArray.MAX; i++)
{
...
}
 
Hi.
Ganz normal, wie mit einem nicht-dynamischen Array auch. Der min. Index ist in C/C++ immer 0, der max. Index wird durch die angefordete Anzahl der Argumente bestimmt.

Gruß
Axo, danke das weiss ich ja schon. Was ich gerne habe, ist dass ich mich nicht exakt den Iterationsanfang und -ende wissen muss. z.B. beim vektor gibt's so was:
Code:
vector<int> x
for(int i=0; i<x.size(); ++i)
{
}
gibt's vielleich auch so was beim dyn. Array?
 
Axo, danke das weiss ich ja schon. Was ich gerne habe, ist dass ich mich nicht exakt den Iterationsanfang und -ende wissen muss. z.B. beim vektor gibt's so was:
Code:
vector<int> x
for(int i=0; i<x.size(); ++i)
{
}
gibt's vielleich auch so was beim dyn. Array?
Nein, wie sheel bereits sagte mußt du das selbst speichern.

Gruß
 
Zurück