inden Sie den Index des ausgewählten Objek
Gegeben ein ObjektFoo
das hat die Methodebool isChecked() const
. Angenommen, ich habeFoo foos[]
.
Ich bin sicher, dass genau ein Element vonfoos
wird zurückkehrentrue
aufisChecked()
, alle anderen geben @ zurüfalse
.
Ich bin auf der Suche nach einem cleveren C ++ 03-Weg, um den Index des @ zu findetrue
Element. Ich kann das, aber es ist ziemlich hässlich. Hat jemand was besseres?
distance(foos, find_if(foos, foos + SIZE, mem_fun_ref(&Foo::isChecked)))
#include <algorithm>
#include <functional>
#include <iostream>
#include <iterator>
using namespace std;
#define SIZE 42
class Foo{
bool checked;
public:
Foo() : checked(false) {}
void setChecked() { checked = true; }
bool isChecked() const { return checked; }
};
int main() {
Foo foos[SIZE] = {};
foos[13].setChecked();
cout << distance(foos, find_if(foos, foos + SIZE, mem_fun_ref(&Foo::isChecked))) << endl;
}