私は10,000行のコードを読み込むプログラムを作っています。私はvectorのunordered_mapを持っていて、各行はその新しい配列にデータを追加します(新しいキーの形式か、ベクトルの1つに追加のデータを追加します)。unordered_mapsとベクトルのstd :: bad_allocを防ぐのに役立つ良い方法は何ですか?
各行について、私はemplaceを使用してデータを保存しています。例えば、私は私が
temp.push_back(someInt);
を使用してデータを保存し、その後
uList.emplace(someKey, temp);
temp.clear();
と私のunordered_mapにそのベクトルを格納したり、私は1つにデータを追加
vector <int> temp;
を持っていますを用いて地図ベクトルのうちのいずれかを選択する。
uList[i].push_back(someInt);
これは1行に複数回発生し、次の行に移動して何度も何度もやり直します。
私が手にエラーが
私はそれが原因で私のunordered_mapかでメモリを割り当てる問題のだと仮定してい
「『のstd :: bad_alloc』のインスタンスを投げた後に呼び出さを終了」であります私が持っているベクトル。
私の質問:unordered_mapは.emplace()を何度も使用するとメモリ割り当てに問題があり、ベクトルや順序付けられていないマップの不正な割り当てを防ぐための一般的な方法はありますか?
何か愚かな助けをする私に私を呼び出すことさえ助言してくれます!
あなたは一時的な名前をつけたので、 'std :: move(temp)'を使いたいかもしれません。デフォルトではC++はそこから移動しません。これはまた、移動されたベクトルを「クリア」する必要がないことを意味する。 – MSalters