1. Učit se
  2. /
  3. Kurzy
  4. /
  5. Optimizing R Code with Rcpp

Connected

cvičení

STL vektory

Standardní knihovna šablon (STL) je knihovna jazyka C++ obsahující flexibilní algoritmy a datové struktury. Například typ double vektoru ze STL je jakoby „nativní C++" ekvivalent Rcpp třídy NumericVector. Následující kód vytvoří standardní double vektor s názvem x obsahující deset prvků.

std::vector<double> x(10);

Většinou je výhodnější držet se Rcpp vektorových typů, protože ti dávají přístup k mnoha praktickým metodám, které fungují podobně jako jejich protějšky v R – včetně mean(), round() a abs(). STL vektory mají ale jednu výhodu: mohou dynamicky měnit svou velikost, aniž by při každé změně docházelo ke kopírování dat. To nám umožňuje psát jednodušší kód – podobně jako funkce „bad" z předchozího cvičení – a přitom si zachovat výkon funkce „good".

Pokyny

100 XP
  • Dokonči definici funkce select_positive_values_std(), která využívá STL vektory k výběru kladných čísel.
    • Nastav návratový typ funkce na standardní double vektor pomocí std::vector<double>.
    • Definuj standardní double vektor positive_x s velikostí 0.
    • Uvnitř bloku if ve smyčce for použij metodu push_back() vektoru positive_x k přidání i-tého prvku vektoru x.
  • Funkce good_select_positive_values_cpp() z předchozího cvičení je dostupná ve tvém pracovním prostoru pro srovnání. Prohlédni si výstup v konzoli a porovnej relativní rychlosti obou funkcí.