What do you think about this code?

```
#include <iostream>
using std::cout;
using std::endl;

#include <vector>
using std::vector;

#include <ctime>
#include <cstdlib>

template < typename T >
vector < T > concatenate( vector < T > _a_, T piv, vector < T > _b_ )
{
  vector < T > v_list;
  v_list.insert( v_list.begin(), _a_.begin(), _a_.end() );
  v_list.push_back( piv );
  v_list.insert( v_list.end(), _b_.begin(), _b_.end() );
  return v_list;
}

template < typename T > 
vector< T > quick( vector< T > vec )
{
  vector< T > v_less, v_greater, v_list;
  vector< T > aux1, aux2;
  typename vector < T >::const_iterator iter_Const;
  if( vec.size() <= 1 )
    return vec;
  int piv = *(vec.end() - 1);
  vec.pop_back();
  for( iter_Const = vec.begin(); iter_Const != vec.end(); ++iter_Const )
  {
    if( *iter_Const < piv )
      v_less.push_back( *iter_Const );
    else
      v_greater.push_back( *iter_Const );  
  }
  return concatenate( quick( v_less ), piv, quick( v_greater ) );  
}

int main() {
  vector < int > lista;
  srand( 1 );
  cout << "VECTOR" << endl;
  for( int i = 0; i < 10000; i++ )
  {
      lista.push_back( rand() % 100 );
      cout << lista[i] << " | ";
  }
  cout << endl;
  cout << "******" << endl;
  cout << "QUICKSORT" << endl;
  lista = quick( lista );
  vector < int > :: const_iterator it;
  for( it = lista.begin(); it != lista.end(); ++it )
    cout << *it << " | ";
  cout << endl;
}

```