fork(1) download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. int main() {
  5. auto m = 2; // #rows
  6. auto n = 3; // #cols
  7. // row-major vector
  8. auto x = std::vector<double>{1,2,3,4,5,6};
  9.  
  10. auto const colIndex = 1;
  11. auto const col = std::vector<double>{7,8};
  12. // insert column {7,8} into the 2nd position
  13. // =>{1,7,2,3,4,8,5,6}
  14.  
  15. // option 1: insert in-place
  16. // for(auto i = 0; i < col.size(); i++)
  17. // // +i b/c size increases by 1 each iteration
  18. // x.insert(begin(x) + colIndex + i * (n + 1), col[i]);
  19.  
  20. // option 2: temp vec and swap
  21. {
  22. auto tmp = std::vector<double>(m*(n+1));
  23.  
  24. for(auto i = 0; i < m; i++)
  25. {
  26. for(auto j = 0; j < colIndex; j++)
  27. tmp[j + i * (n + 1)] = x[j + i * n];
  28.  
  29. tmp[colIndex + i * (n + 1)] = col[i];
  30.  
  31. for(auto j = colIndex + 1; j < n + 1; j++)
  32. tmp[j + i * (n + 1)] = x[(j - 1) + i * n];
  33. }
  34.  
  35. std::swap(tmp, x);
  36. };
  37.  
  38. for(auto const& xi : x)
  39. std::wcout << xi << L" ";
  40.  
  41. return 0;
  42. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
1 7 2 3 4 8 5 6