1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | #include <iostream> #include <initializer_list> #include <array> template <class T> struct EIV_t { size_t i; T v; }; class EI_t { public: EI_t(size_t i) : i(i) {} template <class T> EIV_t<T> operator = (const T& v) const { return EIV_t<T> { i, v }; } private: size_t i; }; class E_t { public: EI_t operator [] (size_t i) const { return EI_t(i); } }; extern E_t E; template <class T, size_t N> class CArray : private std::array<T,N> { typedef std::array<T,N> Base; public: CArray() : Base() {} CArray(std::initializer_list<T> l) : Base(l) {} CArray(std::initializer_list<EIV_t<T>> l) : Base() { for (auto i = l.begin(); i != l.end(); ++i) { (*this)[i->i] = i->v; } } // well, private inheritance has its cost using Base::operator []; using Base::begin; using Base::end; using Base::cbegin; using Base::cend; using Base::iterator; using Base::const_iterator; // a lot of missing... }; E_t E; int main() { CArray<int, 7> a { E[1] = 13, E[6] = 14 }; for (auto i = a.begin(); i != a.end(); ++i) { std::cout << *i << std::endl; } } |
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KI2luY2x1ZGUgPGFycmF5PgoKdGVtcGxhdGUgPGNsYXNzIFQ+CnN0cnVjdCBFSVZfdCB7CiAgc2l6ZV90IGk7CiAgVCAgICAgIHY7Cn07CgpjbGFzcyBFSV90IHsKcHVibGljOgogIEVJX3Qoc2l6ZV90IGkpIDogaShpKSB7fQogIHRlbXBsYXRlIDxjbGFzcyBUPgogIEVJVl90PFQ+IG9wZXJhdG9yID0gKGNvbnN0IFQmIHYpIGNvbnN0CiAgewogICAgIHJldHVybiBFSVZfdDxUPiB7IGksIHYgfTsKICB9CnByaXZhdGU6CiAgc2l6ZV90IGk7Cn07IApjbGFzcyBFX3QgewpwdWJsaWM6CiAgRUlfdCBvcGVyYXRvciBbXSAoc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIEVJX3QoaSk7IH0KfTsgCgpleHRlcm4gRV90IEU7Cgp0ZW1wbGF0ZSA8Y2xhc3MgVCwgc2l6ZV90IE4+CmNsYXNzIENBcnJheSA6IHByaXZhdGUgc3RkOjphcnJheTxULE4+IHsKICB0eXBlZGVmIHN0ZDo6YXJyYXk8VCxOPiBCYXNlOwpwdWJsaWM6CiAgQ0FycmF5KCkgOiBCYXNlKCkge30KICBDQXJyYXkoc3RkOjppbml0aWFsaXplcl9saXN0PFQ+IGwpIDogQmFzZShsKSB7fQogIENBcnJheShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8RUlWX3Q8VD4+IGwpIDogQmFzZSgpIHsKICAgICBmb3IgKGF1dG8gaSA9IGwuYmVnaW4oKTsgaSAhPSBsLmVuZCgpOyArK2kpIHsKICAgICAgICAgKCp0aGlzKVtpLT5pXSA9IGktPnY7CiAgICAgfQogIH0KCgogIC8vIHdlbGwsIHByaXZhdGUgaW5oZXJpdGFuY2UgaGFzIGl0cyBjb3N0CiAgdXNpbmcgQmFzZTo6b3BlcmF0b3IgW107CiAgdXNpbmcgQmFzZTo6YmVnaW47CiAgdXNpbmcgQmFzZTo6ZW5kOwogIHVzaW5nIEJhc2U6OmNiZWdpbjsKICB1c2luZyBCYXNlOjpjZW5kOwogIHVzaW5nIEJhc2U6Oml0ZXJhdG9yOwogIHVzaW5nIEJhc2U6OmNvbnN0X2l0ZXJhdG9yOwogIC8vIGEgbG90IG9mIG1pc3NpbmcuLi4KfTsKCkVfdCBFOwoKaW50IG1haW4oKSB7CiAgIENBcnJheTxpbnQsIDc+IGEgeyBFWzFdID0gMTMsIEVbNl0gPSAxNCB9OwogICBmb3IgKGF1dG8gaSA9IGEuYmVnaW4oKTsgaSAhPSBhLmVuZCgpOyArK2kpIHsKICAgICAgc3RkOjpjb3V0IDw8ICppIDw8IHN0ZDo6ZW5kbDsKICAgfSAKfQo=
-
upload with new input
-
result: Success time: 0s memory: 2884 kB returned value: 0
0 13 0 0 0 0 14


