2016-07-17 17 views
-2

Ich brauche etwas zu tun, wie folgt vor:Wie initialisiert man einen std :: Vektor mit unterschiedlicher Größe nach der Deklaration in C++?

vector<int> v; 
int flag = 0; 

if (flag) { 
// initialize v with size 100; 
} else { 
// initialize v with size 0; 
} 
... 
if (flag) { 
// do something with v, given flag != 0 
} else { 
// don't do with v. 
} 

Was ist der richtige Weg, dies zu tun? Vielen Dank!

+10

Wenn Sie 'v' nur im wahren Zweig, warum es dort nicht erklären? – chris

+2

Verwenden Sie 'std :: vector.resize (size_t)'. Siehe auch Kommentar von @chris –

+1

@chris, danke. Weil ich '' v'' im späteren Teil des Codes verwenden darf (gegeben ''flag! = 0''). Könnte ich in diesem Fall '' '' '' '' '' '' '' ''in der richtigen Verzweigung deklarieren? –

Antwort

4

können Sie verwenden, um die std::vector::resize() Funktion, es zu tun:

if (flag) { 
    v.resize(100); 
} else { 
    // Don't need v at all; initialize v with size 0; 
} 
+0

Danke. Entschuldigung, ich habe nicht das ganze Bild gezeigt. Ich muss v im späteren Teil des Codes verwenden (mit '' flag! = 0''). Könnte ich in diesem Fall v im wahren Zweig immer noch als lokale Variable deklarieren? –

+0

@AaronZeng Nein, in diesem Fall die 1. Variante verwenden. –