Indexering av en vektor
Indexering i C++ börjar på 0, så det kan hjälpa att tänka på indexet som en förskjutning från vektorns start. x[0] har förskjutningen 0 och ger det första elementet i x.
Den här övningen är en del av kursen
Optimera R-kod med Rcpp
Övningsinstruktioner
- Slutför definitionen av funktionen
first_plus_last(), som returnerar summan av det första och sista värdet i enNumericVector. - Sätt
ntillsize()avx. - Sätt
firsttill det första elementet ix. - Sätt
lasttill det sista elementet ix.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
#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])
*/