#include <iostream>
#include <initializer_list>
#include <vector>
template<class T> class Matrix {
public:
Matrix() {std::cout << "Matrix() " << this << std::endl;}
Matrix(int width,int height):w(width),h(height) {std::cout << "Matrix(" << w << "x" << h << ") " << this << std::endl;}
~Matrix() {std::cout << "Matrix(" << w << "x" << h << ") " << this << " goodbye" << std::endl;}
private:
int w,h;
};
class NN {
public:
NN()=default;
NN(const std::initializer_list<size_t> &l);
private:
std::vector<Matrix<double>> m_weights;
};
NN::NN(const std::initializer_list<size_t> &l) {
m_weights.reserve(l.size()-1); // or deal with move constructors
auto itr = l.begin();
for (auto next = itr + 1; next != l.end(); ++next, ++itr)
{
m_weights.emplace_back(*next, *itr);
}
}
int main() {
NN test{2,3,3,2};
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KI2luY2x1ZGUgPHZlY3Rvcj4KCnRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIE1hdHJpeCB7CnB1YmxpYzoKCU1hdHJpeCgpIHtzdGQ6OmNvdXQgPDwgIk1hdHJpeCgpICIgPDwgdGhpcyA8PCBzdGQ6OmVuZGw7fQoJTWF0cml4KGludCB3aWR0aCxpbnQgaGVpZ2h0KTp3KHdpZHRoKSxoKGhlaWdodCkge3N0ZDo6Y291dCA8PCAiTWF0cml4KCIgPDwgdyA8PCAieCIgPDwgaCA8PCAiKSAiIDw8IHRoaXMgPDwgc3RkOjplbmRsO30KCX5NYXRyaXgoKSB7c3RkOjpjb3V0IDw8ICJNYXRyaXgoIiA8PCB3IDw8ICJ4IiA8PCBoIDw8ICIpICIgPDwgdGhpcyA8PCAiIGdvb2RieWUiIDw8IHN0ZDo6ZW5kbDt9CnByaXZhdGU6CglpbnQgdyxoOwp9OwoKY2xhc3MgTk4gewpwdWJsaWM6CglOTigpPWRlZmF1bHQ7CglOTihjb25zdCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c2l6ZV90PiAmbCk7CnByaXZhdGU6CglzdGQ6OnZlY3RvcjxNYXRyaXg8ZG91YmxlPj4gbV93ZWlnaHRzOwp9OwoKTk46Ok5OKGNvbnN0IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzaXplX3Q+ICZsKSB7CgltX3dlaWdodHMucmVzZXJ2ZShsLnNpemUoKS0xKTsgLy8gb3IgZGVhbCB3aXRoIG1vdmUgY29uc3RydWN0b3JzCglhdXRvIGl0ciA9IGwuYmVnaW4oKTsKICAgIGZvciAoYXV0byBuZXh0ID0gaXRyICsgMTsgbmV4dCAhPSBsLmVuZCgpOyArK25leHQsICsraXRyKQogICAgewogICAgICAgIG1fd2VpZ2h0cy5lbXBsYWNlX2JhY2soKm5leHQsICppdHIpOwogICAgfQp9CgppbnQgbWFpbigpIHsKCU5OIHRlc3R7MiwzLDMsMn07CglyZXR1cm4gMDsKfQo=