Optimize deque to/from variant

This commit is contained in:
Nathan Hourt 2015-06-04 10:42:59 -04:00
parent 0ad91391c7
commit 1bbb748c4e

View file

@ -34,10 +34,9 @@ namespace fc {
template<typename T> template<typename T>
void to_variant( const std::deque<T>& var, variant& vo ) void to_variant( const std::deque<T>& var, variant& vo )
{ {
std::vector<variant> vars(var.size()); std::vector<variant> vars;
size_t i = 0; vars.reserve(var.size());
for( auto itr = var.begin(); itr != var.end(); ++itr, ++i ) std::transform(var.begin(), var.end(), std::back_inserter(vars), [](const T& t) { return variant(t); });
vars[i] = variant(*itr);
vo = vars; vo = vars;
} }
template<typename T> template<typename T>
@ -45,8 +44,6 @@ namespace fc {
{ {
const variants& vars = var.get_array(); const variants& vars = var.get_array();
vo.clear(); vo.clear();
vo.reserve( vars.size() ); std::transform(vars.begin(), vars.end(), std::back_inserter(vo), [](const variant& t) { return t.template as<T>(); });
for( auto itr = vars.begin(); itr != vars.end(); ++itr )
vo.insert( itr->as<T>() );
} }
} // namespace fc } // namespace fc