Is there an one-liner that converts a list<T>
to vector<T>
?
A google search returns me a lot of results that use manual, lengthy conversion, which make me puke. Should we go to that much trouble to do something as simple as a list-to-vector conversion?
To convert List to Vector in R, use the unlist() function. The unlist() function simplifies to produce a vector by preserving all atomic components.
If you don't need to insert elements often then a vector will be more efficient. It has much better CPU cache locality than a list. In other words, accessing one element makes it very likely that the next element is present in the cache and can be retrieved without having to read slow RAM.
You can only create a new vector with all the elements from the list:
std::vector<T> v{ std::begin(l), std::end(l) };
where l
is a std::list<T>
. This will copy all elements from the list to the vector.
Since C++11 this can be made more efficient if you don't need the original list anymore. Instead of copying, you can move all elements into the vector:
std::vector<T> v{ std::make_move_iterator(std::begin(l)), std::make_move_iterator(std::end(l)) };
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With