別の質問への回答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
再割り当ての目的で常に割り当てが必要です。