ベクトルを使用していますが、さまざまな理由から、ポインターを使用して個々の要素を参照しています。問題は、要素を追加すると、ベクトルのサイズが変更され、要素が別のより大きなメモリ アドレスに移動される可能性があることです。これにより、ポインターが無効になります。
再割り当てを避けるためにvector<T>::reserve
、ベクターを使用する前に呼び出します。ただし、十分なスペースを予約していない場合があります。この例では、ベクトルが暗黙のうちにサイズ変更を試みるのではなく、例外をアサートまたはスローするようにしたいと考えています。
ベクトルまたは別のデータ構造を使用してこれを行う方法はありますか? C99 可変長配列を使用できますか? その場合、コンストラクターで正しい長さに初期化するにはどうすればよいですか? または、明示的にサイズ変更可能な独自のベクターをロールアウトする必要がありますか?