#include <iostream>
#include <vector>
#include <set>
#include <functional>
#include <iostream>
using namespace std;
template <typename A, typename B>
auto map( const A & source, const B & b )
-> std::vector< decltype( b(*source.begin()) ) >
{
auto result = std::vector< decltype( b(*source.begin()) ) >();
for( auto & element: source)
{
result.push_back( b(element) );
}
return result;
}
float convert( int num )
{
return num;
}
int main() {
std::vector<int> ints = {1,2,3,4,5};
std::set<int> int_set = {7,8,9};
std::vector<float> floats = map( ints, []( int v) -> float { return v;} );
std::vector<float> floats2 = map( int_set, []( int v) -> float { return v;} );
for( auto & n: floats)
{
std::cout << n << std::endl;
}
std::cout << "---" << std::endl;
for( auto & n: floats2)
{
std::cout << n << std::endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIEI+IAphdXRvIG1hcCggY29uc3QgQSAmIHNvdXJjZSwgY29uc3QgQiAmIGIgKQotPiBzdGQ6OnZlY3RvcjwgZGVjbHR5cGUoIGIoKnNvdXJjZS5iZWdpbigpKSApID4KewoJYXV0byByZXN1bHQgPSBzdGQ6OnZlY3RvcjwgZGVjbHR5cGUoIGIoKnNvdXJjZS5iZWdpbigpKSApID4oKTsKCWZvciggYXV0byAmIGVsZW1lbnQ6IHNvdXJjZSkKCXsKCQlyZXN1bHQucHVzaF9iYWNrKCBiKGVsZW1lbnQpICk7Cgl9CglyZXR1cm4gcmVzdWx0Owp9CgpmbG9hdCBjb252ZXJ0KCBpbnQgbnVtICkKewoJcmV0dXJuIG51bTsKfQoKaW50IG1haW4oKSB7CgkKCXN0ZDo6dmVjdG9yPGludD4gaW50cyA9IHsxLDIsMyw0LDV9OwoJc3RkOjpzZXQ8aW50PiBpbnRfc2V0ID0gezcsOCw5fTsKCXN0ZDo6dmVjdG9yPGZsb2F0PiBmbG9hdHMgPSBtYXAoIGludHMsIFtdKCBpbnQgdikgLT4gZmxvYXQgeyByZXR1cm4gdjt9ICk7CglzdGQ6OnZlY3RvcjxmbG9hdD4gZmxvYXRzMiA9IG1hcCggaW50X3NldCwgW10oIGludCB2KSAtPiBmbG9hdCB7IHJldHVybiB2O30gKTsKCWZvciggYXV0byAmIG46IGZsb2F0cykKCXsKCQlzdGQ6OmNvdXQgPDwgbiA8PCBzdGQ6OmVuZGw7Cgl9CgkKCXN0ZDo6Y291dCA8PCAiLS0tIiA8PCBzdGQ6OmVuZGw7Cglmb3IoIGF1dG8gJiBuOiBmbG9hdHMyKQoJewoJCXN0ZDo6Y291dCA8PCBuIDw8IHN0ZDo6ZW5kbDsKCX0KCQoJcmV0dXJuIDA7Cn0=