7static std::mt19937_64 rng{ std::random_device{}() };
22 "Add()",
"Sort()",
"RandomOrder()",
"Invert()",
"BeASet()",
23 "Difference()",
"Union()",
"Contained()",
"Intersection()",
24 "operator=()",
"operator+=()",
"nada" }
28 parametro += {
"ESTRUTURA_DADOS", 1, 1, 3,
"Estrutura de dados utilizada para vetor.", {
29 "TVector",
"std::vector",
"TVector/std::algorithm" }
35 instancia = {
"Dados", 1,1,10,
"Vetores aleatórios de K milhões"};
67 for (
int i = 0;
i < 3;
i++)
77 for (
int i = 0;
i < 3;
i++)
78 printf(
"%d ",
stdA[
i]);
80 for (std::size_t
i =
stdA.size() - 3;
i <
stdA.size();
i++)
81 printf(
"%d ",
stdA[
i]);
147 std::sort(
stdA.begin(),
stdA.end());
153 std::shuffle(
stdA.begin(),
stdA.end(), rng);
159 std::reverse(
stdA.begin(),
stdA.end());
165 std::sort(
stdA.begin(),
stdA.end());
167 std::unique(
stdA.begin(),
stdA.end()),
179 std::sort(
stdA.begin(),
stdA.end());
180 std::sort(
stdB.begin(),
stdB.end());
182 std::unique(
stdA.begin(),
stdA.end()),
186 std::unique(
stdB.begin(),
stdB.end()),
191 std::vector<int>
tmp;
196 std::back_inserter(
tmp)
212 std::sort(
stdA.begin(),
stdA.end());
213 std::sort(
stdB.begin(),
stdB.end());
215 std::unique(
stdA.begin(),
stdA.end()),
219 std::unique(
stdB.begin(),
stdB.end()),
223 std::vector<int>
tmp2;
228 std::back_inserter(
tmp2)
243 std::sort(
stdA.begin(),
stdA.end());
244 std::sort(
stdB.begin(),
stdB.end());
261 std::sort(
stdA.begin(),
stdA.end());
262 std::sort(
stdB.begin(),
stdB.end());
264 std::unique(
stdA.begin(),
stdA.end()),
268 std::unique(
stdB.begin(),
stdB.end()),
272 std::vector<int>
tmp3;
274 std::set_intersection(
277 std::back_inserter(
tmp3)
332 for (std::size_t
i = 0;
i <
stdA.size() - 1;
i++)
@ ESTRUTURA_DADOS
estrutura base a utilizar
@ IND_ORDENAR
verifica se está ordenado
@ IND_PROCURA
Marcador para permitir a extensão do enum em subclasses.
@ COMPLETO
Mostra toda a execução detalhadamente.
@ ALGORITMO
Algoritmo base a executar.
@ LIMITE_ITERACOES
Número máximo de iterações (0 significa sem limite).
@ PARAMETROS_PROCURA
Marcador para permitir a extensão do enum em subclasses.
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.
void Debug(bool completo=true) override
Mostra informação de debug sobre o estado dos vetores.
int64_t 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).
int Parametro(int id) const
virtual void Inicializar(void)
Coloca o objecto no estado inicial da procura.
static int resultado
Resultado retornado pelo algoritmo na última execução.
virtual int64_t 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 parâmetros, 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,...
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 > & 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 parâmetro