7static std::mt19937_64 rng{ std::random_device{}() };
36 "TVector/std::algorithm",
49 instancia = {
"Dados", 1,1,10,
"Vetores aleatórios de K milhões",
NULL };
81 for (
int i = 0;
i < 3;
i++)
91 for (
int i = 0;
i < 3;
i++)
161 std::sort(
stdA.begin(),
stdA.end());
167 std::shuffle(
stdA.begin(),
stdA.end(), rng);
173 std::reverse(
stdA.begin(),
stdA.end());
179 std::sort(
stdA.begin(),
stdA.end());
181 std::unique(
stdA.begin(),
stdA.end()),
193 std::sort(
stdA.begin(),
stdA.end());
194 std::sort(
stdB.begin(),
stdB.end());
196 std::unique(
stdA.begin(),
stdA.end()),
200 std::unique(
stdB.begin(),
stdB.end()),
205 std::vector<int>
tmp;
210 std::back_inserter(
tmp)
226 std::sort(
stdA.begin(),
stdA.end());
227 std::sort(
stdB.begin(),
stdB.end());
229 std::unique(
stdA.begin(),
stdA.end()),
233 std::unique(
stdB.begin(),
stdB.end()),
237 std::vector<int>
tmp2;
242 std::back_inserter(
tmp2)
257 std::sort(
stdA.begin(),
stdA.end());
258 std::sort(
stdB.begin(),
stdB.end());
275 std::sort(
stdA.begin(),
stdA.end());
276 std::sort(
stdB.begin(),
stdB.end());
278 std::unique(
stdA.begin(),
stdA.end()),
282 std::unique(
stdB.begin(),
stdB.end()),
286 std::vector<int>
tmp3;
288 std::set_intersection(
291 std::back_inserter(
tmp3)
341 printf(
"\nordem %d > %d (%d,%d)",
347 for (
int i = 0;
i <
stdA.size() - 1;
i++)
350 printf(
"\nordem %d > %d (%d,%d)",
@ estruturaDados
estrutura base a utilizar
@ indOrdenar
verifica se está ordenado
@ indProcura
Marcador para permitir a extensão do enum em subclasses.
@ parametrosProcura
Marcador para permitir a extensão do enum em subclasses.
@ nivelDebug
Nível de debug, de reduzido a completo.
@ algoritmo
Algoritmo base a executar.
@ limiteIteracoes
Número máximo de iterações (0 significa sem limite).
void ResetParametros()
Inicializa parâmetros de teste.
std::vector< int > stdB
Vetores equivalentes em STL para comparação.
TVector< int > dadosB
Vetores de teste para operações TVector.
int Indicador(int id)
Calcula indicadores de teste.
void Inicializar(void)
Inicializa dados e estado para teste.
int ExecutaAlgoritmo()
Executa o algoritmo de teste (a definir pelo utilizador).
void Debug(void)
Mostra informação de debug sobre o estado dos vetores.
static int resultado
Resultado retornado pelo algoritmo na última execução.
virtual int Indicador(int id)
Retorna um indicador, após a execução do algoritmo.
static int iteracoes
Número total de iterações realizadas na última execução.
virtual void ResetParametros()
Inicializa os parametros, indicadores e instâncias.
virtual bool Parar(void)
Verifica se a procura deve ser interrompida.
static TVector< TIndicador > indicador
Indicadores que podem ser calculados após a execução, quer com informação da instãncia, quer com resultado da ...
static TVector< int > indAtivo
static TParametro instancia
ID da instância atual, a ser utilizado em SolucaoVazia().
static TVector< TParametro > parametro
Parâmetros a serem utilizados na configuração atual.
TVector< Item > & BeASet()
Converte o vetor num conjunto: remove duplicados e ordena.
TVector< Item > & RandomOrder()
Coloca os elementos em ordem aleatória (Fisher–Yates shuffle).
TVector< Item > & Difference(const TVector< Item > &v)
Diferença deste conjunto em relação a outro.
TVector< Item > & Sort(TVector< int > *idxvect=nullptr)
Ordena todo o vetor, opcionalmente devolvendo Ãndices ordenados.
TVector< Item > & Intersection(const TVector< Item > &v)
Interseção deste conjunto com outro.
bool Contained(const TVector< Item > &v) const
Verifica se este conjunto está contido no outro.
TVector< Item > & Add(Item a)
TVector< Item > & Invert()
Inverte a ordem dos elementos no vetor.
TVector< Item > & Union(const TVector< Item > &v)
Realiza a união deste conjunto com outro.
unsigned int rand(int seq)
Retorna o próximo valor pseudo-aleatório.
int valor
valor do parametro