跟數學裡面Set comprehension的表達方法很像,假設我們想要找出直角三角形中,周長小於50的三元組的數量。 (假設 a <= b <= c 且 a ^ 2 + b ^ 2 = c ^ 2)。
如果是以往的作法,大概會像這樣
1 2 3 4 5 6 7 8 9
for (int a = 1; a <= 10; a++) #define sqr(x) (x * x) typedef tuple<int, int, int> tuple3; std::vector<tuple3> ans; for (int a = 1; a <= 50; a++) for (int b = a; b <= 50; b++) for (int c = b; c <= 50; c++) if ((sqr(a) + sqr(b) == sqr(c)) && ((a + b + c) < 50)) ans.push_back(make_tuple(a, b, c));