fork download
  1. #include <vector>
  2. #include <cstdio>
  3. using namespace std;
  4.  
  5. void show (const vector<float[2]> &v, const char *msg = nullptr) {
  6. if (msg) printf("%s: ", msg);
  7. for (int n = 0; n < v.size(); ++ n)
  8. printf("(%f,%f) ", v[n][0], v[n][1]);
  9. printf("\n => [ ");
  10. for (int n = 0; n < v.size() * 2; ++ n)
  11. printf("%f ", ((float *)&(v[0]))[n]);
  12. printf("]\n");
  13. }
  14.  
  15. int main() {
  16.  
  17. vector<float[2]> test(5);
  18. show(test);
  19.  
  20. for (int n = 0; n < test.size(); ++ n) {
  21. test[n][0] = n + 1;
  22. test[n][1] = (n + 1) * 11;
  23. }
  24. show(test);
  25.  
  26. float *testf = (float*)&(test[0]);
  27. for (int n = 0; n < test.size(); ++ n) {
  28. auto &v = test;
  29. printf("%d[0] %p %p %p\n", n, &(v[n]), &(v[n][0]), &(testf[n*2+0]));
  30. printf("%d[1] %p %p %p\n", n, &(v[n]), &(v[n][1]), &(testf[n*2+1]));
  31. }
  32.  
  33. return 0;
  34. }
Success #stdin #stdout 0.01s 5312KB
stdin
Standard input is empty
stdout
(0.000000,0.000000) (0.000000,0.000000) (0.000000,0.000000) (0.000000,0.000000) (0.000000,0.000000) 
  => [ 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ]
(1.000000,11.000000) (2.000000,22.000000) (3.000000,33.000000) (4.000000,44.000000) (5.000000,55.000000) 
  => [ 1.000000 11.000000 2.000000 22.000000 3.000000 33.000000 4.000000 44.000000 5.000000 55.000000 ]
0[0] 0x55a7a0c4fe70 0x55a7a0c4fe70 0x55a7a0c4fe70
0[1] 0x55a7a0c4fe70 0x55a7a0c4fe74 0x55a7a0c4fe74
1[0] 0x55a7a0c4fe78 0x55a7a0c4fe78 0x55a7a0c4fe78
1[1] 0x55a7a0c4fe78 0x55a7a0c4fe7c 0x55a7a0c4fe7c
2[0] 0x55a7a0c4fe80 0x55a7a0c4fe80 0x55a7a0c4fe80
2[1] 0x55a7a0c4fe80 0x55a7a0c4fe84 0x55a7a0c4fe84
3[0] 0x55a7a0c4fe88 0x55a7a0c4fe88 0x55a7a0c4fe88
3[1] 0x55a7a0c4fe88 0x55a7a0c4fe8c 0x55a7a0c4fe8c
4[0] 0x55a7a0c4fe90 0x55a7a0c4fe90 0x55a7a0c4fe90
4[1] 0x55a7a0c4fe90 0x55a7a0c4fe94 0x55a7a0c4fe94