C++ vs Rust
■ このスレッドは過去ログ倉庫に格納されています
2021/04/24(土) 08:04:49.48ID:nPKzA798
競え
365デフォルトの名無しさん
2021/11/23(火) 19:59:41.90ID:VKZug2mU いまどきC++使ってるのは老害でしょう。
すぐにRustを始めるべきです。
すぐにRustを始めるべきです。
366ハノン ◆QZaw55cn4c
2021/11/23(火) 20:09:04.33ID:A++o7U7T あわしろ氏って、もしかして馬鹿ぁ?
367デフォルトの名無しさん
2021/11/23(火) 21:01:08.57ID:VKZug2mU 低能が何か申しておりますw
368デフォルトの名無しさん
2021/11/23(火) 21:24:52.33ID:dif3t6ob >>364
俺は調査目的で調べてるだけで、実用的に使うつもりはないからな。
俺は調査目的で調べてるだけで、実用的に使うつもりはないからな。
369デフォルトの名無しさん
2021/11/23(火) 22:01:53.34ID:qrGqDm2c >>368
たまに見かける使いこなせなくて脱落したケース?
たまに見かける使いこなせなくて脱落したケース?
370デフォルトの名無しさん
2021/11/23(火) 22:12:56.79ID:WEl5Ae/m あわしろって誰?調べても出てこない
371デフォルトの名無しさん
2021/11/23(火) 23:01:49.38ID:dif3t6ob >>369
使う必要性を感じない。
使う必要性を感じない。
372デフォルトの名無しさん
2021/11/24(水) 07:30:28.98ID:bRL60DLP >>368
であれば、批判する資格はないな
であれば、批判する資格はないな
373デフォルトの名無しさん
2021/11/24(水) 10:47:07.21ID:vbixrgR4 >>372
有る。
有る。
374デフォルトの名無しさん
2021/11/24(水) 10:49:35.25ID:kXzWnsgO 仮に泡白という人物が実在したとしても
ここで連呼されるのは本人も迷惑してるんじゃないかな
ここで連呼されるのは本人も迷惑してるんじゃないかな
375デフォルトの名無しさん
2021/11/24(水) 11:15:10.51ID:vbixrgR4 Ubuntu Linuxや OpenOffice系の洋書の翻訳家に、
「あわしろいくや」という人物がいるようだ。
「あわしろいくや」という人物がいるようだ。
376デフォルトの名無しさん
2021/11/24(水) 11:21:34.63ID:RpLLJ5lb しかもRustやC++の専門家のようには見えんけども…
377デフォルトの名無しさん
2021/11/24(水) 17:09:21.00ID:5wn/1hS5 >>373
CとRustそれぞれでコードを書いてみることをおすすめします
計算量オーダーが変わるアルゴリズムレベルの検討ならともかく
コンパイラの最適化でいくらでも性能が変わりうる実装の詳細についてはまず性能測定するのが常識だと思います
CとRustそれぞれでコードを書いてみることをおすすめします
計算量オーダーが変わるアルゴリズムレベルの検討ならともかく
コンパイラの最適化でいくらでも性能が変わりうる実装の詳細についてはまず性能測定するのが常識だと思います
378デフォルトの名無しさん
2021/11/24(水) 17:29:56.67ID:mlqzRKjQ リンクリストで頑張るより配列のほうが色々捗る場面も多々あるよな
キャッシュが効いてるとこ読むときの速度は目を見張るもんがある
ヒープで飛び飛びになったデータ構造はその点で恐ろしく不利
それを知ってる人は実測した結果で語る
キャッシュが効いてるとこ読むときの速度は目を見張るもんがある
ヒープで飛び飛びになったデータ構造はその点で恐ろしく不利
それを知ってる人は実測した結果で語る
379デフォルトの名無しさん
2021/11/24(水) 19:53:47.71ID:6QwWetEE 21世紀にもなってC++使ってるのは頭がおかしい。
380デフォルトの名無しさん
2021/11/24(水) 19:54:39.96ID:6QwWetEE Linusは20世紀の頃からC++は駄目だと言ってた。
天才。
天才。
381デフォルトの名無しさん
2021/11/24(水) 22:30:18.26ID:Vyl+UaHe Rustは言語が汚い。
382デフォルトの名無しさん
2021/11/24(水) 22:43:39.16ID:RtLWv5R+ linusのc++否定ってのは当時の実装のバギーさとオブジェクト指向に対する否定だな。
関数型流行ってる今から見ると割と普通のこと言っとるわ。
関数型流行ってる今から見ると割と普通のこと言っとるわ。
383デフォルトの名無しさん
2021/11/24(水) 23:59:24.30ID:e1u6MioL >>381
むしろ綺麗な方
むしろ綺麗な方
384デフォルトの名無しさん
2021/11/25(木) 01:15:43.82ID:/vPuyV+m >>381
言語が汚いってのはよくわからないけど例えばどういうところが汚いと感じたの?
言語が汚いってのはよくわからないけど例えばどういうところが汚いと感じたの?
385デフォルトの名無しさん
2021/11/25(木) 01:47:48.10ID:pEcDGUra でもLinkedList版sliceみたいなのって実現できないのかね
386デフォルトの名無しさん
2021/11/25(木) 02:58:46.76ID:6PNOZvLH ここまでのまとめ
(1) ほとんどの用途でLinkedListよりVecの方が有用
(2) Rustの標準ライブラリにはLinkedList型もVec型もどちらもある
(3) もしLinkedListやVecを使っても実現できないならまずはそのRustコードを示すべき
(4) 仮に超レアケースがあったとしてもRustでは自分で自由に必要な型を作ればよい
(1) ほとんどの用途でLinkedListよりVecの方が有用
(2) Rustの標準ライブラリにはLinkedList型もVec型もどちらもある
(3) もしLinkedListやVecを使っても実現できないならまずはそのRustコードを示すべき
(4) 仮に超レアケースがあったとしてもRustでは自分で自由に必要な型を作ればよい
387デフォルトの名無しさん
2021/11/25(木) 07:50:48.33ID:3Rcu7yrD >>381
アセンブラとチューリングマシン語以外の言語は汚い
アセンブラとチューリングマシン語以外の言語は汚い
388デフォルトの名無しさん
2021/11/25(木) 09:50:29.78ID:r5Heuy4P LLVM最強ですね判ります
389デフォルトの名無しさん
2021/11/25(木) 16:04:22.18ID:S6TYxgmH >>386
嘘を書くな。
嘘を書くな。
390デフォルトの名無しさん
2021/11/25(木) 16:33:56.78ID:sK32tKJd391デフォルトの名無しさん
2021/11/25(木) 16:34:58.88ID:ug4Dh0aR392デフォルトの名無しさん
2021/11/25(木) 20:15:57.40ID:SwFLZgNz macro記述と言語がまるで別言語、いちいちウザいアトリビュート。letは固定を意味するのではなく式展開
何種類もある「文字列」、それに生えている似たようで意味が違ういっぱいのfn(これはトレイトのせい)
わざと敷居を高くしてるとしか思えん
何種類もある「文字列」、それに生えている似たようで意味が違ういっぱいのfn(これはトレイトのせい)
わざと敷居を高くしてるとしか思えん
393デフォルトの名無しさん
2021/11/25(木) 20:31:51.42ID:6PNOZvLH >>392
> letは固定を意味するのではなく式展開
letは常に成功する構造パターンマッチングにすぎないよ
if letは成功か失敗か不明な構造パターンマッチング
今どきの言語ならば左辺値にパターンが書けるのが普通
> 何種類もある「文字列」
文字列はヒープにあり伸縮可能なStringとそうでないstrの2種類しかないよ
ヒープを意識する言語なら2種類ある
あとは文字列の参照として&strがあってその本体はヒープにあろうがなかろうが同じ扱いできるだけ
> letは固定を意味するのではなく式展開
letは常に成功する構造パターンマッチングにすぎないよ
if letは成功か失敗か不明な構造パターンマッチング
今どきの言語ならば左辺値にパターンが書けるのが普通
> 何種類もある「文字列」
文字列はヒープにあり伸縮可能なStringとそうでないstrの2種類しかないよ
ヒープを意識する言語なら2種類ある
あとは文字列の参照として&strがあってその本体はヒープにあろうがなかろうが同じ扱いできるだけ
394デフォルトの名無しさん
2021/11/25(木) 20:38:50.41ID:pEcDGUra CString
CStr
OsString
OsStr
CStr
OsString
OsStr
395デフォルトの名無しさん
2021/11/25(木) 20:58:33.97ID:88pS2ZzI396デフォルトの名無しさん
2021/11/25(木) 21:05:41.06ID:NJM+Y62L397デフォルトの名無しさん
2021/11/25(木) 21:16:25.34ID:vljrMlfk じゃあ何種類もあるじゃない、全部が汚いことへの言い訳にしか聞こえない
398デフォルトの名無しさん
2021/11/25(木) 21:25:33.18ID:88pS2ZzI まとめ
・どの言語でもリンクリストでk番目を得るにはO(n)かかる
・そのk番目を配列で持てばO(1)だがそれはリンクリストではなく配列アクセスのコスト
・リンクリストのk番目を保持する配列を維持するには削除挿入のたびにO(n)の移動が生じる
・これらは言語に依存しない
・どの言語でもリンクリストでk番目を得るにはO(n)かかる
・そのk番目を配列で持てばO(1)だがそれはリンクリストではなく配列アクセスのコスト
・リンクリストのk番目を保持する配列を維持するには削除挿入のたびにO(n)の移動が生じる
・これらは言語に依存しない
399デフォルトの名無しさん
2021/11/25(木) 21:33:37.11ID:/vPuyV+m >>397
言語の汚さというよりもOSなどの環境が抱える複雑さをそのまま見せたらそうなったのでは
言語の汚さというよりもOSなどの環境が抱える複雑さをそのまま見せたらそうなったのでは
400デフォルトの名無しさん
2021/11/25(木) 21:38:29.78ID:beDf3C1p それが低いレイヤーをやるってことだわな。
それを他の言語のせいにするrust野郎はクソってことだよ。
それを他の言語のせいにするrust野郎はクソってことだよ。
401デフォルトの名無しさん
2021/11/25(木) 22:13:10.27ID:88pS2ZzI 誤解している人が居るようなので正しい情報
・Rustの通常のプログラミングでCStrやOsStrが出てくることはない
・そこでファイルやディレクトリやソケットを操作してもCStrやOsStrは出てこない
・つまりRustで使う文字列はstrとヒープのStringの2種類しかない
・CStrやOsStrはFFIを書く人のみが用いるのでほとんどの人には無縁
・Rustの通常のプログラミングでCStrやOsStrが出てくることはない
・そこでファイルやディレクトリやソケットを操作してもCStrやOsStrは出てこない
・つまりRustで使う文字列はstrとヒープのStringの2種類しかない
・CStrやOsStrはFFIを書く人のみが用いるのでほとんどの人には無縁
402デフォルトの名無しさん
2021/11/25(木) 22:18:29.72ID:3Rcu7yrD 「通常」の定義は?
403デフォルトの名無しさん
2021/11/25(木) 22:30:32.62ID:6PNOZvLH >>402
Rustで未だ対応していない未知のものが出現した時にその対応する人だけがCStrやOsStrを用いる
その時のその人を除き、全ての人はCStrやOsStrなんか知らなくてもRustでプログラミング可能
Rustで未だ対応していない未知のものが出現した時にその対応する人だけがCStrやOsStrを用いる
その時のその人を除き、全ての人はCStrやOsStrなんか知らなくてもRustでプログラミング可能
404デフォルトの名無しさん
2021/11/25(木) 23:14:44.56ID:/vPuyV+m >>401
Pathの操作してるとOsStrは普通に出てくるのでFFIでしか出てこないというのは嘘
Pathの操作してるとOsStrは普通に出てくるのでFFIでしか出てこないというのは嘘
405デフォルトの名無しさん
2021/11/25(木) 23:16:52.42ID:/vPuyV+m 他の言語がごまかしている箇所を正確に扱えるのがrustの強みでもありめんどくさいところでもある
406デフォルトの名無しさん
2021/11/25(木) 23:45:28.39ID:sK32tKJd Rust擁護マンでも標準の文字列(String/str)以外がFFIのみというのはさすがに筋悪に見える
Rustで標準の文字列をUTF8のバイト配列(ヌル文字終端不採用)としたことによる弊害って側面が割と強い
でも他言語みたいにそこしっかりしないとなるとそれはそれでめんどくさいから結局のところトレードオフ
でもOsStrめんどいわ
Rustで標準の文字列をUTF8のバイト配列(ヌル文字終端不採用)としたことによる弊害って側面が割と強い
でも他言語みたいにそこしっかりしないとなるとそれはそれでめんどくさいから結局のところトレードオフ
でもOsStrめんどいわ
407デフォルトの名無しさん
2021/11/26(金) 00:54:57.87ID:Ye0bskEh 文字列エンコードを規定しないとそれはそれで移植性に問題あるし難しいところ
WTF-8なる概念必要になったりとにかくWindowsが悪いという気はする
WTF-8なる概念必要になったりとにかくWindowsが悪いという気はする
408デフォルトの名無しさん
2021/11/26(金) 03:23:02.14ID:FqYYA0QW >>391
嘘を書くな。
正しくは、Rustは配列を使って独自実装しないとO(1)には出来無い事が明らかに成った。
参照だと借用規則で出来なくて、配列の添え字番号だと単なる整数なので借用規則の
適用範囲外だからできる。添え字番号をポインタの代わりに使って、独自に
リンクトリストを実装することで初めて、O(1)になる。
しかし、O(1)になっても、「係数」が大きくなり、1アクセスに20クロックくらいかかる。
配列の範囲チェックと、配列アクセスのための乗算と加算が追加で必要になるため。
一方、C、C++、C#、Javaではそんなことしなくても最初からO(1)。
嘘を書くな。
正しくは、Rustは配列を使って独自実装しないとO(1)には出来無い事が明らかに成った。
参照だと借用規則で出来なくて、配列の添え字番号だと単なる整数なので借用規則の
適用範囲外だからできる。添え字番号をポインタの代わりに使って、独自に
リンクトリストを実装することで初めて、O(1)になる。
しかし、O(1)になっても、「係数」が大きくなり、1アクセスに20クロックくらいかかる。
配列の範囲チェックと、配列アクセスのための乗算と加算が追加で必要になるため。
一方、C、C++、C#、Javaではそんなことしなくても最初からO(1)。
409デフォルトの名無しさん
2021/11/26(金) 03:24:19.18ID:FqYYA0QW411デフォルトの名無しさん
2021/11/26(金) 03:33:50.05ID:FqYYA0QW >>398は、数学できない。
細かい点が全然分かって無い。
リンクリストでは、「k番目にアクセスする」と言っても、次の二種類ある。
1. (乱数などで)整数 k を与えられて、ノードを探す。
この場合、どうしても、O(N)、O(k)の時間がかかる。
2. 既に追加したノードを、もう一度アクセスする。
これには、C、C++、C#、Javは、O(1)しかかからない。
しかも、C、C++だと 1 クロック。
Rustだと配列と添え字番号を使って独自実装しなければ、
基本的にO(N)、O(k)かかる。独自実装した場合、
O(1)ではあるが、20〜50クロックくくらいかかる。
細かい点が全然分かって無い。
リンクリストでは、「k番目にアクセスする」と言っても、次の二種類ある。
1. (乱数などで)整数 k を与えられて、ノードを探す。
この場合、どうしても、O(N)、O(k)の時間がかかる。
2. 既に追加したノードを、もう一度アクセスする。
これには、C、C++、C#、Javは、O(1)しかかからない。
しかも、C、C++だと 1 クロック。
Rustだと配列と添え字番号を使って独自実装しなければ、
基本的にO(N)、O(k)かかる。独自実装した場合、
O(1)ではあるが、20〜50クロックくくらいかかる。
412デフォルトの名無しさん
2021/11/26(金) 03:34:37.06ID:FqYYA0QW413デフォルトの名無しさん
2021/11/26(金) 03:40:28.33ID:FqYYA0QW414デフォルトの名無しさん
2021/11/26(金) 03:46:37.90ID:FqYYA0QW >>398
>・どの言語でもリンクリストでk番目を得るにはO(n)かかる
これは間違いである事は何でも説明した。例えば>>411。
>・そのk番目を配列で持てばO(1)だがそれはリンクリストではなく配列アクセスのコスト
これも間違いで、C、C++、Java、C#では、配列で持たずに、直接、ポインタや参照
で持っても、O(1)でアクセスできる。
Rustでは、借用規則が邪魔して、複数の読み書き参照を同時に永続的に保持できないので、
「k」のような番号でしか場所を維持できないため、そんな風になってしまうだけ。
だから、配列と番号を組み合わせてやっとO(1)にできる。
C、C++、Java、C#では、ポインタや参照を永続的にいつまでも保持できるので
配列を使わなくても O(1)でアクセスできる。
その際、「シーク」動作は必要ない。つまり、先頭から k 番目までを辿る必要が
なく、いきなり、k番目に 1 クロックでアクセスできる。
Rustでは、それが、一般的には出来ない。Rustでも、
局所的に1個のノードだけに限定すれば出来る。
>・どの言語でもリンクリストでk番目を得るにはO(n)かかる
これは間違いである事は何でも説明した。例えば>>411。
>・そのk番目を配列で持てばO(1)だがそれはリンクリストではなく配列アクセスのコスト
これも間違いで、C、C++、Java、C#では、配列で持たずに、直接、ポインタや参照
で持っても、O(1)でアクセスできる。
Rustでは、借用規則が邪魔して、複数の読み書き参照を同時に永続的に保持できないので、
「k」のような番号でしか場所を維持できないため、そんな風になってしまうだけ。
だから、配列と番号を組み合わせてやっとO(1)にできる。
C、C++、Java、C#では、ポインタや参照を永続的にいつまでも保持できるので
配列を使わなくても O(1)でアクセスできる。
その際、「シーク」動作は必要ない。つまり、先頭から k 番目までを辿る必要が
なく、いきなり、k番目に 1 クロックでアクセスできる。
Rustでは、それが、一般的には出来ない。Rustでも、
局所的に1個のノードだけに限定すれば出来る。
415デフォルトの名無しさん
2021/11/26(金) 04:02:58.56ID:FqYYA0QW 例えばこういうことだ。
リンクリストに、
ハンバーガー、りんご、みかん、ドーナツ、パイナップル
の5つを追加したとする。
C、C++、Java、C#では、追加した時に、どこかの5つの変数にこれらの
ポインタを残しておけば、あとから好きなタイミングで、どの
食べ物にも、一瞬でアクセスできる。C、C++では、1クロック。
1番目: ハンバーガー
2番目: りんご
3番目: みかん
4番目: ドーナツ
5番目: パイナップル
3番目のみかんにアクセスするのも、1クロック。
その後に、1番目のハンバーガーにアクセスするのも、1クロック。
その後に、4番目のドーナツにアクセスするのも、1クロック。
例えば、こうだ:
LinkedList ll;
p1 = ll.append("ハンバーガー");
p2 = ll.append("りんご");
p3 = ll.append("みかん");
p4 = ll.append("ドーナツ");
p5 = ll.append("パイナップル");
リンクリストに、
ハンバーガー、りんご、みかん、ドーナツ、パイナップル
の5つを追加したとする。
C、C++、Java、C#では、追加した時に、どこかの5つの変数にこれらの
ポインタを残しておけば、あとから好きなタイミングで、どの
食べ物にも、一瞬でアクセスできる。C、C++では、1クロック。
1番目: ハンバーガー
2番目: りんご
3番目: みかん
4番目: ドーナツ
5番目: パイナップル
3番目のみかんにアクセスするのも、1クロック。
その後に、1番目のハンバーガーにアクセスするのも、1クロック。
その後に、4番目のドーナツにアクセスするのも、1クロック。
例えば、こうだ:
LinkedList ll;
p1 = ll.append("ハンバーガー");
p2 = ll.append("りんご");
p3 = ll.append("みかん");
p4 = ll.append("ドーナツ");
p5 = ll.append("パイナップル");
416デフォルトの名無しさん
2021/11/26(金) 04:03:19.69ID:FqYYA0QW >>415
[続き]
cout << p3->name; // 1 クロックで3番目のノードのみかんにアクセス。
p3->name="orange"; // 名前を英語に直す。アクセスには1クロックしかかからない。
cout << p1->name; // 1 クロックで1番目のノードのハンバーガーにアクセス。
p1->name="hamburger"; // 名前を英語に直す。アクセスには1クロックしかかからない。
cout << p4->name; // 1 クロックで4番目のノードのドーナツにアクセス。
p4->name="donuts"; // 名前を英語に直す。アクセスには1クロックしかかからない。
書き込みも変更も、アクセスには1クロックずつしか掛からない。
これが、Rustでは借用規則に引っかかるために出来ない。
その結果、標準実装では、k番目のノードに「シーク」する必要があるため、
O(k)や、O(N)の時間が掛かってしまう。
例えば:
cout << seek(ll, 3)->name; // O(N)の時間が掛かる!!
seek(ll, 3)->name="orange"; // O(N)の時間が掛かる!!
[続き]
cout << p3->name; // 1 クロックで3番目のノードのみかんにアクセス。
p3->name="orange"; // 名前を英語に直す。アクセスには1クロックしかかからない。
cout << p1->name; // 1 クロックで1番目のノードのハンバーガーにアクセス。
p1->name="hamburger"; // 名前を英語に直す。アクセスには1クロックしかかからない。
cout << p4->name; // 1 クロックで4番目のノードのドーナツにアクセス。
p4->name="donuts"; // 名前を英語に直す。アクセスには1クロックしかかからない。
書き込みも変更も、アクセスには1クロックずつしか掛からない。
これが、Rustでは借用規則に引っかかるために出来ない。
その結果、標準実装では、k番目のノードに「シーク」する必要があるため、
O(k)や、O(N)の時間が掛かってしまう。
例えば:
cout << seek(ll, 3)->name; // O(N)の時間が掛かる!!
seek(ll, 3)->name="orange"; // O(N)の時間が掛かる!!
417デフォルトの名無しさん
2021/11/26(金) 04:10:09.81ID:r6ugNRE0 >>411
>2. 既に追加したノードを、もう一度アクセスする。
これカーソルでO(1)でできるって何度も言われてるやんけ
書き換え可能なカーソルを複数持つコードを書くのがめんどくさいってならわかるが
>2. 既に追加したノードを、もう一度アクセスする。
これカーソルでO(1)でできるって何度も言われてるやんけ
書き換え可能なカーソルを複数持つコードを書くのがめんどくさいってならわかるが
418デフォルトの名無しさん
2021/11/26(金) 04:12:10.51ID:FqYYA0QW >>416
[補足]
cout << aaa;
は、分かりにくいが、aaa の内容を表示する、という意味だと思って欲しい。
他の言語だと、print aaa; と書くことが多い。この点 C++ は異質であることは
認める。
[補足]
cout << aaa;
は、分かりにくいが、aaa の内容を表示する、という意味だと思って欲しい。
他の言語だと、print aaa; と書くことが多い。この点 C++ は異質であることは
認める。
419デフォルトの名無しさん
2021/11/26(金) 04:15:36.11ID:FqYYA0QW >>417
Rustでは、標準 Cursorでは、読み、書き、削除を出来る参照を同時に持つことは出来ない。
C、C++、Java、C#では、
ll.RemoveAt(p2); // p2 のノードを削除。
もアクセス自体は1クロックで出来るし、今示したコードの好きな場所に
追加しても何の問題も無い。
p2は削除されているからアクセスできなくなるだけで、
他のポインタの値は変更されないので、それ以外は何もしなくても
そのままで良い。
Rustでは、標準 Cursorでは、読み、書き、削除を出来る参照を同時に持つことは出来ない。
C、C++、Java、C#では、
ll.RemoveAt(p2); // p2 のノードを削除。
もアクセス自体は1クロックで出来るし、今示したコードの好きな場所に
追加しても何の問題も無い。
p2は削除されているからアクセスできなくなるだけで、
他のポインタの値は変更されないので、それ以外は何もしなくても
そのままで良い。
420デフォルトの名無しさん
2021/11/26(金) 04:16:36.76ID:FqYYA0QW421デフォルトの名無しさん
2021/11/26(金) 04:18:59.29ID:r6ugNRE0 >>419
標準(std)のLinkedListならそれはそう
前にも言ったような気がするが、
自前で作って内部構造にunsafecellを使えば、
不変参照を複数持っている状態でも書き換えが可能になる
例えば要素の追加時にそういうことをするカーソルを返せばよい
実装がめんどくさすぎるのは認める
標準(std)のLinkedListならそれはそう
前にも言ったような気がするが、
自前で作って内部構造にunsafecellを使えば、
不変参照を複数持っている状態でも書き換えが可能になる
例えば要素の追加時にそういうことをするカーソルを返せばよい
実装がめんどくさすぎるのは認める
422デフォルトの名無しさん
2021/11/26(金) 04:19:23.54ID:FqYYA0QW >>420
もっと言えば、C、C++、Java、C#の LinkedListは、
p2 の直後に「じゃがいも」ノードを追加した後、
p4 の直前に「トマト」ノードを追加するなどと言ったことも、
O(1)で出来る。しかも、O(1)と言っても、極限的に速くて、
C、C++の場合は、アクセスには1クロック。
こういうことが、Rustでは、Cursorを使っても出来ない。
もっと言えば、C、C++、Java、C#の LinkedListは、
p2 の直後に「じゃがいも」ノードを追加した後、
p4 の直前に「トマト」ノードを追加するなどと言ったことも、
O(1)で出来る。しかも、O(1)と言っても、極限的に速くて、
C、C++の場合は、アクセスには1クロック。
こういうことが、Rustでは、Cursorを使っても出来ない。
423デフォルトの名無しさん
2021/11/26(金) 04:23:10.27ID:FqYYA0QW424デフォルトの名無しさん
2021/11/26(金) 04:25:26.12ID:r6ugNRE0425デフォルトの名無しさん
2021/11/26(金) 04:29:37.41ID:FqYYA0QW426デフォルトの名無しさん
2021/11/26(金) 04:42:30.98ID:FqYYA0QW427デフォルトの名無しさん
2021/11/26(金) 04:49:17.40ID:FqYYA0QW428デフォルトの名無しさん
2021/11/26(金) 09:55:21.11ID:5+U4u14D >>404
Pathといってもこちらから使うだけならAsRef<Path>だからStringと&strでも全く問題なくOsStringの存在すら知らなくていい
したがって出てくるのはDirEntryのみとなる
それも周り全てUTF8環境ばかりなのでinto_string()で全てSome(String)になるため結局OsStringを扱ったことは一度もない
Pathといってもこちらから使うだけならAsRef<Path>だからStringと&strでも全く問題なくOsStringの存在すら知らなくていい
したがって出てくるのはDirEntryのみとなる
それも周り全てUTF8環境ばかりなのでinto_string()で全てSome(String)になるため結局OsStringを扱ったことは一度もない
429デフォルトの名無しさん
2021/11/26(金) 10:08:20.18ID:5+U4u14D ミスったw
ResultのOk(String)ね
ResultのOk(String)ね
430デフォルトの名無しさん
2021/11/26(金) 12:12:39.51ID:Ye0bskEh >>428
いやいやせっかく標準ライブラリがWindowsでも動くよう苦労してくれてるのにそれを台無しにするなよ
個々のアプリで雑に対処するならともかくRust擁護派がRustの強みを否定してどうする
あと Path::file_name も Option<&OsStr> 返すしこれは利用頻度高い
いやいやせっかく標準ライブラリがWindowsでも動くよう苦労してくれてるのにそれを台無しにするなよ
個々のアプリで雑に対処するならともかくRust擁護派がRustの強みを否定してどうする
あと Path::file_name も Option<&OsStr> 返すしこれは利用頻度高い
431デフォルトの名無しさん
2021/11/26(金) 20:45:27.01ID:MbvsChzk >>430
Rustはちゃんと考えられてるね
ただし自分はWindowsを使うことは100%ないから path.file_name().unwrap().to_str().unwrap() 等でいいし
他にも use std::os::unix::fs::MetadataExt して metadata.uid() 等することもある
Rustはちゃんと考えられてるね
ただし自分はWindowsを使うことは100%ないから path.file_name().unwrap().to_str().unwrap() 等でいいし
他にも use std::os::unix::fs::MetadataExt して metadata.uid() 等することもある
432ハノン ◆QZaw55cn4c
2021/11/26(金) 21:02:52.31ID:xSrpn+m5433デフォルトの名無しさん
2021/11/27(土) 13:14:46.65ID:Y9o/DNQu434デフォルトの名無しさん
2021/11/27(土) 13:16:38.57ID:Y9o/DNQu ちゃんと正確に議論されているのに、最後の最後でQZがめちゃくちゃな
ことを言い出す。それが最後に書かれたことによって、このスレに
後から来た人には「まとめ」の様に見えてしまうから、大迷惑。
全くまとめになってない、でたらめなことを書くから。
ことを言い出す。それが最後に書かれたことによって、このスレに
後から来た人には「まとめ」の様に見えてしまうから、大迷惑。
全くまとめになってない、でたらめなことを書くから。
435デフォルトの名無しさん
2021/11/27(土) 13:19:47.46ID:Y9o/DNQu ようは、秀才達が集まっているクラスで、一人だけレベルの低い人がいて、
秀才達が大体理解したのに、「まとめ」として、レベルの人が全く
デタラメなことを話す。それがQZ。
クラスの場合、みんなの雰囲気でQZがレベルが低いことが分かるので呆れられ、
無視され、せせら笑いが聞こえるが、ネットだとそれが分からないから困る。
現実世界では言葉にしなくても、ひそひそ場なしや、せせら笑いなどで分かるが
ねっとではそのような言外のコミュニケーションが出来ないから。
秀才達が大体理解したのに、「まとめ」として、レベルの人が全く
デタラメなことを話す。それがQZ。
クラスの場合、みんなの雰囲気でQZがレベルが低いことが分かるので呆れられ、
無視され、せせら笑いが聞こえるが、ネットだとそれが分からないから困る。
現実世界では言葉にしなくても、ひそひそ場なしや、せせら笑いなどで分かるが
ねっとではそのような言外のコミュニケーションが出来ないから。
436デフォルトの名無しさん
2021/11/27(土) 13:22:32.48ID:Y9o/DNQu >>435
どうせ、QZは、この文書の誤字脱字を発見して馬鹿にするんだろう。
誤字訂正:
誤:レベルの人が全く
正:レベルの低い人が全く
誤:ひそひそ場なしや
正:ひそひそ話や
誤:ねっとでは
正:ネットでは
どうせ、QZは、この文書の誤字脱字を発見して馬鹿にするんだろう。
誤字訂正:
誤:レベルの人が全く
正:レベルの低い人が全く
誤:ひそひそ場なしや
正:ひそひそ話や
誤:ねっとでは
正:ネットでは
437デフォルトの名無しさん
2021/11/27(土) 17:31:40.13ID:v9cw8FEl438デフォルトの名無しさん
2021/11/27(土) 17:48:27.29ID:d/xEnnZB たしかに4レスも使って人格批判しかしてね〜
439デフォルトの名無しさん
2021/11/27(土) 19:00:17.29ID:tDXnKU/S ID:Y9o/DNQu
こいつがまとめを書けば話は終わりだな
こいつがまとめを書けば話は終わりだな
440デフォルトの名無しさん
2021/11/27(土) 19:39:40.61ID:SLaQ3CeJ あわしろ氏はC++は使わないほうが良いと言ってる。
441デフォルトの名無しさん
2021/11/27(土) 20:00:10.09ID:WDqbhltk C++をあまり使用してなさそうなよくわからないあわしろ氏でなく自分の意見出しなよ
443デフォルトの名無しさん
2021/11/27(土) 21:09:50.54ID:riEP2Tv6444デフォルトの名無しさん
2021/11/27(土) 22:07:53.33ID:kID5mUHa オブジェクトのアドレスをハッシュテーブルで持たせて、双方向リストで実装。
445ハノン ◆QZaw55cn4c
2021/11/27(土) 22:11:02.52ID:bCVlBsXA446デフォルトの名無しさん
2021/11/27(土) 22:20:41.20ID:g2vJAoph >>445
一方向だと削除がO(1)じゃないから双方向が良いのでは
一方向だと削除がO(1)じゃないから双方向が良いのでは
447ハノン ◆QZaw55cn4c
2021/11/27(土) 23:03:04.21ID:bCVlBsXA448ハノン ◆QZaw55cn4c
2021/11/27(土) 23:04:36.52ID:bCVlBsXA449デフォルトの名無しさん
2021/11/27(土) 23:42:34.01ID:+ONNbmgV スマンが、余り言いたくないことだが、QZが出てくると話がとてもややこしくなる。
450デフォルトの名無しさん
2021/11/28(日) 00:05:23.91ID:L/jojvYG まだやってたのか
451ハノン ◆QZaw55cn4c
2021/11/28(日) 02:32:25.17ID:DhOI6JvL452デフォルトの名無しさん
2021/11/28(日) 02:39:16.73ID:Fw4ypgsa それがこのスレの目的ですから
453デフォルトの名無しさん
2021/11/28(日) 03:42:41.88ID:sDAG0wCq ある特定のエントリーを持つ変数はプログラム中に複数存在しうると議論中にも出ていたから
リファレンスカウンタは必須になるな
重要な点としては
コンストラクタやデストラクタやスマートポインタに隠れて曖昧にならないように
それらを使わずに実装すべきだ
そもそもC言語でもO(1)という話なのだから
まずはC言語かつ標準ライブラリのみ使用が今回のコード条件
リファレンスカウンタは必須になるな
重要な点としては
コンストラクタやデストラクタやスマートポインタに隠れて曖昧にならないように
それらを使わずに実装すべきだ
そもそもC言語でもO(1)という話なのだから
まずはC言語かつ標準ライブラリのみ使用が今回のコード条件
454ハノン ◆QZaw55cn4c
2021/11/28(日) 04:07:17.98ID:DhOI6JvL455デフォルトの名無しさん
2021/11/28(日) 10:45:19.29ID:tHJVymxJ もうソース出せって意地悪言わないで、無視しときなよ
配列に格納し直すのが彼のアイデアの全てなんだから、つついても面白い話は出てこないよ
O(1)で追加・削除できる配列も作れる!って言い出したら、多分リンクリストを使うってことだよ
配列に格納し直すのが彼のアイデアの全てなんだから、つついても面白い話は出てこないよ
O(1)で追加・削除できる配列も作れる!って言い出したら、多分リンクリストを使うってことだよ
456ハノン ◆QZaw55cn4c
2021/11/28(日) 14:56:23.04ID:DhOI6JvL457デフォルトの名無しさん
2021/11/28(日) 17:32:59.07ID:4++rc1oJ >>443
C/C++では、ダングリングが発生するのを防ぐのはプログラマーの仕事だ。
C/C++では、ダングリングが発生するのを防ぐのはプログラマーの仕事だ。
458ハノン ◆QZaw55cn4c
2021/11/28(日) 17:39:38.36ID:DhOI6JvL >>443
引き続いて双方向リストの場合
https://mevius.5ch.net/test/read.cgi/tech/1434079972/106
これでいかがでしょうか?
>>444
>オブジェクトのアドレスをハッシュテーブルで持たせて、双方向リストで実装。
では C で実装願いますね
私は宿題を片付けましたので 、ちゃんちゃん
引き続いて双方向リストの場合
https://mevius.5ch.net/test/read.cgi/tech/1434079972/106
これでいかがでしょうか?
>>444
>オブジェクトのアドレスをハッシュテーブルで持たせて、双方向リストで実装。
では C で実装願いますね
私は宿題を片付けましたので 、ちゃんちゃん
459デフォルトの名無しさん
2021/11/28(日) 17:42:46.59ID:4++rc1oJ460ハノン ◆QZaw55cn4c
2021/11/28(日) 17:47:22.55ID:DhOI6JvL461デフォルトの名無しさん
2021/11/28(日) 17:51:06.30ID:4++rc1oJ462デフォルトの名無しさん
2021/11/28(日) 17:54:05.88ID:4++rc1oJ QZは、ポインタが 1 クロックでどんな場所にもたどり着けることを理解出来て無い
のではないか。
アドレスさえ分かっていれば、1クロックであらゆるオブジェクトにたどり着けるぞ。
基本的にハッシュ構造とは全く関係無い。
のではないか。
アドレスさえ分かっていれば、1クロックであらゆるオブジェクトにたどり着けるぞ。
基本的にハッシュ構造とは全く関係無い。
463ハノン ◆QZaw55cn4c
2021/11/28(日) 17:58:02.00ID:DhOI6JvL464ハノン ◆QZaw55cn4c
2021/11/28(日) 17:59:56.44ID:DhOI6JvL■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- 【ローソン】ロゴの「L」で誤解生んだコーヒーカップ、デザイン変更へ 在庫使い切る3か月後にリニューアル [ぐれ★]
- パラドゲーやってる人に聞きたい総理の発言がそのまま国家意思になるって中世かよ [279479878]
- 【高市早苗】バス会社、中国からのキャンセルで12月で2000万円~3000万円の損失へ [115996789]
- 米シンクタンク「アメリカは台湾問題で"あいまい戦略"を取っている。高市早苗はこの方針から逸脱している」 [603416639]
- 風呂入らないと下半身温まらない
- かしこいワンコっていうVtuberの子知ってる?
- 岡田克也「軽々しく存立危機事態とか言うべきじゃない」高市早苗「台湾で武力攻撃が発生したらどう考えても日本の存立危機事態」 [931948549]
