Cómo mover elementos usando std :: depeding movimiento de los contenidos de vectores en C ++?

randomprogrammer:

Me gustaría saber si puedo mover elementos a otro vector en función de lo que hay en el vector. Así, por ejemplo, tengo unas tres vectores. Puntos, Player1 y Player1type. El vector tiene punto de enteros en ella, el player1type tiene cadenas en ella y la jugador1 se supone que tiene un número de puntos del vector.


int main() {

    vector <int> points {1,2,3,4,5};
    vector <string> player1type {"Power1", "Steal", "Power2", "Steal", "Power1"};
    vector <int> player1 {1,1,1,1,1};

    move(points.begin(), points.end(), player1.begin());


return 0;
} 

Como se puede ver en el código anterior simplemente mueve los elementos en puntos a jugador1 mediante la sustitución de los elementos que ya están en jugador1. Lo que quiero es los elementos para mover si no hay ninguna Steal elementos en player1type. Por lo que sería de esta manera:

player1type = {"Power1", "Steal", "Power2" ,"Steal", "Power1"};

Player1 = {1,3,5};

He tratado de poner en práctica esto, pero no puedo conseguir que funcione.

int main() {

    vector <int> points {1,2,3,4,5};
    vector <string> player1type {"Power1", "Steal", "Power2", "Steal", "Power1"};
    vector <int> player1 {1,1,1,1,1};

    if (!player1type.empty() && player1type[0] == "Power1") {


    move(points.begin(), points.end(), player1.begin());

    }

    else if (!player1type.empty() && player1type[0] == "Power2") {

        move(points.begin(), points.end(), player1.begin());

    }

    else {

        cout << "Can't apply this sorry" << endl;       

    }

return 0;

} 

Esto no parece funcionar, lo único que hace es agrega en los números, independientemente de los estados.

Anirban166:

Sus elementos móviles de todo el vector usando points.begin(), points.end().

Por su situación condicional debe mover si player1type!="Steal"y establecer puntos de inicio y final del desplazamiento en consecuencia, lo que se puede lograr en un bucle:

vector <int> points {1,2,3,4,5};
vector <string> player1type {"Power1", "Steal", "Power2", "Steal", "Power1"};
vector <int> player1 {1,1,1,1,1};

for(int i=0; i<5; ++i)
{  if (!player1type.empty() && player1type[i] != "Steal") 
   move(points.begin()+i, points.begin()+i+1, player1.begin()+i);
   else player1[i]=0;
}
for(auto i:player1)
cout<<i; // 1 0 3 0 5

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=406401&siteId=1
Recomendado
Clasificación