es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Estoy cambiando el orden de este vector de forma incorrecta?

¡Me siento perdido y busco la orientación de internet!

Tengo una estructura como sigue:

struct Company {
string name;
string language;
int pay;
int age;
}

Esta estructura la he almacenado en una clase “CompanyManager” que tiene un vector ““.

class CompanyManager {
vector companyVector;
}

Ahora el problema que tengo es que quiero aleatorizar el orden de las estructuras de la compañía dentro del vector.

Aquí está mi intento con la ayuda de Google.

int size = this->companyVector.size();
for (int i = 0; i < size – 1; i++) {
int j = i + rand() % (size – i);
swap(this->companyVector[i], this->companyVector[j]);
}

Creo que estoy haciendo algo mal aquí, pero no estoy seguro de qué exactamente. ¿Esto intercambiaría el contenido de mis estructuras, porque eso es lo que parece estar sucediendo en mi programa?

Solo para que quede claro, estoy tratando de intercambiar el orden del vector de la compañía.

¡Gracias de antemano!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Hola,

    Parece que tu código es correcto y debería funcionar como se espera. La función swap que estás utilizando está intercambiando el contenido de las estructuras Company dentro de tu vector, lo que es lo que deseas lograr.

    Si lo que deseas es intercambiar el orden de las estructuras Company dentro del vector (es decir, cambiar su posición pero no su contenido), puedes modificar tu código de la siguiente manera:

    int size = this->companyVector.size();
    for (int i = 0; i < size - 1; i++) {
       int j = i + rand() % (size - i);
       if (i != j) { // asegurarse de no intercambiar una estructura consigo misma
         std::swap(this->companyVector[i], this->companyVector[j]);
       }
    }
    

    Esto debería mezclar aleatoriamente el orden de tus estructuras Company dentro del vector.

    ¡Espero que esto te ayude! Hazme saber si tienes alguna otra pregunta o inquietud.

Comments are closed.