定数マップ内の要素へのアクセス: Operator[] と at()
定数マップを使用する場合、operator[ を使用して要素にアクセスします。 ]は失敗する可能性があります。ただし、at() の使用は実行可能な代替手段です。なぜそうなるのでしょうか?
非定数マップでは、operator[] は 2 つの関数を実行します:
ただし、const マップでは、operator[] は基礎となるデータ構造を変更することはできません。したがって、最初の関数のみを実行でき、2 番目の関数を使用して新しい要素を挿入しようとするとエラーがスローされます。
対照的に、at() は、C 11 で導入されたメソッドであり、特に、要素にアクセスするために使用されます。定数マップ。これにはいくつかの利点があります。
これらの理由から、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
以上がConst Map アクセス: なぜ `operator[]` の代わりに `at()` を使用するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。