Indexer un vecteur
En C++, l'indexation commence à 0, donc il peut être utile d'imaginer l'indice comme un décalage à partir du début du vecteur. x[0] est au décalage 0 et correspond au premier élément de x.
Cette activité fait partie du cours
Optimiser le code R avec Rcpp
Instructions de l’exercice
- Complétez la définition d'une fonction
first_plus_last()qui calcule la somme de la première et de la dernière valeur d'unNumericVector. - Attribuez à
nla valeur desize()dex. - Attribuez à
firstle premier élément dex. - Attribuez à
lastle dernier élément dex.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
#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])
*/