[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 08/28 06:40 / Filesize : 306 KB / Number-of Response : 1032
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part162



1 名前:sage [2022/10/31(月) 14:29:35.57 ID:J5sgTSch0.net]
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること

次スレは>>980が立てること
無理なら細かく安価指定

※前スレ
C++相談室 part161
https://mevius.5ch.net/test/read.cgi/tech/1653135809/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

610 名前:デフォルトの名無しさん mailto:sage [2022/12/08(木) 10:11:41.48 ID:JnPWza2ja.net]
>>590
とりあえずそれはなんとか収まったけどその後 配列 ≠ ハッシュ 君が粘着しだした

611 名前:デフォルトの名無しさん mailto:sage [2022/12/08(木) 10:26:23.30 ID:7N/fyoNc0.net]
煽り耐性なさすぎなハッシュ君
ちょっとカマかけると元気にお返事しやがんのw

終わりにしたいなら反応しなきゃいいのに
わざわざ出てくるマゾ野郎w

612 名前:デフォルトの名無しさん mailto:sage [2022/12/08(木) 12:19:06.63 ID:qJNUqX4GM.net]
ハッシュの話をするやつはコテハン付けろ。NGするから。

コテハン無しでハッシュを話題にするのは禁止な。

613 名前:デフォルトの名無しさん mailto:sage [2022/12/08(木) 12:45:20.88 ID:JnPWza2ja.net]
カマなんてかけてもないのに頓珍漢レスしてるキチに言われてもねw

614 名前:デフォルトの名無しさん mailto:sage [2022/12/08(木) 13:41:50.14 ID:7N/fyoNc0.net]
反応してる時点でおまえ悔しさがにじみ出てるからw
こっちは誰が何と言おうと絶対に揺るがない基礎理論に基づいているから安心してアホにできてオモロイだけ

615 名前:デフォルトの名無しさん (ワッチョイ 30ad-4FAg) mailto:sage [2022/12/08(木) 14:56:30.96 ID:d3Fi/Jhx0.net]
「C++」が「Java」を抜いて3位に--12月のTIOBEプログラミング言語ランキング - ZDNet Japan
https://japan.zdnet.com/article/35197053/
Liam Tung (Special to ZDNet.com) 翻訳校正: 編集部 2022-12-07 11:32

616 名前:デフォルトの名無しさん (ワッチョイ 721f-a1Dg) mailto:sage [2022/12/08(木) 15:02:28.31 ID:/H4Yp5E/0.net]
今更流行る理由があるのか
AI?

617 名前:デフォルトの名無しさん mailto:sage [2022/12/08(木) 16:44:45.46 ID:iuNweycO0.net]
多次元配列クラスのSTL入りもまだなのにAIwwwwwwwwwwwww

618 名前:デフォルトの名無しさん mailto:sage [2022/12/08(木) 16:45:49.30 ID:MKGRO6qH0.net]
>C++の人気が高まる一方で、Javaの人気は低下している



619 名前:デフォルトの名無しさん [2022/12/08(木) 18:04:41.79 ID:F9H67G14p.net]
今更メモリー管理したくないよぉ

620 名前:デフォルトの名無しさん mailto:sage [2022/12/08(木) 18:10:36.30 ID:z+sTXcJV0.net]
>>600
Objective-C(29位から19位に)
みたいな不思議ランキングなんだから、あんまり意味無いんじゃない?

621 名前:はちみつ餃子 mailto:sage [2022/12/08(木) 18:26:03.92 ID:FVxzWUbn0.net]
>>601
したくないけどする必要があるときには C++ くらいの機構があるとやりやすいんじゃろ。 知らんけど。

622 名前:デフォルトの名無しさん mailto:sage [2022/12/08(木) 18:33:45.11 ID:lUjyKwZV0.net]
デストラクタが無い言語とか論外じゃね?

623 名前:デフォルトの名無しさん mailto:sage [2022/12/08(木) 19:14:03.24 ID:ZTTdli19a.net]
基礎理論w

624 名前:デフォルトの名無しさん [2022/12/08(木) 19:42:03.83 ID:pXyaJjcm0.net]
欧米の知的な人たちの間でC++が流行ってるんだろ。

625 名前:デフォルトの名無しさん mailto:sage [2022/12/08(木) 19:43:41.79 ID:pfHF/B3ga.net]
したくないというポイントはだいたい稼げるところだな

626 名前:デフォルトの名無しさん mailto:sage [2022/12/08(木) 20:48:03.13 ID:+R/2mzDC0.net]
インテリ
ジェンス

627 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 04:54:52.93 ID:NVs+qJ8Ua.net]
まぁゲーム開発はいつまでもC++だからなぁ。ついでC#

628 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 12:17:36.89 ID:c/3U+eWJ0.net]
UIはその時の流行りの言語で書くけど戦術ロジックだけは絶対にC++で書きたい



629 名前:デフォルトの名無しさん [2022/12/10(土) 12:26:15.44 ID:z6yEzr6lp.net]
C#って、むしろ大規模になって来ると意味不明なエラーが出て破綻しないか?

630 名前:デフォルトの名無しさん [2022/12/10(土) 14:59:01.80 ID:mMjCV03FM.net]
C#が悪いわけではないけど、メモリー解放とかルーズにしたままある程度コード書けちゃうからね、、、
大規模になってくると無頓着だったメモリー解放が火を吹く感じはある

C++はそんなルーズな書き方してたらすぐ破綻するから、そういうコードは多くないけど初期の実装には多くの時間がかかる感じ

631 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 15:38:10.95 ID:Sts37KEXa.net]
c#のプロジェクトはなんか疎結合になっとらんこと多いわ

632 名前:はちみつ餃子 mailto:sage [2022/12/10(土) 17:52:23.34 ID:brInbnm70.net]
プロジェクトを分割しようとしてもどうにも分離しきれない絡み合った部分ってあると思うんよ。
そういうときは機能別に分割するというだけではなく絡み合った部分は絡み合ったものとしてレイヤとして切り分けると上手くいく。
面倒くさいところは一か所に押し込めて横に切る感じ。

C# のプロジェクトはレイヤで分ける意識が希薄で縦割りばかりするので分離しきれない結合が全体にうっすらと残ってる感じ。
密結合というほどではないけど全体にうっすらなので、面倒くさい箇所が一か所にまとまってるよりしんどい。

というのが私の印象。 C# のことはあんまり知らんけど。

633 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 18:06:38.22 ID:7p0k8251M.net]
https://ideone.com/gopFXn
なんか100回転してから落とすコード書いたはずがヘンな事になってる。
間違ってたかな?向こうのバグかな??

634 名前:デフォルトの名無しさん [2022/12/10(土) 20:25:28.70 ID:PM5iwksI0.net]
DのUpdateみると1000ms待たないと終わらないように見えるけどそれはいいの?

635 名前:ハノン mailto:sage [2022/12/10(土) 20:33:03.87 ID:6SBPs3AFH.net]
>>614
トップダウン、ボトムアップ、両面から書いていったとき、それが出会うところでグダグダなその場しのぎのコードに書かざるを得ない経験はありますね

636 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 20:33:20.22 ID:MWcOm8HwM.net]
#include <iostream>

int main() {
const int i = 1;
++*const_cast<int*>(&i);
std::cout << i;
}

何が表示されると思う?
違法?合法?

https://wandbox.org/permlink/57h9V6JX7fJes663

637 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 20:55:46.09 ID:G20+9FPP0.net]
>>618
const なオブジェクトに書き込

638 名前:゙のは許されない (未定義) が型の上で const を外すだけならアリ。 つまり ++ を除けば合法だが ++ のせいで違法。 []
[ここ壊れてます]



639 名前:デフォルトの名無しさん [2022/12/10(土) 21:19:19.36 ID:+Ttg8yU5a.net]
int main() {
const int i = 1;
int*j =const_cast<int*>(&i);
*j=2;
std::cout << &i<<" "<< j<<std::endl;
std::cout<<i <<" "<< *j;
}

https://wandbox.org/permlink/DC1E3ycea3UtdBAI

0x7ffc53e76e1c 0x7ffc53e76e1c
1 2

上のやつちょっといじってみた
アドレスの値同じなのに値違うんだけどなんでなんだろ

640 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 21:23:07.71 ID:QKVQj6nE0.net]
そりゃ未定義動作だもの
鼻から悪魔が出なかっただけありがたいと思え

641 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 21:57:24.92 ID:lr6mtoK80.net]
その処理系ではconst_castはコンパイラをごまかす宣言ではなく&iというオブジェクトを作ってるんだろう

642 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 22:07:20.11 ID:qktiUlCS0.net]
コンパイル時にiが1に置き換えられてるだけだろう

643 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 22:23:55.76 ID:lr6mtoK80.net]
それだけじゃ&iの動作について言及が足りない感じ

644 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 22:36:19.38 ID:HtRCvZl/0.net]
多分
 const int i = 1;
を受けた最適化の結果、
 std::cout<<i

 std::cout<<1
という意味のコードになったとかじゃないの
逆アセして調べると良い

645 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 22:38:11.75 ID:HtRCvZl/0.net]
あるいは真にiの値を見たいのなら
 ...(前半は同じ)...
 auto *p = (volatile int*)&i;
 cout << i << " " << j << endl;
みたいにするとか?
※ 個人の感想です

646 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 22:38:50.72 ID:HtRCvZl/0.net]
まつがえたorz
あるいは真にiの値を見たいのなら
 ...(前半は同じ)...
 auto *p = (volatile int*)&i;
 cout << *p << " " << j << endl;
みたいにするとか?
※ 個人の感想です

647 名前:デフォルトの名無しさん (ワッチョイ 477c-eoXr) mailto:sage [2022/12/10(土) 23:00:40.51 ID:QKVQj6nE0.net]
未定義動作をどうしようとコンパイラの自由なんだからそんなもの調べたってしょうがない
ちゃんと書けばいいだけのこと

648 名前:デフォルトの名無しさん (ワッチョイ 8710-bPD3) mailto:sage [2022/12/10(土) 23:01:50.82 ID:lr6mtoK80.net]
既に
std::cout << &i<<" "<< j<<std::endl;
により&iとjが同じ値であることは示されてる

auto *p = (volatile int*)&i;
これでも同じアドレスとして解釈されている(試した)

きっとconst_castに限らずconst領域のアドレスを解釈する時点で
ここのコンパイラは別領域を確保するんだな



649 名前:デフォルトの名無しさん (ワッチョイ 477c-eoXr) mailto:sage [2022/12/10(土) 23:07:18.20 ID:QKVQj6nE0.net]
そのcoutに出してるコードも含めて未定義動作なんだから出力されるゴミ文字列には何の保証も意味もないぞ
だからちゃんとやれ

650 名前:デフォルトの名無しさん (ワッチョイ df28-GD9R) mailto:sage [2022/12/10(土) 23:07:19.81 ID:HtRCvZl/0.net]
>>629
↓の間違いなのでは……
std::cout << &i<<" "<< &j<<std::endl
これが同じ値になるのなら、iとjが別の実体という仮説はむしろ棄却され、
鼻から悪魔が出たか、さもなくば>>625の説明ぐらいしか残らない

651 名前:デフォルトの名無しさん (ワッチョイ 8710-bPD3) mailto:sage [2022/12/10(土) 23:34:26.52 ID:lr6mtoK80.net]
>>631
jの型はアドレスint*やで

iと&iが別実体と解釈されてないとこの処理系の挙動は説明できないよ

652 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 00:20:42.40 ID:Pzj62nR+0.net]
>>632
左様かスマンカッタorz

今神のお告げがあったが多分
>iと&iが別実体と解釈されてないとこの処理系の挙動は説明できないよ
というのは
>変数iとcout << の引数としての定数1が別実体と解釈されてないとこの処理系の挙動は説明できないよ
と考えたら>>625と同じ……

653 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 00:25:27.26 ID:Wb0o85TW0.net]
>>633
iが最適化後定数だろうとconst変数だろうと&iについての説明が必要だし
>>625を否定してるわけじゃないよ
>>625のうえで&iがどう処理系で実装されているのかという話

654 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 00:29:21.03 ID:Wb0o85TW0.net]
あーごめん>>634は取り消し

655 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 16:42:27.87 ID:le6rXKgRM.net]
未定義動作ではいおしまいは思考停止では?
コンパイラの実装を考えてみるのも面白い

656 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 17:18:36.24 ID:SgVyrwp80.net]
ゴミ捨て場の汚物の配置を面白がる趣味もいいけどそれで宇宙の真理を読み取ったとか言い出されても困るんだわ

657 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 17:28:44.13 ID:B9k8N7vL0.net]
特定のコンパイラの挙動が知りたいなら逆アセしろ
仕様が知りたいなら未定義動作

と言うだけの事だろ

658 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 19:27:20.67 ID:vt5XMNwC0.net]
未定義踏んで、たまたま望む動作だった場合に、それを放置するのは危険すぎる



659 名前:はちみつ餃子 mailto:sage [2022/12/11(日) 19:44:01.28 ID:ftKoc+Hh0.net]
前後の状況との組み合わせでも結果が変わったりするから短いコードで試しても
そのコンパイラでの挙動を知れたとは言えんし……。

660 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 02:44:59.90 ID:m98xyCFn0.net]
挙動を考えるというか思想とか背景を考えるのが面白いんだよ
組み込みじゃconst領域は物理的に変えられない場合があるからって
余計な事考えちゃったけどたしかに>>625だろうなって

661 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 14:55:49.27 ID:P0mM9QsZM.net]
vector<string> v; の vを辞書順でソートした場合、string自体はメモリ上に
連続して並ぶが、肝心の文字列バッファは free store 上でバラバラに離れた
位置になるからキャッシュ・ミスし易くなるね。
stroustrup氏はリンクリストがキャッシュミスし易いと言って馬鹿にしていたが、
実際には動的配列(vector)でも大差は無い。
なお、リンクリストでキャッシュミスし易い典型例がソート後の全巡回ループ。
そしてその場合、vectorでもstringのようなメモリ資源ハンドルの場合は
キャッシュミスが免れない。

662 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 15:09:17.26 ID:P0mM9QsZM.net]
>>642
[補足]
そもそも、C++はcopyの代わりのmoveによる高速化を自慢しているが、
それが意味を持つのはstringのようにfree storeのメモリをポインタで持っている
ようなクラスである。
このご自慢のmoveが良く効くクラスTのvector<T>をソートした場合、
free storeの本当の中味のアドレスはソートされないまま。
なので、vectorを全巡回する時には、アドレスが飛びとびになり、キャッシュミス
が起き易い。

663 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 15:14:58.58 ID:b4gQwKir0.net]
>>642 うんうん。リンクリストにするとキャッスミスし易さがもう少し悪化するね。

664 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 15:21:22.44 ID:P0mM9QsZM.net]
>>644
この例の場合、vectorをlistに変えてもあまり悪化しない。
なぜなら、stringとその文字列バッファが近接したアドレスのfree store
上にallocateされていると期待できるから。

665 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 15:26:03.32 ID:P0mM9QsZM.net]
>>645
[補足]
list<string> v2; の場合、push_back すると、
p1 = new string;
相当の事が実行されるが、p1 の内部の文字列バッファも、string のコンストラクタ
の中で
p2 = new char[N];
のようにして free store から確保される。
確率的には、p1 と p2 は非常に隣接したアドレスになっている可能性が非常に
高い。
その結果として、p1をアクセスした直後にp2にアクセスしてもキャッシュミスは起きない。
その結果、vector<string>とlist<string>のソート後の全巡回でのキャッシュミス回数は、
ほぼ同じ。

666 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 15:33:08.04 ID:b4gQwKir0.net]
>>645 そうだね。悪化するのは少しだけだね。
おや? >>642 ではバラバラに離れてキャッシュミスしやすいと言っていた文字列バッファが
リンクリストの話になると近接するのかい?不思議だねぇ。

667 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 15:34:37.69 ID:s9w5HO4Md.net]
典型的な用途ではsmall-string optimizationで大部分が連続になるでしょ
リンクリストにその恩恵はない

668 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 15:37:07.44 ID:P0mM9QsZM.net]
>>647



669 名前:
>おや? >>642 ではバラバラに離れてキャッシュミスしやすいと言っていた文字列バッファが
>リンクリストの話になると近接するのかい?不思議だねぇ。
ソートしたときには、stringと対応する文字列バッファは意味論的には
くっついている。だから、「対応している」両者は隣接しているんだ。
[]
[ここ壊れてます]

670 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 15:39:41.84 ID:P0mM9QsZM.net]
>>649
[補足]
vector<string>をソートすると、stringの「箱」が新しく確保されてしまうので、
中身だけがmoveされるので、stringと対応する文字列バッファは「離れ離れになる」
list<string>をソートすると、stringはアドレスは全く変化せず、string同士の
リンクのされ方だけが変化するだけだから、stringと対応する文字列バッファは、
メモリー空間上でのアドレスの隣接を維持する。

671 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 15:40:54.03 ID:P0mM9QsZM.net]
>>648
それはstringだけの話。
今回はstringを例にとって話しただけで、一般のTではそんな現象は起きない。

672 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 15:49:40.91 ID:P0mM9QsZM.net]
>>650
[補足]
vector<string>のソート後の様子:
アドレス
0x0000: st100 ---> buf100 (st100とbuf100のアドレスは離れ離れ)
0x0010: st5 ---> buf5 (st5とbuf5のアドレスは離れ離れ)
st100とst5は隣接する。
ソート時に中身のアドレスだけがmove。

list<string>のソート後の様子:
st100 ---> buf100 (st100とbuf100は隣接したまま)
st5 ---> buf5 (st5とbuf5は隣接したまま)
st100とst5は隣接しない(但し、元のアドレスを維持したまま)。
ソート時には、一切のmoveもcopyも全く発生せず。

673 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 22:25:35.59 ID:1Of7Vyge0.net]
いちいちキャッシュのことまで考えて書いたことなんかないですねえ

674 名前:デフォルトの名無しさん [2022/12/12(月) 22:29:51.34 ID:EC98/b6s0.net]
天才ですから

675 名前:デフォルトの名無しさん (ワッチョイ 8710-bPD3) mailto:sage [2022/12/12(月) 22:53:10.09 ID:m98xyCFn0.net]
ソート済みならソートの利点を生かしたデータアクセスが主だろうからなあ
まあ最悪値を考えるかアベレージを考えるかはプログラム次第か

676 名前:デフォルトの名無しさん (ワッチョイ df28-GD9R) mailto:sage [2022/12/12(月) 23:33:02.97 ID:OmhP4qQH0.net]
キャッシュミスが起きるとか
キャッシュに収まりきらない要素数のリンクリストを
全要素まんべんなくアクセスし続ける場合とかの話であって
そうなれば区々たるデータ構造などあんま意味を成さなさげ

677 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 06:29:45.20 ID:RVT68Vp10.net]
>>656
だからお前のコードは遅いんだな

678 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 07:27:28.93 ID:XemHbbXi0.net]
配列とハッシュの話を蒸し返すけど、キャッシュに退避したデータを取り出す仕組みはハッシュなので、配列も無意識・無自覚のハッシュといえる



679 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 07:49:45.53 ID:HbzfEbfW0.net]
トホホw

680 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 09:16:15.65 ID:Dz/G0kAxd.net]
プログラムのフェッチもハッシュ、ライトもハッシュ、全てはハッシュに収束するのだ

681 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 09:37:04.67 ID:XemHbbXi0.net]
ありていにいえば、他のレイヤーのデータを参照する時にハッシュを使わないと処理速度が落ちてしまうので、いたるところに速度対策でハッシュ参照が実装されているってのがFA

682 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 09:54:38.28 ID:6kCyUqZEd.net]
仮にunordered_vectorなるものがあったにしても、それはハッシュではない

683 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 10:16:13.34 ID:3/h11tyKd.net]
それunordered_setじゃね

684 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 10:32:20.10 ID:nLXwCo+B0.net]
vectorはそもそもunorderdだろ
setは同じ値を格納できないのだからvectorとは違う

685 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 11:27:12.09 ID:qMfL3xzXM.net]
全文字列を結合したものを一括で確保して string_view を操作するのが1番パフォーマンス良さそう

686 名前:デフォルトの名無しさん (ワッチョイ dfad-KKgq) mailto:sage [2022/12/13(火) 11:41:42.04 ID:XemHbbXi0.net]
>>665
失礼な言い方になるかもしれませんが、あなた初心者ですね
“パフォーマンス”を気にする人はそもそもC++なんて使いませんよ

687 名前:デフォルトの名無しさん (アウアウウー Sa6b-SJNI) mailto:sage [2022/12/13(火) 11:47:57.08 ID:QcbajiAMa.net]
>>666
そんなに苦手だったんか
まあこれから練習したらええよ

688 名前:U) mailto:sage [2022/12/13(火) 12:02:52.82 ID:RxDW3iqvd.net]
パフォーマンスを気にする人は何を使うんでしょうか



689 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 12:10:16.41 ID:6kCyUqZEd.net]
>>664
意味わからん
気がふれた?

690 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 14:54:36.88 ID:56FF6Qc2a.net]
>>669
え?w

691 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 16:20:37.61 ID:6kCyUqZEd.net]
>>670
vectorがunorderedとが頭おかしいのかって

692 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 16:36:06.63 ID:RxDW3iqvd.net]
えっ???

693 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 16:50:01.90 ID:nLXwCo+B0.net]
>>669
c++のunorderd_は挿入時に挿入要素のキーによるソートが行われず要素の格納順が実装依存なコレクションに付けられている名称だから、vectorがunoreded_かどうかと言えばyesじゃない?

694 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 16:51:40.89 ID:Dz/G0kAxd.net]
vectorがorder性持ってたら逆に困る

695 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 17:09:14.84 ID:Dz/G0kAxd.net]
intkeyのorderedmapってことか

696 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 17:26:33.26 ID:nLXwCo+B0.net]
>>675
そういう考え方もあるか
でもiteratorで途中指定してinsertしたらそれ以降のキーと要素の対応全部ずれるしmapと考えるのはどうなんだ

697 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 17:27:23.47 ID:qOIMmk+U0.net]
ランダムアクセスできるデータ構造でordered_だのunordered_だの定義してもこじつけでしかないし意味薄いんでは

698 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 18:15:32.74 ID:afkUacc60.net]
てす



699 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 18:20:36.37 ID:7X0MJm0+a.net]
そんな事を言い出したらページアウトされてるデータの読出しになるかもしれないからディスクアクセスかもしれないだろ

700 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 18:25:37.11 ID:6kCyUqZEd.net]
>>673
格納順を定義しろ

701 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 18:29:09.49 ID:6kCyUqZEd.net]
ふざけたオレ定義はトコトン馬鹿にしてやんよ

702 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 18:32:26.52 ID:nLXwCo+B0.net]
>>680
iterator でたどれる順番

703 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 18:35:45.77 ID:nLXwCo+B0.net]
>>680
ところでこの話の発端のhashでないunorderd vector ってどんなものをイメージしてたの?

704 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 18:46:51.67 ID:RVT68Vp10.net]
>>681
まずはお前の定義を書け

705 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 18:50:59.76 ID:6kCyUqZEd.net]
>>682
今、屋台で酒飲んでるから後でな

706 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 18:55:09.41 ID:c7PbDuSHM.net]
>>673
vectorは連続したメモリ領域に要素を保存し、順番に並ぶことを保証する。

そうやってc配列との互換性を保っているのは常識かと思っていたけど、仕様変わったの?

707 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 19:04:10.54 ID:nLXwCo+B0.net]
>>686
それで正しいと思うよ
c++のunorderd_/(ordered_)は要素をキーにしてコレクションがソート済みになるかどうかを意味してると考えれば>>673とも矛盾してないでしょ?

708 名前:デフォルトの名無しさん (ワッチョイ a7f0-exKU) mailto:sage [2022/12/13(火) 19:20:14.84 ID:RVT68Vp10.net]
ordered_配列 ==> 勝手に中身がソートされる配列
が思い浮かぶ



709 名前:デフォルトの名無しさん (ブーイモ MM8f-5DNi) mailto:sage [2022/12/13(火) 19:23:38.37 ID:LOsLj3+sM.net]
>>688
std::multiset なんてのがあるんだな

710 名前:デフォルトの名無しさん (オイコラミネオ MM7b-VZV0) mailto:sage [2022/12/13(火) 19:24:14.15 ID:jWNvO27sM.net]
そもそも、ordered かどうかは定義の問題。
まず、mapは、(key,value)を持っていて、keyで検索できる。setは、keyだけでvalueが無いが、
keyで検索できる。setは、mapでvalueをkeyにしたようなもの。だから、以下ではmapだけ
の話をする。
mapやunorderd_mapは、「検索」機能とbegin(),end() を利用した「巡回機能」の
両方を持っていて、巡回を key の大小関係順に巡れるかどうかで、
ordered かどうかが決まる。
バランス木(赤黒木など)を使う方が 接頭辞なしの map、ハッシュ法を使う方が
unorderd_map
前者の場合は、常に自動的に並び替えられた状態で格納される。
一方、そもそも vector は、好きな順序で入れられて決まったキーもなければ
自動的に並び替える機能も持ってないし、orderedかどうかを定義しても
特に意味が無い。そもそも、orderdのvectorが存在し無い。
また、故意に作ってもしょうがない。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<306KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef