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;
}

Live Example

Antworten auf die Frage(2)

Ihre Antwort auf die Frage