迷いませんか?

継続しないを座右の銘に

vectorをinsertしようとしたらabortしたから原因と直し方

vector結合しようとしたらabortした

abortっていうのはwhat(): vector::_M_range_insertってのが出てくるやつです
これが起こるときの例はこちらです

class Test{
private:
    vector<int> v;
public:
  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 
    コンストラクタとか
  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 
    vector<int> getVector();
};

int main(void){
    Test t;
    vector<int> v2; 
  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 
    Testのvとv2は適当に初期化
  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
    v2.insert(v2.end, t.getVector().begin(), t.getVector().end());

    return 0;
}

こんな感じです
〜〜〜〜で区切ってるところは中略と思ってください
t.getVector()とやった時に返ってくる値は、vのコピーであるため、
一回目と二回目のt.getVector()は違うものです!!!
内容は同じかもしれないけれど、begin()、end()が変わってきます!!!
ならどうすればいいのか?

コピーが返ってくるならコピーを返さなければいいじゃない

ということです!
つまり、

//before
    vector<int> getVector();
//after
    const vector<int>& getVector();

でいいです