Indexer un vecteur
En C++, l’indexation commence à 0. Il est donc utile d’imaginer l’index comme un décalage par rapport au début du vecteur. x[0] a un décalage de 0 et renvoie le premier élément de x.
Cet exercice fait partie du cours
Optimiser du code R avec Rcpp
Instructions
- Complétez la définition d’une fonction
first_plus_last()qui renvoie la somme des premières et dernières valeurs d’unNumericVector. - Définissez
ncomme la valeur desize()dex. - Affectez à
firstle premier élément dex. - Affectez à
lastle dernier élément dex.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
#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])
*/