#pragma once struct LargeSOA { std::vector a01; std::vector a02; std::vector a03; std::vector a04; std::vector a05; std::vector a06; std::vector a07; std::vector a08; std::vector a09; std::vector a10; std::vector a11; std::vector a12; std::vector a13; std::vector a14; std::vector a15; std::vector a16; std::vector a17; std::vector a18; std::vector a19; std::vector a20; void push_back(int x) { a01.push_back(x); a02.push_back(x); a03.push_back(x); a04.push_back(x); a05.push_back(x); a06.push_back(x); a07.push_back(x); a08.push_back(x); a09.push_back(x); a10.push_back(x); a11.push_back(x); a12.push_back(x); a13.push_back(x); a14.push_back(x); a15.push_back(x); a16.push_back(x); a17.push_back(x); a18.push_back(x); a19.push_back(x); a20.push_back(x); } }; struct LargeStruct { int a01; int a02; int a03; int a04; int a05; int a06; int a07; int a08; int a09; int a10; int a11; int a12; int a13; int a14; int a15; int a16; int a17; int a18; int a19; int a20; LargeStruct(int x) : a01(x), a02(x), a03(x), a04(x), a05(x), a06(x), a07(x), a08(x), a09(x), a10(x), a11(x), a12(x), a13(x), a14(x), a15(x), a16(x), a17(x), a18(x), a19(x), a20(x) {} }; struct S1 { int a01; int a02; int a03; int a04; S1(int x) : a01(x), a02(x), a03(x), a04(x) { } }; struct S2 { int a05; int a06; int a07; int a08; S2(int x) : a05(x), a06(x), a07(x), a08(x) { } }; struct S3 { int a09; int a10; int a11; int a12; S3(int x) : a09(x), a10(x), a11(x), a12(x) { } }; struct S4 { int a13; int a14; int a15; int a16; S4(int x) : a13(x), a14(x), a15(x), a16(x) { } }; struct S5 { int a17; int a18; int a19; int a20; S5(int x) : a17(x), a18(x), a19(x), a20(x) { } }; struct MultipleAOS { std::vector s1; std::vector s2; std::vector s3; std::vector s4; std::vector s5; void push_back(int x) { s1.push_back({x}); s2.push_back({x}); s3.push_back({x}); s4.push_back({x}); s5.push_back({x}); } };