Fondamentalmente mi piacerebbe fare qualcosa di simile:Passare attorno a matrici di dimensioni fisse in C++?
int[3] array_func()
{
return {1,1,1};
}
int main(int argc,char * argv[])
{
int[3] point=array_func();
}
Ma questo non sembra legale in C++. So che posso usare i vettori, ma poiché so che la dimensione dell'array è una costante, sembra che si verifichi una perdita di prestazioni. Vorrei anche evitare un new
se possibile, perché l'allocazione di elementi nello stack è più semplice e probabilmente anche per migliorare le prestazioni.
Qual è la soluzione qui?
Questa sarebbe la migliore risposta tranne che una tale struttura esiste già: http://stackoverflow.com/questions/1755000/1755017#1755017 – sbi
l'ho scelta come risposta migliore perché risponde alla mia domanda, semplice e semplice, senza spingere una biblioteca che non ho chiesto. Non che la risposta di litb sia cattiva, ho appena trovato la risposta di unwind un po 'più chiara. –
"... spingendo una biblioteca che non ho chiesto ..." Bene, stiamo parlando di _boost_ qui, non solo di una libreria. Comunque, ci sono buone probabilità che la tua implementazione di lib standard sia fornita con 'std :: tr1 :: array' (C++ 03 o TR1) o anche' std :: array' (C++ 1x), che è esattamente lo stesso . (Che va a dimostrare che boost non è solo un'altra libreria: è un banco di prova per il prossimo standard C++, fondato dai membri del comitato std per esattamente questo motivo, ha degli alti standard di qualità e recensioni impegnative, e sta contribuendo con un sacco di roba alla prossima libreria standard. – sbi