IniziaInizia gratis

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

Visualizza il corso

Istruzioni dell'esercizio

  • Completa la definizione di una funzione, first_plus_last(), che restituisce la somma del primo e dell'ultimo valore di un NumericVector.
  • Imposta n come size() di x.
  • Imposta first come il primo elemento di x.
  • Imposta last come l'ultimo elemento di x.

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])
*/
Modifica ed esegui il codice