splitrange.cpp
#define USECHRONO
#undef HAVE_MPI
#include "eval.hpp"
#include <cassert>
#include <climits>
#include <cstdlib>
#include <stack>
#include <map>
#include <set>
#include <vector>
#include <list>
#include <numeric>
using namespace aed;
using namespace std;
/* COMIENZO DE DESCRIPCION
__USE_WIKI__
Dada una lista de enteros #L# y dos enteros #k1,k2# (con
#k1<=k2)# escribir una funcion
#void split_range(list<int>& L,#
#int k1,int k2,list<int>& L1,list<int>& L2,list<int>& L3);#
que divide los elementos de #L# en 3 listas #L1,L2,L3# donde
respectivamente deben quedar los elementos #x# en los rangos
#x<k1,# #k1<=x<k2,# #x2<x.#
[Tomado en el Trabajo Practico de Laboratorio 1
(TPL1) de 2020-09-24]
keywords: lista
FIN DE DESCRIPCION */
void split_range(list<int>& L, int k1,int k2,
list<int>& L1,list<int>& L2,list<int>& L3){
L1.clear();
L2.clear();
L3.clear();
auto q = L.begin();
while (q!=L.end()) {
int x = *q++;
if (x < k1) L1.push_back(x);
else if (x < k2) L2.push_back(x);
else L3.push_back(x);
}
}
//---:---<*>---:---<*>---:---<*>---:---<*>---:---<*>
void split_range2(list<int>& L, int k1,int k2,
list<int>& L1,list<int>& L2,list<int>& L3){
L1.clear();
L2.clear();
L3.clear();
auto q = L.begin();
while (q!=L.end()) {
int x = *q++;
// Usa solo una linea gracias al "hook" (?) operator
(x<k1? L1 : x<k2? L2 : L3).push_back(x);
}
}
//---:---<*>---:---<*>---:---<*>---:---<*>---:---<*>
int main() {
Eval ev;
int vrbs = 0;
ev.eval<1>(split_range,vrbs);
return 0;
}
Generated by GNU Enscript 1.6.6.