#include <vector>
struct InputField
{
bool _selected;
InputField(bool s) : _selected(s) {}
bool getSelected() { return _selected; }
void setSelected(bool s) { _selected = s; }
};
struct InputFieldController{
std::vector<InputField> _inputfields;
std::vector<InputField>::iterator _selected;
void push_back(InputField push)
{
_inputfields.push_back(push);
if(push.getSelected()){
if(_inputfields.size() == 1){
_selected = _inputfields.begin();
return;
}
_selected->setSelected(false);
_selected = _inputfields.end()-1;
}
}
};
int main()
{
InputFieldController foo;
foo.push_back(InputField{false});
foo.push_back(InputField{true});
}
I2luY2x1ZGUgPHZlY3Rvcj4KCnN0cnVjdCBJbnB1dEZpZWxkCnsKCWJvb2wgX3NlbGVjdGVkOwoJCglJbnB1dEZpZWxkKGJvb2wgcykgOiBfc2VsZWN0ZWQocykge30KCQoJYm9vbCBnZXRTZWxlY3RlZCgpIHsgcmV0dXJuIF9zZWxlY3RlZDsgfQoJdm9pZCBzZXRTZWxlY3RlZChib29sIHMpIHsgX3NlbGVjdGVkID0gczsgfQp9OwoKc3RydWN0IElucHV0RmllbGRDb250cm9sbGVyewogICAgICAgIHN0ZDo6dmVjdG9yPElucHV0RmllbGQ+IF9pbnB1dGZpZWxkczsKICAgICAgICBzdGQ6OnZlY3RvcjxJbnB1dEZpZWxkPjo6aXRlcmF0b3IgX3NlbGVjdGVkOwogICAgICAgIAogICAgICAgIHZvaWQgcHVzaF9iYWNrKElucHV0RmllbGQgcHVzaCkKICAgICAgICB7CiAgICAgICAgICAgIF9pbnB1dGZpZWxkcy5wdXNoX2JhY2socHVzaCk7CiAgICAgICAgICAgIGlmKHB1c2guZ2V0U2VsZWN0ZWQoKSl7CiAgICAgICAgICAgICAgICBpZihfaW5wdXRmaWVsZHMuc2l6ZSgpID09IDEpewogICAgICAgICAgICAgICAgICAgIF9zZWxlY3RlZCA9IF9pbnB1dGZpZWxkcy5iZWdpbigpOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF9zZWxlY3RlZC0+c2V0U2VsZWN0ZWQoZmFsc2UpOwogICAgICAgICAgICAgICAgX3NlbGVjdGVkID0gX2lucHV0ZmllbGRzLmVuZCgpLTE7CiAgICAgICAgICAgIH0KICAgICAgICB9Cn07CgppbnQgbWFpbigpCnsKCUlucHV0RmllbGRDb250cm9sbGVyIGZvbzsKCWZvby5wdXNoX2JhY2soSW5wdXRGaWVsZHtmYWxzZX0pOwoJZm9vLnB1c2hfYmFjayhJbnB1dEZpZWxke3RydWV9KTsKfQ==