[解決済み] Constマップ要素へのアクセス
質問
私は
operator[]
の中の要素にアクセスします。
const map
にアクセスしようとしましたが、この方法は失敗しました。また
at()
を使って同じことをやってみました。今度はうまくいきました。しかし、私は
at()
の中の要素にアクセスするための
const map
. は
at()
に新しく追加された関数です。
map
? この件に関する詳しい情報はどこにあるのでしょうか?ありがとうございました。
例としては、以下のようなものが考えられます。
#include <iostream>
#include <map>
using namespace std;
int main()
{
map<int, char> A;
A[1] = 'b';
A[3] = 'c';
const map<int, char> B = A;
cout << B.at(3) << endl; // it works
cout << B[3] << endl; // it does not work
}
"B[3]"を使用した場合、コンパイル時に以下のエラーが返されました。
t01.cpp:14: error: Pass 'const std::map<int, char, std::less, std::allocator<std::pair<const int, char> > >' を '_Tp&' の 'this' 引数として渡す。 std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const _Key&) [with _Key = int, _Tp = char, _Compare = std::less, _Alloc = std::allocator<std::pair<constのint, char> >]' は、修飾語を破棄します。
使用したコンパイラはg++ 4.2.1です。
どのように解決するのですか?
at()
は、新しいメソッドで
std::map
の新しいメソッドです。
として新しいデフォルトの構成要素を挿入するのではなく
operator[]
のように新しいデフォルトの要素を挿入するのではなく、与えられたキーを持つ要素が存在しない場合は
std::out_of_range
例外を投げます。(の挙動に似ています)。
at()
に対して
deque
と
vector
.)
このような動作のために
const
のオーバーロード
at()
とは異なり
operator[]
とは異なり、常にマップを変更する可能性を持っています。
関連
-
[解決済み】 != と =! の違いと例(C++の場合)
-
[解決済み】「Expected '(' for function-style cast or type construction」エラーの意味とは?
-
[解決済み] [Solved] インクルードファイルが開けません。'stdio.h' - Visual Studio Community 2017 - C++ Error
-
[解決済み】指定範囲内の乱数で配列を埋める(C++)
-
[解決済み】CMakeエラー at CMakeLists.txt:30 (project)。CMAKE_C_COMPILER が見つかりませんでした。
-
[解決済み】VC++の致命的なエラーLNK1168:書き込みのためにfilename.exeを開くことができません。
-
[解決済み] 警告:暗黙の定数変換でのオーバーフロー
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み] Static readonly」対「const」。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】 != と =! の違いと例(C++の場合)
-
[解決済み] string does not name a type Errorが発生するのはなぜですか?
-
[解決済み】抽象クラス型の無効なnew-expression
-
[解決済み】C++エラー:の初期化に一致するコンストラクタがありません。
-
[解決済み】C++の変数はイニシャライザーを持っているが、不完全な型?
-
[解決済み】fpermissiveフラグは何をするのですか?
-
[解決済み] 解決済み] `pthread_create' への未定義の参照 [重複] [重複
-
[解決済み】標準ライブラリにstd::endlに相当するタブはあるか?
-
[解決済み] 警告:暗黙の定数変換でのオーバーフロー