Mi piacerebbe utilizzare std::array
da C++ 11 come un campo della mia stessa classe. Richiede due parametri del modello (prima definisce il tipo di dati, il secondo definisce le dimensioni di un array).C++ 11 std :: array
Ma conosco il secondo parametro solo nel costruttore. Non ho familiarità con lo standard C++ 11, ma suppongo che sia impossibile impostare un parametro template durante l'esecuzione.
Esistono alternative per std::array
? std::vector
è probabilmente un po 'troppo, perché non cambierò mai la dimensione di esso.
Direi di usare uno std :: vector su un unique_ptr, il primo è compatibile con tutte le funzioni di libreria standard che funzionano sugli iteratori. In effetti, l'intero punto di std :: array è di fornire tale interfaccia su un array normale. –
@ user1131467: Infatti, 'std :: vector' è molto più conveniente; ma l'OP ha espresso preoccupazione per l'efficienza, quindi forse è importante salvare pochi byte. –
Se stai per scrivere un wrapper in stile STL, almeno dovrebbe conoscere anche la sua dimensione. Non puoi preoccuparti solo della capacità. – UncleBens