#include <bits/stdc++.h>
using namespace std;
template<typename T1, typename T2 = typename T1::value_type>
auto find_all(const T1& ar, T2 xr)
{
typedef typename T1::const_iterator const_iterator;
vector<const_iterator> it;
for (auto it2 = ar.cbegin(); it2 != ar.cend(); ++it2)
if (*it2 == xr)
it.push_back(it2);
return it;
}
int main()
{
vector<int> ar={1,2,3,1,2,3,1,2,3,1,2,3};
auto it=find_all(ar,1);
for(auto x : it)
cout<<distance(x,ar.cbegin())<<endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIgPSB0eXBlbmFtZSBUMTo6dmFsdWVfdHlwZT4KCWF1dG8gZmluZF9hbGwoY29uc3QgVDEmIGFyLCBUMiB4cikKCXsKCQl0eXBlZGVmIHR5cGVuYW1lIFQxOjpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKCQl2ZWN0b3I8Y29uc3RfaXRlcmF0b3I+IGl0OwoJCWZvciAoYXV0byBpdDIgPSBhci5jYmVnaW4oKTsgaXQyICE9IGFyLmNlbmQoKTsgKytpdDIpCgkJCWlmICgqaXQyID09IHhyKQoJCQkJaXQucHVzaF9iYWNrKGl0Mik7CgkJcmV0dXJuIGl0OwoJfQppbnQgbWFpbigpIAp7Cgl2ZWN0b3I8aW50PiBhcj17MSwyLDMsMSwyLDMsMSwyLDMsMSwyLDN9OwoJYXV0byBpdD1maW5kX2FsbChhciwxKTsKCWZvcihhdXRvIHggOiBpdCkKCQljb3V0PDxkaXN0YW5jZSh4LGFyLmNiZWdpbigpKTw8ZW5kbDsKCXJldHVybiAwOwp9