fork(1) download
  1. #include <array>
  2. #include <iostream>
  3. #include <iterator>
  4. #include <map>
  5. #include <vector>
  6.  
  7. struct Sample {char value;};
  8.  
  9. std::vector<std::array<Sample, 3u>> get_triplets(const std::map<int, Sample>& samples)
  10. {
  11. if (samples.size() < 3) {
  12. return {};
  13. }
  14. std::vector<std::array<Sample, 3u>> res;
  15.  
  16. auto it = samples.begin();
  17. auto it1 = std::next(it);
  18. auto it2 = std::next(it1);
  19.  
  20. for (; it2 != samples.end(); ++it, ++it1, ++it2) {
  21. res.push_back({{it->second, it1->second, it2->second}});
  22. }
  23. return res;
  24. }
  25.  
  26. void print(const std::array<Sample, 3u>&t)
  27. {
  28. for (const auto& s : t) {
  29. std::cout << s.value << " ";
  30. }
  31. std::cout << std::endl;
  32. }
  33.  
  34. int main() {
  35. std::map<int, Sample> samples{
  36. {15, {'a'}},
  37. {21, {'b'}},
  38. {33, {'c'}},
  39. {37, {'d'}},
  40. {49, {'e'}}
  41. };
  42.  
  43. auto triplets = get_triplets(samples);
  44.  
  45. for (const auto& triplet : triplets) {
  46. print(triplet);
  47. }
  48. }
  49.  
Success #stdin #stdout 0s 3460KB
stdin
Standard input is empty
stdout
a b c 
b c d 
c d e