#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <ciso646>
using namespace std;
// Possible implementation from http://e...content-available-to-author-only...e.com/w/cpp/algorithm/find
template<class InputIt, class T>
InputIt my_find(InputIt first, InputIt last, const T& value)
{
for (; first != last; ++first)
if (*first == value)
return first;
return last;
}
int main() {
vector<bool> b(5,false);
#ifdef _LIBCPP_VERSION
cout << "_LIBCPP_VERSION=" << _LIBCPP_VERSION << endl; // 1101 <-> XCode 4.6.3
#endif
// show - lambda to show distance of b.begin()->it, it->b.end()
auto show = [&](vector<bool>::iterator it)
{ cout << distance(b.begin(), it) << "," << distance(it,b.end()) << endl; };
show(b.begin()); // shows 0,5 as expected
show(b.end()); // shows 5,0 as expected
show(find(next(b.begin(), 1), b.end(), true)); // shows 64/-59! should be (5,0)
show(my_find(next(b.begin(), 1), b.end(), true)); // shows 5,0 as expected
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDxjaXNvNjQ2PgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIFBvc3NpYmxlIGltcGxlbWVudGF0aW9uIGZyb20gaHR0cDovL2UuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLmUuY29tL3cvY3BwL2FsZ29yaXRobS9maW5kCnRlbXBsYXRlPGNsYXNzIElucHV0SXQsIGNsYXNzIFQ+CklucHV0SXQgbXlfZmluZChJbnB1dEl0IGZpcnN0LCBJbnB1dEl0IGxhc3QsIGNvbnN0IFQmIHZhbHVlKQp7CiAgZm9yICg7IGZpcnN0ICE9IGxhc3Q7ICsrZmlyc3QpCiAgICBpZiAoKmZpcnN0ID09IHZhbHVlKQogICAgICByZXR1cm4gZmlyc3Q7CiAgcmV0dXJuIGxhc3Q7Cn0KCmludCBtYWluKCkgewogIHZlY3Rvcjxib29sPiBiKDUsZmFsc2UpOwoKI2lmZGVmIF9MSUJDUFBfVkVSU0lPTgogIGNvdXQgPDwgIl9MSUJDUFBfVkVSU0lPTj0iIDw8IF9MSUJDUFBfVkVSU0lPTiA8PCBlbmRsOyAgICAvLyAxMTAxIDwtPiBYQ29kZSA0LjYuMwojZW5kaWYKCiAgLy8gc2hvdyAtIGxhbWJkYSB0byBzaG93IGRpc3RhbmNlIG9mIGIuYmVnaW4oKS0+aXQsIGl0LT5iLmVuZCgpCiAgYXV0byBzaG93ID0gWyZdKHZlY3Rvcjxib29sPjo6aXRlcmF0b3IgaXQpCiAgeyBjb3V0IDw8IGRpc3RhbmNlKGIuYmVnaW4oKSwgaXQpIDw8ICIsIiA8PCBkaXN0YW5jZShpdCxiLmVuZCgpKSA8PCBlbmRsOyB9OwoKICBzaG93KGIuYmVnaW4oKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNob3dzIDAsNSBhcyBleHBlY3RlZAogIHNob3coYi5lbmQoKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2hvd3MgNSwwIGFzIGV4cGVjdGVkCiAgc2hvdyhmaW5kKG5leHQoYi5iZWdpbigpLCAxKSwgYi5lbmQoKSwgdHJ1ZSkpOyAgICAvLyBzaG93cyA2NC8tNTkhIHNob3VsZCBiZSAoNSwwKQogIHNob3cobXlfZmluZChuZXh0KGIuYmVnaW4oKSwgMSksIGIuZW5kKCksIHRydWUpKTsgLy8gc2hvd3MgNSwwIGFzIGV4cGVjdGVkCgogIHJldHVybiAwOwp9