sort C++ 関数を使用して、ベクトルに格納された構造をソートしようとしています。以前は問題なくこれを実行しました。ただし、目的の出力が得られません。
比較関数自体を試してみると動作しますが、並べ替え C++ 関数を使用すると、比較関数が動作していないようです。
アイデアは、int 配列を 2 進数であるかのように昇順に並べ替えることです。これを行うにはさまざまな方法があることは知っていますが、なぜこれが機能しないのかわかりません。
予想される出力は次のとおりです。
0000000000
0101010101
0110110110
出力は次のとおりです。
0000000000
0110110110
0101010101
ここで何が起こるかわかりません。これが私のコードです:
using namespace std;
int n;
struct solucion{
int array[150];
};
vector <solucion> soluciones;
bool compare(solucion solucion1, solucion solucion2){
for(int i=1;i<=n;i++)
if(solucion2.array[i]>solucion1.array[i])
return true;
return false;
}
void print() {
for(int i=0;i<soluciones.size();i++){
for(int k=1;k<=n;k++)
cout << soluciones.at(i).array[k];
cout << endl;
}
}
int main(int argc, char *argv[])
{
solucion solucion1;
solucion1.array[1]=0;
solucion1.array[2]=0;
solucion1.array[3]=0;
solucion1.array[4]=0;
solucion1.array[5]=0;
solucion1.array[6]=0;
solucion1.array[7]=0;
solucion1.array[8]=0;
solucion1.array[9]=0;
solucion1.array[10]=0;
solucion solucion2;
solucion2.array[1]=0;
solucion2.array[2]=1;
solucion2.array[3]=0;
solucion2.array[4]=1;
solucion2.array[5]=0;
solucion2.array[6]=1;
solucion2.array[7]=0;
solucion2.array[8]=1;
solucion2.array[9]=0;
solucion2.array[10]=1;
solucion solucion3;
solucion3.array[1]=0;
solucion3.array[2]=1;
solucion3.array[3]=1;
solucion3.array[4]=0;
solucion3.array[5]=1;
solucion3.array[6]=1;
solucion3.array[7]=0;
solucion3.array[8]=1;
solucion3.array[9]=1;
solucion3.array[10]=0;
soluciones.push_back(solucion1);
soluciones.push_back(solucion2);
soluciones.push_back(solucion3);
n=10;
sort(soluciones.begin(),soluciones.end(),compare);
print();
system("PAUSE");
return EXIT_SUCCESS;
}