単純にコピーした場合は全ての要素をコピーすることになるためO(mn)になります(mとnは行と列の数)。そこで次のような方法で改善できる可能性があります。
Copy-On-Writeとは、コピーの時は参照のようなものをしておくだけで、要素を変更するときにコピーを行うというものです(実装によって細部は異なります)。実装例としてはPHPの配列が有名です。コピー自体はO(1)になりますが、いざ、要素に変更があるときは、コピー処理が遅れて走ることになります。しかし、二次元配列の一段階目もCopy-On-WriteであればそれぞれO(1)でコピーされますので、O(m+n)で処理できることになります。
Copy-On-Writeなvector実装を探したのですが、見つけられませんでした。探せばあるかも知れませんが、単純な実装では浅いコピーになってしまう恐れがあり難しいかも知れません。初めから2次元のmatrixとして作り込んだ方がいいかもしれません。
immutableなvectorを使う
実装方法によりますが、もし、immutableなvectorであれば、代入はコピーが不要になるため、O(1)になります。要素変更はCopy-On-Writeと同じくO(m+n)になるはずです。理論上はですが。
immerというライブラリがあるようです。全く試していませんので、どうなるかはわかりません。また、immutableはコードの書き方は通常のmutableと全く異なってきますし、場合によっては全体として遅くなることもあります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。