No.3ベストアンサー
- 回答日時:
コンテナなどは、連続性といっても見かけの連続性だけを保証するのが普通です。
その意味からは、物理的なアドレスが固定されているかどうかは断言できません。
そういうわけで、コンテナの場合は、ポインタ経由ではなくて、イテレータ経由でアクセスするわけです。
ただ、deque は、[] をサポートしているので、
std::deque<int> que;
に対して、 que[0], que[1] などは、期待通りの動作をするはずです。(未確認)
残念ながら、list は、[] をサポートしていませんので、同じ記述はできません。
もともと、配列のレベルであっても、連続性は厳密には、
・ &a[n] - &a[m] が、n - m に等しくなる
・ ptr = &a[n] のとき、*(ptr + m) は、a[n + m] をポイントする
ということであって、あからさまに、物理的なメモリのアドレスは出てこないですから。
なので、ポインタ同士の減算も、「両方のポインタが同じ配列にあるか、一度に malloc() された同じ領域をポイントしている場合」しか、保証されていなかったりします。
>>その意味からは、物理的なアドレスが固定されているかどうかは断言できません。
欲しかった言葉がいただけて光栄です。
Listは挿入や削除を行った直後でも前後のイテレータの内容が保障されているという説明を聞いたことがあり、
物理的なアドレスも固定されておりお互いのアドレスを相互に睨み合っているものなのだろうか?と疑問に思っておりました。
(イテレータを用いているのはSTLの操作としてある程度の規格を保つため?と勝手に想像)
説明を読ませていただいて、コンテナや配列の物理アドレスはイメージしていたものより全然緩いことが分かりました。
ありがとうございました。
No.2
- 回答日時:
大雑把には「操作によってイテレータが無効になるかどうか」を基準に判断すればいいんじゃないでしょうか.
確かに「将来的に変わりえる」とはいえ, この辺のデータ構造はある意味「できあがっている」ものなのでそうそう変化しないと思います.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 賃貸マンション・賃貸アパート 周囲に気づかれずアパートもしくは貸しコンテナを借りる方法 1 2022/07/31 18:18
- 弁護士・行政書士・司法書士・社会保険労務士 行政書士試験の民法についての質問になります。 解除についての質問になります。 問 Aが、その所有する 2 2023/07/18 17:33
- 医療保険 親知らずの抜歯と医療保険について質問です。 現在、右上の完全に埋まっている親知らずが痛くて抜歯を考え 1 2023/05/12 15:08
- その他(パソコン・周辺機器) タブレットで使用するUSBメモリについて 7 2022/05/26 14:27
- Outlook(アウトルック) 標準アカウントをOUTLOOKアプリに登録するとほかのアカウントのメールもこのアドレスに受信される 1 2023/02/03 20:34
- 確定申告 複数の掛け持ちバイトの確定申告はどのようにしたらいいですか? 1 2023/01/04 10:30
- 健康保険 社会保険の適用拡大について 3 2022/09/06 18:12
- Visual Basic(VBA) VBAについて教えてください 4 2022/11/10 12:44
- YouTube youtube動画再生について… 1 2022/04/08 04:24
- その他(学校・勉強) この中で間違ってある説明はありますか?詳しい方に教えていただきたいです。 A. 1つのプログラムが複 2 2023/07/14 01:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セグメントエラー
-
init関数の意味
-
Run-Time Check Failure #3とい...
-
アプリを32bitから64bit移行
-
DLL<->VB間での受け渡し(文字...
-
C言語のポインタに直接アドレス...
-
LPSTR型の初期化について
-
参照型で受け取った引数をポイ...
-
戻り値で構造体を返すことは可...
-
構造体とfscanf
-
fopne で失敗する原因
-
NASMかNASKの文法の本
-
関数ポインタの高速化のメリット
-
自作関数の引数
-
Cで作成したDLL関数をVBから呼...
-
popenした子プロセスのプロセス...
-
#define NULL ((void *)0) の弊害
-
C言語のプログラムをJavaに...
-
visual studioのエラーについて
-
x64プログラムでアドレスが32bi...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セグメントエラー
-
C言語のポインタに直接アドレス...
-
init関数の意味
-
戻り値で構造体を返すことは可...
-
fopne で失敗する原因
-
C言語の関数と配列に関する質問
-
Run-Time Check Failure #3とい...
-
LPSTR型の初期化について
-
ExcelVBAでのkernel32(64bit)
-
main(int argc,char **argv[])...
-
アプリを32bitから64bit移行
-
ハンドルはポインタか
-
連結リスト 要素の入れ替え
-
C言語でのconstを返す関数
-
Cで作成したDLL関数をVBから呼...
-
NULLとブランクの違い
-
エラーの意味
-
ハンドル、アドレス、ポインタ...
-
DLL<->VB間での受け渡し(文字...
-
【C言語】戻り値が構造体の関数
おすすめ情報