Aan de slagGa gratis aan de slag

Indexeren van een vector

Indexeren in C++ begint bij 0, dus het kan helpen om de index te zien als een offset vanaf het begin van de vector. x[0] heeft offset 0 en geeft het eerste element van x.

Deze oefening maakt deel uit van de cursus

R-code optimaliseren met Rcpp

Cursus bekijken

Oefeninstructies

  • Maak de definitie af van een functie, first_plus_last(), die de som geeft van de eerste en laatste waarde van een NumericVector.
  • Zet n gelijk aan de size() van x.
  • Zet first gelijk aan het eerste element van x.
  • Zet last gelijk aan het laatste element van x.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

#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])
*/
Code bewerken en uitvoeren