C++言語において std::map を定数として使う場合、以下のどの使い方が適切ですか?
いずれも変更不可となるため、どれが正しいのか分かりません。
型が違うこと以外に、何か違いが生まれますか?
(1) const std::map<int, int> (インスタンスのconst)
(2) std::map<int, const int> (値のconst)
(3) const std::map<int, const int> (インスタンスと値のconst)
(4) キーもconstにした上で(1)~(3)
No.2
- 回答日時:
テンプレートクラスについてはテンプレート引数まで含めて「型名」という扱いになるから, 「実質的に同じ」であってもシステム上違うことになるのはしょうがないですねぇ. というか, 「違う型だけど」ってところが「本質的」「実質的」に隠れてるわけでして.
あと念の為明確にしておくと,
std::map<int, int> と std::map<int, const int>
とは動作も違う. 質問文では全体が const になってるから同じ挙動になっちゃうけど.
No.1ベストアンサー
- 回答日時:
std::map を定数にして使い続けるって, 考えてみたら経験ないなぁ. たいていなんかのクラスのメンバーにしちゃってるし.
さておき, 本当に「std::map を定数にする」なら (1) か (3) じゃないかな. 多分実質的に同じことになるだろうけど.
(4) はそもそも意味がない (キーは最初から const がつくので) し, (2) は「削除して追加」という迂回路で結果的に中身を変えることができるはず.
ありがとうございます。
(2) の問題点は理解しました。
となると、1, 3, 4-1, 4-3 ですが、これらは本質的には全く同じものを指しているのに、型は(当然)異なります。
全く同じものなのに型は異なるというのは違和感があるのですが、、そういうものとして諦めるしかないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# このプログラミング誰か教えてくれませんか 2 2022/05/14 09:45
- C言語・C++・C# このプログラミング誰か教えてくれませんか 3 2022/05/13 17:27
- JavaScript WordPressのコンタクトフォーム7にて送信者の位置情報を送らせたい 2 2022/09/14 23:28
- C言語・C++・C# Cの関数の引数のconst *charについて 5 2023/04/25 13:05
- C言語・C++・C# C++初心者です stirng 2 2022/09/20 20:43
- Visual Basic(VBA) 数式が消える 1 2023/03/19 16:55
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
C++言語で、構造体のコピーは可能(しても良い)のでしょうか?
C言語・C++・C#
-
C++のfor文について
C言語・C++・C#
-
既定のコンストラクタがない?
C言語・C++・C#
-
-
4
MFCでコンボボックスを選択不可状態にしたい
C言語・C++・C#
-
5
std::stringからLPCWSTR型への変換
C言語・C++・C#
-
6
C++でboolにintの値を代入することについて
C言語・C++・C#
-
7
C++ 構造体の一括初期化 {0}
C言語・C++・C#
-
8
c++,ある関数のクラスから別のクラスの関数を呼ぶ
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
switch文のエラーについて
-
VC++で文字列から任意の文字を...
-
このプログラミング誰か教えて...
-
ファイル読み込みとmap処理
-
boost::lexical_castで16進数文...
-
enumの値から定義名を文字列化...
-
Linux Ubuntu19.10でQt5.14.1の...
-
ハミング符号の解読について
-
セグメンテーションフォルトが...
-
#include "fstream.h"
-
C言語からgnuplot呼び出し
-
vectorの中にmap
-
Haru PDF Library
-
C++で、テキストファイルを一行...
-
C言語のポインターで詰まっている
-
snprintfが使用できない。
-
winpcapを用いたプログラミング
-
C言語プログラミングにて、関数...
-
JPEGやPNGが読めるLoadImage関数
-
Vectorのポインタが入ったvector
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
構文エラーが出ているのですが...
-
VC++で文字列から任意の文字を...
-
enumの値から定義名を文字列化...
-
switch文のエラーについて
-
空ENTERの判別
-
なぜ、C++の標準ヘッダをインク...
-
【C++】ヘッダ内でstringを格納...
-
C++での <iostream.h>と<iostre...
-
#include "fstream.h"
-
#define中の#のエスケープ
-
JPEGやPNGが読めるLoadImage関数
-
リモートデスクトップの接続元I...
-
CStringとString
-
string型のフォーマット書式指...
-
std::map の const 修飾について
-
VHDLのsignedとunsignedの違いは?
-
このプログラミング誰か教えて...
-
構造体配列のvectorへの変換と...
-
指定した文字を削除したい
-
構造体に決められた文字列を入...
おすすめ情報