存取常數映射中的元素:運算子[]與at()
使用常數映射時,使用運算子[存取元素] 可能會失敗。然而,使用 at() 是一個可行的替代方案。為什麼會出現這種情況?
在非常量映射中,operator[] 執行兩個功能:
但是,在const 映射中,operator[] 不允許修改底層數據結構。因此,它只能執行第一個函數,並在嘗試使用第二個函數插入新元素時拋出錯誤。
相反,at() 是 C 11 中引入的一種方法,專門用於存取 a 中的元素。常量映射。它提供了幾個好處:
基於這些原因,at() 是存取元素的建議方法一個 const std::map。範例程式碼:
#include <iostream> #include <map> int main() { std::map<int, char> A; A[1] = 'b'; A[3] = 'c'; const std::map<int, char>& B = A; std::cout << B.at(3) << std::endl; // it works std::cout << B[3] << std::endl; // it does not work }
將輸出:
c error: can't access elements with operator[] in a const std::map
以上是常數映射存取:為什麼使用 `at()` 而不是 `operator[]`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!