std::ペア 2つのintを持つ構造体との比較 質問する

std::ペア 2つのintを持つ構造体との比較 質問する

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代わりに何も行われず、何もしない方が少し速くなります。

おすすめ記事