2013-07-23 6 views
18

quando si passa tramite il seguente codice di esempio in Visual Studio 2012:Vector 'nessun operatore '[]' corrisponde a questi operandi' errore in Visual Studio guardare

std::vector<int> test; 
test.resize(1); 
test[0] = 4; 

posso impostare un orologio sul prova e controllare la sua 0a elemento. Tuttavia, se ho impostato un orologio sul test di [0], ottengo l'errore 'nessun operatore '[]' verifica questi operandi':

enter image description here

Come posso controllare il valore di prova [0] direttamente ?

+0

Avete compilato in modalità di rilascio o di debug? –

+0

Debug, buona domanda. –

+0

Si noti che gli iteratori e i riferimenti sono generalmente invalidati quando si chiama 'ridimensiona'. –

risposta

39

Ho trovato una soluzione che non dipende dall'interno della classe. La forma estesa della chiamata operatore sembra funzionare per me. In questo caso è il seguente codice:

v.operator[](0) 

ho provato in Visual C++ 2012.

2

Visual Studio non supporta l'overload dell'operatore dei contenitori stl [], è sufficiente impostare manualmente un orologio sull'elemento a cui si è interessati selezionandolo dall'elenco durante il debug.

EDIT: se si vuole esaminare un oggetto T all'interno di un vettore, assegnarlo a un oggetto T e impostare un orologio su di esso invece

+0

Cosa succede se il vettore ha 10000 elementi e vuoi vedere l'elemento 5000? C'è un modo conveniente per farlo? –

+0

sfortunatamente temo che dovrai farlo manualmente per la prima volta. – mewa

+0

Per quanto riguarda la modifica: non è un'opzione se stai passando una DLL. Cosa faresti in questo scenario? –

7

Come osservato @NateKohl, in Visual Studio 2012 (e versioni precedenti, eventualmente, come beh) v._Myfirst fornisce un puntatore ai dati vettoriali sottostanti, consentendo di guardare il vettore come se fosse un array.

0

se si utilizza 2D vecotr < vettore < string>> dp, e si desidera ottenere dp [i ] [j] nella finestra di controllo in VS2013, è possibile utilizzare (dp.operator [] (i)). operator [] (j)

vettore < vettore < string>> dp (n, vettore < stringa > (n, ""));

(dp.operator [] (i)). Operator [] (j)

Problemi correlati