1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #include <algorithm> #include <vector> double myFunction1(int) { return 0; } double myFunction2(double, int) { return 1; } double myFunction3(double, double) { return 2; } double myFunction4(double, double, int) { return 3; } struct int_sequence { int_sequence(int i) : val(i) {} int_sequence operator++() { ++val; return *this; } int_sequence operator++(int) { return int_sequence(val++); } int operator*() const { return val; } bool operator!=(const int_sequence& other) const { return val != other.val; } private: int val; }; const size_t N = 100; int main(void) { std::vector<double> A(N); std::vector<double> B(N); std::vector<double> C(N); std::vector<double> D(N); //for(int i = 0; i < N; ++i) // A[i] = myFunction1(i); std::transform(int_sequence(0), int_sequence(N), A.begin(), &myFunction1); //for(int i = 0; i < N; ++i) // B[i] = myFunction2(A[i], i); std::transform(A.begin(), A.end(), int_sequence(0), B.begin(), &myFunction2); //for(int i = 0; i < N; ++i) // C[i] = myFunction3(A[i], B[i]); std::transform(A.begin(), A.end(), B.begin(), C.begin(), &myFunction3); for(int i = 0; i < N; ++i) D[i] = myFunction4(A[i], B[i], i); // there is no std::transform for three-argument functions (yet) return 0; } |
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPHZlY3Rvcj4KCmRvdWJsZSBteUZ1bmN0aW9uMShpbnQpIHsgcmV0dXJuIDA7IH0KZG91YmxlIG15RnVuY3Rpb24yKGRvdWJsZSwgaW50KSB7IHJldHVybiAxOyB9CmRvdWJsZSBteUZ1bmN0aW9uMyhkb3VibGUsIGRvdWJsZSkgeyByZXR1cm4gMjsgfQpkb3VibGUgbXlGdW5jdGlvbjQoZG91YmxlLCBkb3VibGUsIGludCkgeyByZXR1cm4gMzsgfQoKc3RydWN0IGludF9zZXF1ZW5jZQp7CiAgICBpbnRfc2VxdWVuY2UoaW50IGkpIDogdmFsKGkpIHt9CiAgICBpbnRfc2VxdWVuY2Ugb3BlcmF0b3IrKygpIHsgKyt2YWw7IHJldHVybiAqdGhpczsgfQogICAgaW50X3NlcXVlbmNlIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiBpbnRfc2VxdWVuY2UodmFsKyspOyB9CiAgICBpbnQgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gdmFsOyB9CiAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaW50X3NlcXVlbmNlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gdmFsICE9IG90aGVyLnZhbDsgfQpwcml2YXRlOgogICAgaW50IHZhbDsKfTsKCmNvbnN0IHNpemVfdCBOID0gMTAwOwoKaW50IG1haW4odm9pZCkKewogICAgc3RkOjp2ZWN0b3I8ZG91YmxlPiBBKE4pOwogICAgc3RkOjp2ZWN0b3I8ZG91YmxlPiBCKE4pOwogICAgc3RkOjp2ZWN0b3I8ZG91YmxlPiBDKE4pOwogICAgc3RkOjp2ZWN0b3I8ZG91YmxlPiBEKE4pOwoKICAgIC8vZm9yKGludCBpID0gMDsgaSA8IE47ICsraSkKICAgIC8vICAgIEFbaV0gPSBteUZ1bmN0aW9uMShpKTsKICAgIHN0ZDo6dHJhbnNmb3JtKGludF9zZXF1ZW5jZSgwKSwgaW50X3NlcXVlbmNlKE4pLCBBLmJlZ2luKCksICZteUZ1bmN0aW9uMSk7CgogICAgLy9mb3IoaW50IGkgPSAwOyBpIDwgTjsgKytpKQogICAgLy8gIEJbaV0gPSBteUZ1bmN0aW9uMihBW2ldLCBpKTsKICAgIHN0ZDo6dHJhbnNmb3JtKEEuYmVnaW4oKSwgQS5lbmQoKSwgaW50X3NlcXVlbmNlKDApLCBCLmJlZ2luKCksICZteUZ1bmN0aW9uMik7CgogICAgLy9mb3IoaW50IGkgPSAwOyBpIDwgTjsgKytpKQogICAgLy8gIENbaV0gPSBteUZ1bmN0aW9uMyhBW2ldLCBCW2ldKTsKICAgIHN0ZDo6dHJhbnNmb3JtKEEuYmVnaW4oKSwgQS5lbmQoKSwgQi5iZWdpbigpLCBDLmJlZ2luKCksICZteUZ1bmN0aW9uMyk7CgogICAgZm9yKGludCBpID0gMDsgaSA8IE47ICsraSkKICAgICAgRFtpXSA9IG15RnVuY3Rpb240KEFbaV0sIEJbaV0sIGkpOwogICAgLy8gdGhlcmUgaXMgbm8gc3RkOjp0cmFuc2Zvcm0gZm9yIHRocmVlLWFyZ3VtZW50IGZ1bmN0aW9ucyAoeWV0KQoKICAgIHJldHVybiAwOwp9Cg==
prog.cpp: In function ‘int main()’: prog.cpp:41: warning: comparison between signed and unsigned integer expressions
-
upload with new input
-
result: Success time: 0s memory: 2852 kB returned value: 0


