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 };
80 for (
int i = 0;
i < 3;
i++)
90 for (
int i = 0;
i < 3;
i++)
93 for (std::size_t
i =
stdA.size() - 3;
i <
stdA.size();
i++)
160 std::sort(
stdA.begin(),
stdA.end());
166 std::shuffle(
stdA.begin(),
stdA.end(), rng);
172 std::reverse(
stdA.begin(),
stdA.end());
178 std::sort(
stdA.begin(),
stdA.end());
180 std::unique(
stdA.begin(),
stdA.end()),
192 std::sort(
stdA.begin(),
stdA.end());
193 std::sort(
stdB.begin(),
stdB.end());
195 std::unique(
stdA.begin(),
stdA.end()),
199 std::unique(
stdB.begin(),
stdB.end()),
204 std::vector<int>
tmp;
209 std::back_inserter(
tmp)
225 std::sort(
stdA.begin(),
stdA.end());
226 std::sort(
stdB.begin(),
stdB.end());
228 std::unique(
stdA.begin(),
stdA.end()),
232 std::unique(
stdB.begin(),
stdB.end()),
236 std::vector<int>
tmp2;
241 std::back_inserter(
tmp2)
256 std::sort(
stdA.begin(),
stdA.end());
257 std::sort(
stdB.begin(),
stdB.end());
258 (
void) std::includes(
266 (
void) std::includes(
274 std::sort(
stdA.begin(),
stdA.end());
275 std::sort(
stdB.begin(),
stdB.end());
277 std::unique(
stdA.begin(),
stdA.end()),
281 std::unique(
stdB.begin(),
stdB.end()),
285 std::vector<int>
tmp3;
287 std::set_intersection(
290 std::back_inserter(
tmp3)
345 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
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 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 > & 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