fork download
  1. #include <iostream>
  2. #include <functional>
  3. #include <utility>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8. template <typename T>
  9. auto vertex_triangle(const size_t index, const vector<pair<T, T>>& polygon) {
  10. const auto& first = index == 0U ? polygon.back() : polygon[index - 1U];
  11. const auto& second = polygon[index];
  12. const auto& third = index == polygon.size() - 1U ? polygon.front() : polygon[index + 1U];
  13.  
  14. return [&](auto& output){ output.push_back(first);
  15. output.push_back(second);
  16. output.push_back(third); };
  17. }
  18.  
  19. int main() {
  20. const vector<pair<int, int>> input { make_pair(1, 2), make_pair(2, 3), make_pair(3, 4), make_pair(4, 5) };
  21. vector<pair<int, int>> output;
  22.  
  23. for(size_t i = 0U; i < input.size(); ++i) {
  24. vertex_triangle(i, input)(output);
  25. }
  26.  
  27. for(size_t i = 0U; i < output.size(); i += 3) {
  28. cout << output[i].first << ',' << output[i].second << '\t' << output[i + 1U].first << ',' << output[i + 1U].second << '\t' << output[i + 2U].first << ',' << output[i + 2U].second << endl;
  29. }
  30. }
Success #stdin #stdout 0s 16064KB
stdin
Standard input is empty
stdout
4,5	1,2	2,3
1,2	2,3	3,4
2,3	3,4	4,5
3,4	4,5	1,2