Indicizzazione di un vettore
In C++ l'indicizzazione parte da 0, quindi può essere utile immaginare l'indice come uno scostamento dall'inizio del vettore. x[0] ha scostamento 0 e restituisce il primo elemento di x.
Questo esercizio fa parte del corso
Ottimizzare il codice R con Rcpp
Istruzioni dell'esercizio
- Completa la definizione di una funzione,
first_plus_last(), che restituisce la somma del primo e dell'ultimo valore di unNumericVector. - Imposta
ncomesize()dix. - Imposta
firstcome il primo elemento dix. - Imposta
lastcome l'ultimo elemento dix.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
#include
using namespace Rcpp;
// [[Rcpp::export]]
double first_plus_last(NumericVector x) {
// The size of x
int n = ___;
// The first element of x
double first = ___;
// The last element of x
double last = ___;
return first + last;
}
/*** R
x <- c(6, 28, 496, 8128)
first_plus_last(x)
# Does the function give the same answer as R?
all.equal(first_plus_last(x), x[1] + x[4])
*/