The Take operation returns an std::vector by default, see the docs.
Just remember to actually extract the value from the RResultPtr, i.e.
auto parValues = df.Take<double>("x"); // This is an RResultPtr<std::vector<double>>
const auto &parValues_vec = *parValues; // This is an std::vector<double>
// Or you can also iterate on the RResultPtr directly
for (const auto &v: parValues){
std::cout << v << std::endl;
}
(if you want to avoid a copy, you can take a reference instead std::vector<double> &v = *parValues or move the result out of the result ptr: std::vector<double> v = std::move(*parValues);)