fork download
  1. #include <iostream>
  2. #include <array>
  3. #include <memory>
  4.  
  5. std::unique_ptr<float[]> data(new float[40]());
  6.  
  7. struct LinhaSobre4f
  8. {
  9. LinhaSobre4f(float * pos_begin, size_t size_):
  10. pos0(pos_begin),
  11. size_(size_){}
  12. std::array<float, 4> & operator[](size_t i)const
  13. {
  14. std::array<float,4> * r =
  15. reinterpret_cast<std::array<float,4>*> (pos0+(4*i));
  16. return *r;
  17. }
  18. size_t size()const
  19. {
  20. return size_;
  21. }
  22. private:
  23. float * pos0;
  24. size_t size_;
  25. };
  26.  
  27. int main() {
  28. LinhaSobre4f l(data.get()+(3*4), 4);
  29. //assigning from container
  30. for(size_t i = 0; i < l.size(); i++)
  31. l[i] = { {1.5f, 2.5f, 3.5f, 4.5f} };
  32. //printing from data itself
  33. for(size_t i = 0; i < 10; i++)
  34. {
  35. std::cout << "f4 " << i << " : " ;
  36. for(size_t j = 0; j < 4; j++)
  37. std::cout << data[i*4+j] << " ";
  38. std::cout << std::endl;
  39. }
  40. return 0;
  41. }
Success #stdin #stdout 0s 3412KB
stdin
Standard input is empty
stdout
f4 0 : 0 0 0 0 
f4 1 : 0 0 0 0 
f4 2 : 0 0 0 0 
f4 3 : 1.5 2.5 3.5 4.5 
f4 4 : 1.5 2.5 3.5 4.5 
f4 5 : 1.5 2.5 3.5 4.5 
f4 6 : 1.5 2.5 3.5 4.5 
f4 7 : 0 0 0 0 
f4 8 : 0 0 0 0 
f4 9 : 0 0 0 0