別の質問への回答constは、(おそらく)オブジェクト
のコンテナーを持てない理由を説明しました。たとえば、これは許可されていません。
vector<const int> v; //not allowed
しかし、なぜpair最初のオブジェクトが であることを許可するのconstでしょうか? これは実際、オブジェクトpair内の s で起こることです。map何か不足していますか?
この現象の詳細で直感的な説明をいただければ幸いです。
別の質問への回答constは、(おそらく)オブジェクト
のコンテナーを持てない理由を説明しました。たとえば、これは許可されていません。
vector<const int> v; //not allowed
しかし、なぜpair最初のオブジェクトが であることを許可するのconstでしょうか? これは実際、オブジェクトpair内の s で起こることです。map何か不足していますか?
この現象の詳細で直感的な説明をいただければ幸いです。
主な理由は、std::pairオブジェクトを再割り当てしないため、割り当て可能である必要がないためだと思います。
アップデート:
実際、割り当て可能なオブジェクトを必要とするコンテナは vector だけです。これは、標準ベクトルに応じて、その要素の連続した格納場所が必要なためです。そのため、オブジェクトを追加する余地がない場合、ベクトルはそのデータを別の場所に再割り当てする必要があります (したがって、オブジェクトの割り当て可能なプロパティを使用します)。
std::pairあなたがそれに割り当てようとする場合にのみ、その内容が割り当て可能である必要があります。ただし、std::vector再割り当ての目的で常に割り当てが必要です。