ACM の例では、動的プログラミング用の大きなテーブルを作成する必要がありました。各セルに 2 つの整数を格納する必要があったため、 を使用することにしましたstd::pair<int, int>
。ただし、それらの巨大な配列を割り当てるのに 1.5 秒かかりました。
std::pair<int, int> table[1001][1001];
その後、私はこのコードを次のように変更しました。
struct Cell {
int first;
int second;
}
Cell table[1001][1001];
割り当てには 0 秒かかりました。
この大きな時間の違いは何によって説明されるのでしょうか?
ベストアンサー1
std::pair<int, int>::pair()
コンストラクターはフィールドをデフォルト値 ( の場合はゼロint
) で初期化しますが、 ではstruct Cell
初期化しません (何もしない自動生成されたデフォルト コンストラクターしかないため)。
初期化には各フィールドへの書き込みが必要で、大量のメモリアクセスが必要となり、比較的時間がかかります。struct Cell
代わりに何も行われず、何もしない方が少し速くなります。