#include <iostream>
#include <vector>
int main() {
auto m = 2; // #rows
auto n = 3; // #cols
// row-major vector
auto x = std::vector<double>{1,2,3,4,5,6};
auto const colIndex = 1;
auto const col = std::vector<double>{7,8};
// insert column {7,8} into the 2nd position
// =>{1,7,2,3,4,8,5,6}
// option 1: insert in-place
// for(auto i = 0; i < col.size(); i++)
// // +i b/c size increases by 1 each iteration
// x.insert(begin(x) + colIndex + i * (n + 1), col[i]);
// option 2: temp vec and swap
{
auto tmp = std::vector<double>(m*(n+1));
for(auto i = 0; i < m; i++)
{
for(auto j = 0; j < colIndex; j++)
tmp[j + i * (n + 1)] = x[j + i * n];
tmp[colIndex + i * (n + 1)] = col[i];
for(auto j = colIndex + 1; j < n + 1; j++)
tmp[j + i * (n + 1)] = x[(j - 1) + i * n];
}
std::swap(tmp, x);
};
for(auto const& xi : x)
std::wcout << xi << L" ";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKaW50IG1haW4oKSB7CglhdXRvIG0gPSAyOyAvLyAjcm93cwoJYXV0byBuID0gMzsgLy8gI2NvbHMKCS8vIHJvdy1tYWpvciB2ZWN0b3IKCWF1dG8geCA9IHN0ZDo6dmVjdG9yPGRvdWJsZT57MSwyLDMsNCw1LDZ9OwoJCglhdXRvIGNvbnN0IGNvbEluZGV4ID0gMTsKCWF1dG8gY29uc3QgY29sID0gc3RkOjp2ZWN0b3I8ZG91YmxlPns3LDh9OwoJLy8gaW5zZXJ0IGNvbHVtbiB7Nyw4fSBpbnRvIHRoZSAybmQgcG9zaXRpb24KCS8vID0+ezEsNywyLDMsNCw4LDUsNn0KCQoJLy8gb3B0aW9uIDE6IGluc2VydCBpbi1wbGFjZQoJLy8gZm9yKGF1dG8gaSA9IDA7IGkgPCBjb2wuc2l6ZSgpOyBpKyspCgkvLyAJLy8gK2kgYi9jIHNpemUgaW5jcmVhc2VzIGJ5IDEgZWFjaCBpdGVyYXRpb24KCS8vIAl4Lmluc2VydChiZWdpbih4KSArIGNvbEluZGV4ICsgaSAqIChuICsgMSksIGNvbFtpXSk7CgkJCgkvLyBvcHRpb24gMjogdGVtcCB2ZWMgYW5kIHN3YXAKCXsKCQlhdXRvIHRtcCA9IHN0ZDo6dmVjdG9yPGRvdWJsZT4obSoobisxKSk7CgkJCgkgICAgZm9yKGF1dG8gaSA9IDA7IGkgPCBtOyBpKyspCiAgICAgICAgewogICAgICAgIAlmb3IoYXV0byBqID0gMDsgaiA8IGNvbEluZGV4OyBqKyspCiAgICAgICAgICAgICAgICB0bXBbaiArIGkgKiAobiArIDEpXSA9IHhbaiArIGkgKiBuXTsKCiAgICAgICAgICAgIHRtcFtjb2xJbmRleCArIGkgKiAobiArIDEpXSA9IGNvbFtpXTsKCiAgICAgICAgICAgIGZvcihhdXRvIGogPSBjb2xJbmRleCArIDE7IGogPCBuICsgMTsgaisrKQogICAgICAgICAgICAgICAgdG1wW2ogKyBpICogKG4gKyAxKV0gPSB4WyhqIC0gMSkgKyBpICogbl07CiAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgc3RkOjpzd2FwKHRtcCwgeCk7Cgl9OwoJCglmb3IoYXV0byBjb25zdCYgeGkgOiB4KQoJCXN0ZDo6d2NvdXQgPDwgeGkgPDwgTCIgIjsKCQoJcmV0dXJuIDA7Cn0=