std::vector があります。このベクトルを次のように割り当てます
vec.assign(20000, 0);
これで、ベクトルに挿入する追加の配列ができました。ただし、挿入だけでなく、ベクター内の要素をさらに置き換えます。
uint8_t a[] = {1,2,3,4,5,6,7,8};
新しいメモリを割り当てずに、その配列を位置 x - x+8 のベクトルに移動します。
私が試して動作するのはもちろんです
vec.insert(start, a, a+8);
しかし、そこで新しいメモリを割り当てており、ベクトルのサイズが変更されていますが、これは発生するはずがありません。はい、多すぎるエントリを削除することはできますが、まだ問題があり、より多くのメモリを割り当てています。配列をベクトルの内容に置き換えるだけの可能性はありませんか? そのようなもの:
vec.replace(start, a, a+8);
各要素の交換は避けたかったので、時間がかかりすぎるのではないかと心配しています。
どう思いますか?それを行う方法はありますか?あなたも以前にその問題を抱えていましたか?どのように修正しましたか?