前スレ
C++相談室 part156
https://mevius.5ch.net/test/read.cgi/tech/1621389313/
C++相談室 part157
■ このスレッドは過去ログ倉庫に格納されています
2021/08/09(月) 10:57:31.60ID:JaaB5Egp
523デフォルトの名無しさん
2021/10/10(日) 10:09:31.41ID:B/tc3JZb スレッド立ち上げるとかファイル書くとかクソ重い操作が伴う時にコピーコスト気にしてもしょうがない
場合によるとしか
場合によるとしか
524デフォルトの名無しさん
2021/10/10(日) 10:37:13.21ID:2ZvzU42q どこでも使う汎用性高いものなら問題が起きる前に[=]にしてる
逆に[&]はよほど安全だと思わない限り使わない
逆に[&]はよほど安全だと思わない限り使わない
525デフォルトの名無しさん
2021/10/10(日) 10:45:00.67ID:qGt3mQky526デフォルトの名無しさん
2021/10/10(日) 10:59:19.31ID:lWUpu20f527デフォルトの名無しさん
2021/10/10(日) 11:13:11.28ID:qGt3mQky ラムダ式は一般にラムダ式を定義したスコープの外に持ち出され、予見できないタイミングで使われうる
参照キャプチャだと
(1) ラムダ式が使われるタイミングで参照xの参照先が存在することが保証されていなければならない
(2) ラムダ式が使われるタイミングで参照xの参照先へのアクセスが他のスレッドと競合しないことが保証されていなければならない
とゆー2条件をクリアする必要がある。
コピーキャプチャだと(オブジェクトがディープコピーなら)どっちの配慮も不要
参照キャプチャして(1)、(2)を満たして安心できるのは、イミュータブルなオブジェクトだけ……!
参照キャプチャだと
(1) ラムダ式が使われるタイミングで参照xの参照先が存在することが保証されていなければならない
(2) ラムダ式が使われるタイミングで参照xの参照先へのアクセスが他のスレッドと競合しないことが保証されていなければならない
とゆー2条件をクリアする必要がある。
コピーキャプチャだと(オブジェクトがディープコピーなら)どっちの配慮も不要
参照キャプチャして(1)、(2)を満たして安心できるのは、イミュータブルなオブジェクトだけ……!
528デフォルトの名無しさん
2021/10/10(日) 11:14:48.07ID:qGt3mQky529デフォルトの名無しさん
2021/10/10(日) 11:18:00.19ID:B/tc3JZb >>527
ラムダ式をスコープ外に持ち出すなんてレアケースを「一般に」とか言われましても
ラムダ式をスコープ外に持ち出すなんてレアケースを「一般に」とか言われましても
530デフォルトの名無しさん
2021/10/10(日) 11:28:18.85ID:2ZvzU42q 遅延評価されるものはよくコンテナに入れて後でぶん回されるから・・・
531デフォルトの名無しさん
2021/10/10(日) 11:28:30.83ID:qGt3mQky532デフォルトの名無しさん
2021/10/10(日) 11:38:17.37ID:QniiN4Lz スコープ内の変数をキャプチャする処理をスレッドで動かす場合は普通にラムダ式を使うと思うが。
533デフォルトの名無しさん
2021/10/10(日) 11:39:34.18ID:B/tc3JZb >>531
はぁ?お前これしないの?ラムダ式のユースケースって9割方この類だろ
std::functionに突っ込んではるか遠くにぶん投げたりコンテナに詰め込んだりするのだけがラムダ式の使い道だと思ってるの?
std::sort(v.begin(), v.end(), [](int a, int b){/*...*/});
はぁ?お前これしないの?ラムダ式のユースケースって9割方この類だろ
std::functionに突っ込んではるか遠くにぶん投げたりコンテナに詰め込んだりするのだけがラムダ式の使い道だと思ってるの?
std::sort(v.begin(), v.end(), [](int a, int b){/*...*/});
534デフォルトの名無しさん
2021/10/10(日) 11:57:37.17ID:tv4afNG+ みなさんスレッドセーフにしたいときはスレッドセーフになる様に書きましょう
536デフォルトの名無しさん
2021/10/10(日) 12:21:43.80ID:Ld3aFVRt 任意のスレッド安全性を実現するのはゼロコストでは不可能だから
必ずシングルスレッドで実行される保障がある場合などはあえてスレッド安全性を捨てることもある
必ずシングルスレッドで実行される保障がある場合などはあえてスレッド安全性を捨てることもある
537デフォルトの名無しさん
2021/10/10(日) 12:31:34.49ID:6/7jGiIK std::conj() に double を渡したら std::complex<double> にキャストされるのが嫌なので、double を渡したら何もしないで double を返し、std::complex<double> を渡したら std::conj() と同じ動作をするオーバーロード関数 conj() を作ろうかと思うのですがアリですか?
なぜ std::conj() がそういう動作じゃないのか不思議で、何か見落としてたら教えてください
なぜ std::conj() がそういう動作じゃないのか不思議で、何か見落としてたら教えてください
538デフォルトの名無しさん
2021/10/10(日) 12:36:51.51ID:2ZvzU42q こここ・・こういうこと?
(A)キャプチャが必要でスコープ内で実行までされるケース
(B)キャプチャが必要でスコープ外まで実行が遅延されるケース
(B-1)ラムダ式生成時と実行スレッドが同じケース
(B-2)ラムダ式生成時と実行スレッドが違うケース
(A)なら全員「[&]で問題があるケースはない」と考えている
(B-1)は好みが別れているところ
(B-2)は好みが別れているところで、さらにキャプチャされる変数側をスレッドセーフにするかどうも好み
[&]と[=]がよく分からない人はコチラ
https://ideone.com/OQS113
以下個人的意見
スレッドセーフにするコストは結構高い(開発・実行・保守全てで)ので、競合させずに遅延可能ならそれに越したことはないと考えている
ようはコピーするコストをそれほど高くは見積もっていない
(A)キャプチャが必要でスコープ内で実行までされるケース
(B)キャプチャが必要でスコープ外まで実行が遅延されるケース
(B-1)ラムダ式生成時と実行スレッドが同じケース
(B-2)ラムダ式生成時と実行スレッドが違うケース
(A)なら全員「[&]で問題があるケースはない」と考えている
(B-1)は好みが別れているところ
(B-2)は好みが別れているところで、さらにキャプチャされる変数側をスレッドセーフにするかどうも好み
[&]と[=]がよく分からない人はコチラ
https://ideone.com/OQS113
以下個人的意見
スレッドセーフにするコストは結構高い(開発・実行・保守全てで)ので、競合させずに遅延可能ならそれに越したことはないと考えている
ようはコピーするコストをそれほど高くは見積もっていない
539デフォルトの名無しさん
2021/10/10(日) 14:46:42.08ID:lWUpu20f >>528
日本語でおk
日本語でおk
540デフォルトの名無しさん
2021/10/10(日) 16:03:29.39ID:lWUpu20f >>538
おまえさんの論法では同時並行はすべて別プロセスにすべきってことだな
おまえさんの論法では同時並行はすべて別プロセスにすべきってことだな
541デフォルトの名無しさん
2021/10/10(日) 16:49:17.57ID:2ZvzU42q >>540
う〜ん、伝わらないですね・・・
共有リソースに競合するアクセスがなければ排他制御の必要がなく、スレッドセーフにする必要がないってことです
そもそもコピーして共有しないことで排他制御が必要なくなれば、スレッドセーフにしなくていいという考え方ですよ
う〜ん、伝わらないですね・・・
共有リソースに競合するアクセスがなければ排他制御の必要がなく、スレッドセーフにする必要がないってことです
そもそもコピーして共有しないことで排他制御が必要なくなれば、スレッドセーフにしなくていいという考え方ですよ
542デフォルトの名無しさん
2021/10/10(日) 16:51:53.70ID:lWUpu20f だから共有=リスクなんだろ?
もうマシンも別の実機にすれば最強防御じゃん
もうマシンも別の実機にすれば最強防御じゃん
543デフォルトの名無しさん
2021/10/10(日) 17:01:53.15ID:2ZvzU42q >>542
残念ですが理解してもらうことは諦めます
残念ですが理解してもらうことは諦めます
544デフォルトの名無しさん
2021/10/10(日) 17:32:07.51ID:qGt3mQky >>533
頭の中がgdgdな人が話をgdgdにしようとしていまつね……
std::sort()の呼び出しと同じスコープが終わった後に
[](int a, int b)が呼び出されないということは、単にstd::sort()がreturnするまでにラムダ式を忘れてくれる作りだから(たまたま)担保されているだけであって、
[](int a, int b)のスコープが限定されるために担保されているわけではないし、
[](int a, int b)がラムダ式だから担保されているわけでもないの。
つまり、>>533は
>ラムダ式をスコープ外に持ち出すなんてレアケース(>>529)
の根拠に全くなっていないワケ
頭の中がgdgdな人が話をgdgdにしようとしていまつね……
std::sort()の呼び出しと同じスコープが終わった後に
[](int a, int b)が呼び出されないということは、単にstd::sort()がreturnするまでにラムダ式を忘れてくれる作りだから(たまたま)担保されているだけであって、
[](int a, int b)のスコープが限定されるために担保されているわけではないし、
[](int a, int b)がラムダ式だから担保されているわけでもないの。
つまり、>>533は
>ラムダ式をスコープ外に持ち出すなんてレアケース(>>529)
の根拠に全くなっていないワケ
545はちみつ餃子 ◆8X2XSCHEME
2021/10/10(日) 17:47:25.28ID:cCUvKLuJ レアケースがどうこういったところでレアケースなら考えなくていいってわけでもない。
そんなの個別の事例ごとに考えるしかしょうがないだろう。
そんなの個別の事例ごとに考えるしかしょうがないだろう。
546デフォルトの名無しさん
2021/10/10(日) 17:56:25.23ID:lWUpu20f >>543
無理筋の主張ってことがわかってもらえたならいいよ
無理筋の主張ってことがわかってもらえたならいいよ
547デフォルトの名無しさん
2021/10/10(日) 18:04:09.07ID:2ZvzU42q >>546
無理筋ではありませんよ
スレッド以前から並列処理で共有される実行コンテキストを分けることは大昔からやられてきました
今更その手法自体を想像できない人に、こんなところで説明するのは困難なだけです
無理筋ではありませんよ
スレッド以前から並列処理で共有される実行コンテキストを分けることは大昔からやられてきました
今更その手法自体を想像できない人に、こんなところで説明するのは困難なだけです
548デフォルトの名無しさん
2021/10/10(日) 18:11:49.41ID:lWUpu20f おまえさんの言う「大昔」がどのくらいか知らんが
俺が若手の頃はRENT,REUSなんてやってたよ
俺が若手の頃はRENT,REUSなんてやってたよ
549デフォルトの名無しさん
2021/10/10(日) 18:25:30.38ID:Euz3vWgQ ラムダ式によって作られたオブジェクトがキャプチャされたオブジェクトより長生きする可能性があるならコピーキャプチャ
そうでなくともレジスタに乗ると思われるならコピーキャプチャ
そうでない場合に初めて参照キャプチャ
排他に関してはshared_ptr<mutex>とshared_ptr<なかみ>をメンバに持たせてコピー可能にしつつ、メンバ関数経由で排他制御するのが筋だと思う
RustのArc<Mutex<T>>パターンに影響されすぎかもしれないが……
いずれにせよキャプチャと排他制御の問題とは切り離して考えることができるし、そうすべき
そうでなくともレジスタに乗ると思われるならコピーキャプチャ
そうでない場合に初めて参照キャプチャ
排他に関してはshared_ptr<mutex>とshared_ptr<なかみ>をメンバに持たせてコピー可能にしつつ、メンバ関数経由で排他制御するのが筋だと思う
RustのArc<Mutex<T>>パターンに影響されすぎかもしれないが……
いずれにせよキャプチャと排他制御の問題とは切り離して考えることができるし、そうすべき
550デフォルトの名無しさん
2021/10/10(日) 21:19:12.50ID:MbdCJRMe ラムダ式関連でいうと参照とかコピーをデフォルトだけで指定したときも実際に使ったものの分しかクロージャオブジェクトのサイズに乗ってこないと思ってるんだけどヤバい?
551デフォルトの名無しさん
2021/10/10(日) 23:42:34.57ID:9PtWfEC6552デフォルトの名無しさん
2021/10/10(日) 23:58:18.57ID:2ZvzU42q553デフォルトの名無しさん
2021/10/11(月) 02:51:41.68ID:1CVjhT+M >>551
cppref見たらクロージャオブジェクトのサイズは未規定とあって気になった
cppref見たらクロージャオブジェクトのサイズは未規定とあって気になった
554デフォルトの名無しさん
2021/10/11(月) 05:43:06.87ID:FIUH1xZN555デフォルトの名無しさん
2021/10/11(月) 07:43:50.36ID:M/9mFHzI >>554
説明するべきでないのが残念ですが、その頃からあなたが分かってなかっただけですよ
説明するべきでないのが残念ですが、その頃からあなたが分かってなかっただけですよ
556デフォルトの名無しさん
2021/10/11(月) 07:52:27.26ID:pMbZgi1h557デフォルトの名無しさん
2021/10/11(月) 08:08:27.81ID:M/9mFHzI558デフォルトの名無しさん
2021/10/11(月) 08:46:34.77ID:pMbZgi1h と言うことにしたいのですね
559デフォルトの名無しさん
2021/10/11(月) 09:17:45.21ID:G+wdAsto リエントラント目指してもいいじゃないの
560デフォルトの名無しさん
2021/10/11(月) 09:58:01.98ID:F+cmXQty クラスの型を自動変換して関数に入れるにはどうすればいいですか?例えば、
class A {
public:
double hoge;
};
class B {
public:
int hogehoge;
};
int function(A aaa);
があった時に、functionにB型を入れても動くようにしたいです。
クラスAのソースに、Bから生成するコンストラクタ書ければいいのかもしれませんが、
実際はAはライブラリのクラスで触れなくて、Bが自作のクラスになります。
class A {
public:
double hoge;
};
class B {
public:
int hogehoge;
};
int function(A aaa);
があった時に、functionにB型を入れても動くようにしたいです。
クラスAのソースに、Bから生成するコンストラクタ書ければいいのかもしれませんが、
実際はAはライブラリのクラスで触れなくて、Bが自作のクラスになります。
561デフォルトの名無しさん
2021/10/11(月) 10:22:18.86ID:T3qmZxdk >>560
Bを受け付けるfunctionを書くんや
Bを受け付けるfunctionを書くんや
562デフォルトの名無しさん
2021/10/11(月) 10:50:11.05ID:QW1mycSW B extends A
としたら
function
の引数をキャスト?で動かない?
としたら
function
の引数をキャスト?で動かない?
563デフォルトの名無しさん
2021/10/11(月) 10:54:01.94ID:RUUSz/4T 簡単や
template<class A>
int function(A aaa);
template<class A>
int function(A aaa);
564デフォルトの名無しさん
2021/10/11(月) 12:11:05.48ID:F+cmXQty できました。ありがとうございます。
また、ポインタのvectorを実体として使うにはどうすればよいでしょうか?
std::vector<A*>
で定義されてるものを、
std::vector<A>として使いたいです。
別のvectorにポインタ値を詰め直せばいけると思うのですが、元のポインタの場所のまま実体で使いたいです。無理でしょうか。
また、ポインタのvectorを実体として使うにはどうすればよいでしょうか?
std::vector<A*>
で定義されてるものを、
std::vector<A>として使いたいです。
別のvectorにポインタ値を詰め直せばいけると思うのですが、元のポインタの場所のまま実体で使いたいです。無理でしょうか。
565デフォルトの名無しさん
2021/10/11(月) 12:31:51.97ID:T3qmZxdk 参照を使うんや
566デフォルトの名無しさん
2021/10/11(月) 13:03:47.84ID:NaSXzxBw 参照のvectorなんて作れたっけ?
567デフォルトの名無しさん
2021/10/11(月) 13:16:00.26ID:T3qmZxdk reference_wrapper使うんや
まあ下らんこと考えんほうがええ
まあ下らんこと考えんほうがええ
568デフォルトの名無しさん
2021/10/11(月) 17:28:01.69ID:0Mn4AOx6 >>564
ややこしい所有権・所有責任問題が発生するから、ソースコードを見直したほうがいい。
具体的にはstd::vector<*A>を
std::vector<std::shared_ptr<A>>
にして、shared_ptr<A>をやり取りするようにすべきだな。
性能問題とか互換問題とかでも無ければvector<*A>なんて使うもんじゃない。
ややこしい所有権・所有責任問題が発生するから、ソースコードを見直したほうがいい。
具体的にはstd::vector<*A>を
std::vector<std::shared_ptr<A>>
にして、shared_ptr<A>をやり取りするようにすべきだな。
性能問題とか互換問題とかでも無ければvector<*A>なんて使うもんじゃない。
569デフォルトの名無しさん
2021/10/11(月) 20:43:04.76ID:bPHZE8G4 言ってることは同意だが、ポインタの型もまともに書けないような人に言われても説得力がない
570デフォルトの名無しさん
2021/10/11(月) 20:47:36.58ID:c9XBGwkD Rustと間違えたんじゃね
571デフォルトの名無しさん
2021/10/11(月) 22:25:40.15ID:RUUSz/4T 簡単や
std::vector<std::shared_ptr<A>>
std::vector<std::shared_ptr<A>>
572デフォルトの名無しさん
2021/10/11(月) 23:13:38.91ID:9gfKW03X ドラクエ3のバージョン違いの謎に迫る!
https://www.youtube.com/watch?v=sh5GXYs6T1c
2021/10/01に公開済み
FC版DQ3には、AバージョンとBバージョンが存在する
今回はROM内のプログラムを徹底比較!
どこが違うのか白黒ハッキリさせると息巻いた内藤プロ
当時自分が作ったのに全て忘れてて大変なことに・・
https://www.youtube.com/watch?v=sh5GXYs6T1c
2021/10/01に公開済み
FC版DQ3には、AバージョンとBバージョンが存在する
今回はROM内のプログラムを徹底比較!
どこが違うのか白黒ハッキリさせると息巻いた内藤プロ
当時自分が作ったのに全て忘れてて大変なことに・・
573デフォルトの名無しさん
2021/10/12(火) 04:13:48.50ID:jMkI4z1q ぶっちゃけ継承とかポリモフィズムはオワコンでテンプレート最強?
574はちみつ餃子 ◆8X2XSCHEME
2021/10/12(火) 04:25:26.30ID:WB1ScBpO >>573
過去の C++ の流行においては継承が強調されすぎたこともあって
継承の害悪な面も見えて大幅な揺り戻しは有った。
しかしそれぞれに役割があるのでどれかが廃れるとかいう話ではない。
バランスとしては継承が控えめになったけれど、だからといって継承のない C++ はありえない。
結局のところそれぞれを適切に使えというだけのこと。
過去の C++ の流行においては継承が強調されすぎたこともあって
継承の害悪な面も見えて大幅な揺り戻しは有った。
しかしそれぞれに役割があるのでどれかが廃れるとかいう話ではない。
バランスとしては継承が控えめになったけれど、だからといって継承のない C++ はありえない。
結局のところそれぞれを適切に使えというだけのこと。
575デフォルトの名無しさん
2021/10/12(火) 06:45:14.85ID:LoAbYEbi 継承が有効に使われている事例をひとつも知らないヒヨっ子丸出しな質問だな
テンプレートの何がいいのかもわかってなさそう
テンプレートの何がいいのかもわかってなさそう
576デフォルトの名無しさん
2021/10/12(火) 07:03:36.18ID:bL2VfUhD CRTPとか見たら脳を壊しそう
577デフォルトの名無しさん
2021/10/12(火) 07:24:36.11ID:+oJUuDWk578デフォルトの名無しさん
2021/10/12(火) 08:16:42.08ID:4AIb2U7h >>573
メソッド共通化を実現するための継承はオワコン。
プレースホルダーを用意するための継承は現役。
総称型が実装されれば継承自体をオワコンにできそうな気がするけど、総称型風スマートポインタて無かったっけ?
メソッド共通化を実現するための継承はオワコン。
プレースホルダーを用意するための継承は現役。
総称型が実装されれば継承自体をオワコンにできそうな気がするけど、総称型風スマートポインタて無かったっけ?
579デフォルトの名無しさん
2021/10/12(火) 08:20:36.96ID:vDVhyOYS 耳が腐る
580デフォルトの名無しさん
2021/10/12(火) 09:51:23.11ID:kjIGaWla 何でこんな荒れてんの?
581デフォルトの名無しさん
2021/10/12(火) 10:09:23.54ID:qN1bonoC いつものこと
582デフォルトの名無しさん
2021/10/12(火) 10:40:17.54ID:kjIGaWla 単発荒らしか
583デフォルトの名無しさん
2021/10/13(水) 04:27:45.44ID:yxtzEQdj void * の生ポが最強
584デフォルトの名無しさん
2021/10/13(水) 07:29:48.53ID:w2mbz/VV ○○なんていらねーよ害悪だけだ
まだ使ってるやつは全員バカ
これからは△△を使うべきだ
なーんて言っちゃってマウント取った気になってるおめでたいやつ
メガトン級にアホにされてることに気付かねえよな
まだ使ってるやつは全員バカ
これからは△△を使うべきだ
なーんて言っちゃってマウント取った気になってるおめでたいやつ
メガトン級にアホにされてることに気付かねえよな
585デフォルトの名無しさん
2021/10/13(水) 09:41:39.46ID:V99uCirA vector を shuffle する場合について質問です(gcc/windows10でテスト)
vector<int> vec(50, 0);
for(int i = 0; i < 10; ++i) vec[i] = 1;
random_device dev_seed;
mt19937_64 mt(dev_seed());
shuffle(vec.begin(), vec.end(), mt);
で確かに shuffle されているのですが疑問点がいくつかあります
1.dev_seed()が毎回同じ値を返してる?
(random_deviceの使い方を間違えてる?)
2.先頭の値が1に偏ってる?
(shuffle() を数回繰り返す解決方法もあるようですがあまり気持ち良くないです)
3.そもそもforで先頭の方に1を入れる発想が良くない?
(shuffleされてるならこれは関係無いと思いたい)
vector<int> vec(50, 0);
for(int i = 0; i < 10; ++i) vec[i] = 1;
random_device dev_seed;
mt19937_64 mt(dev_seed());
shuffle(vec.begin(), vec.end(), mt);
で確かに shuffle されているのですが疑問点がいくつかあります
1.dev_seed()が毎回同じ値を返してる?
(random_deviceの使い方を間違えてる?)
2.先頭の値が1に偏ってる?
(shuffle() を数回繰り返す解決方法もあるようですがあまり気持ち良くないです)
3.そもそもforで先頭の方に1を入れる発想が良くない?
(shuffleされてるならこれは関係無いと思いたい)
586デフォルトの名無しさん
2021/10/13(水) 09:47:25.08ID:V99uCirA ああこれか
https://cpprefjp.github.io/reference/random/random_device.html
>GCC (MinGW): GCC 9.1までは擬似乱数生成器 mt19937 を用いるため使用を推奨しない。詳細は備考欄を参照。GCC 9.2からは暗号論的な乱数である rand_s を使用する。
https://cpprefjp.github.io/reference/random/random_device.html
>GCC (MinGW): GCC 9.1までは擬似乱数生成器 mt19937 を用いるため使用を推奨しない。詳細は備考欄を参照。GCC 9.2からは暗号論的な乱数である rand_s を使用する。
587デフォルトの名無しさん
2021/10/13(水) 10:51:16.02ID:ocY7/s3a 偏りを判断する目が偏ってるのでは
588デフォルトの名無しさん
2021/10/13(水) 12:39:29.13ID:L2HfUVD6 random_deviceがダメな環境でrdtsc命令使ったことあるな
良いやり方かは知らん
良いやり方かは知らん
589デフォルトの名無しさん
2021/10/13(水) 16:09:05.50ID:SuRXriSW590はちみつ餃子 ◆8X2XSCHEME
2021/10/13(水) 16:23:55.69ID:6cp7j/AO >>589
前者は編集者による解説なども含んでいて仕様の意図や習慣がわかりやすい。 実装の現実みたいな補足もあるし。
後者は仕様書の再編を指向してるから正確だけど規則の羅列を読むのがしんどいこともある。
適宜使い分けて。
前者は編集者による解説なども含んでいて仕様の意図や習慣がわかりやすい。 実装の現実みたいな補足もあるし。
後者は仕様書の再編を指向してるから正確だけど規則の羅列を読むのがしんどいこともある。
適宜使い分けて。
591デフォルトの名無しさん
2021/10/13(水) 16:49:55.63ID:SuRXriSW >>590
ありがとう
ありがとう
592デフォルトの名無しさん
2021/10/14(木) 00:25:54.44ID:unU20Liw 逆にjaはほぼ見ないな
cpprefjpかen
cpprefjpかen
593デフォルトの名無しさん
2021/10/14(木) 17:38:44.33ID:0xmYH4RJ みんなで広げよう友達の輪
https://github.com/cpprefjp/cpprefjp.github.io
https://github.com/cpprefjp/cpprefjp.github.io
594デフォルトの名無しさん
2021/10/14(木) 19:08:30.88ID:D5VUtH01 今までJavaでやってきたけどC++もやってみたいんだよね
すぐ出来るようになると思う?
すぐ出来るようになると思う?
595デフォルトの名無しさん
2021/10/14(木) 19:10:28.43ID:u3valL3D596デフォルトの名無しさん
2021/10/14(木) 19:12:47.65ID:pMO89bX6 >>594
c++でちょっとした文字列パースして内容に応じたオブジェクト構築する処理書いてたの、
ほぼ使ったことないJavaに移植したらスゲー早く出来てワロタ。C#もサクサクできたな〜
逆は色々イラッとするんじゃねぇかな?
c++でちょっとした文字列パースして内容に応じたオブジェクト構築する処理書いてたの、
ほぼ使ったことないJavaに移植したらスゲー早く出来てワロタ。C#もサクサクできたな〜
逆は色々イラッとするんじゃねぇかな?
597デフォルトの名無しさん
2021/10/15(金) 01:29:52.42ID:oSpeFu2A 元々C++はその辺の文字列処理を毎回1からゴリゴリ書くような言語じゃなくて何らかのライブラリを利用するものだと思うけど、
クロスプラットフォームで各種文字コードが自由に扱えて、c++11以降の仕様に対応してて、かつかゆいところに手の届くライブラリって意外とないんだよね
いや、俺が知らないだけかもしらんけどw
クロスプラットフォームで各種文字コードが自由に扱えて、c++11以降の仕様に対応してて、かつかゆいところに手の届くライブラリって意外とないんだよね
いや、俺が知らないだけかもしらんけどw
598デフォルトの名無しさん
2021/10/15(金) 05:56:29.15ID:JZ8LRo6T 実質的な標準と呼べるものは今もないよ
599デフォルトの名無しさん
2021/10/15(金) 09:26:39.59ID:c8xS1fS2600デフォルトの名無しさん
2021/10/15(金) 10:21:28.25ID:Sjupi756 Javaから入ると不能(陰ポ)になる
もう手遅れ
もう手遅れ
601デフォルトの名無しさん
2021/10/15(金) 10:22:26.59ID:Sjupi756 >>597
wxWidgets
wxWidgets
602デフォルトの名無しさん
2021/10/15(金) 10:26:50.27ID:Eg3Mb3n8 あれ出来上がるバイナリ重すぎなんだけど、今は違ったりするのかね
603デフォルトの名無しさん
2021/10/15(金) 11:49:16.16ID:Sjupi756 Debugだとバカデカくなるけど
Releaseは気にならないレベル
(DLL除く)
Releaseは気にならないレベル
(DLL除く)
604デフォルトの名無しさん
2021/10/15(金) 11:53:45.11ID:JZ8LRo6T std::regexと等価なインターフェースを各々の正規表現ベンダーが用意してくれればいいんだが、それすら実現されていないお寒い状況
605デフォルトの名無しさん
2021/10/15(金) 12:03:59.88ID:XHojpqKh >>599
その辺も無いわけじゃないんだけど、クラスの構造どうしようかとか、メモリ管理どうするかとか、
変態trmplateでパズルしてみようかとか、選択肢多い分考えることも多い部分で時間かけることが
多い所はあるなーって。それがC++使いたい動機の裏返しでもあるんだけど。
あと本人の問題120%だが、ボケて油断してると、エラー直すのにやたら時間かかったりで。
Javaとか詳しく知らん状態だから言えるのかもしれんけど、もうこうするしかネェってレールが
最初からあるような印象でした。つかオラクルのライセンス問題のほうがムズいw
その辺も無いわけじゃないんだけど、クラスの構造どうしようかとか、メモリ管理どうするかとか、
変態trmplateでパズルしてみようかとか、選択肢多い分考えることも多い部分で時間かけることが
多い所はあるなーって。それがC++使いたい動機の裏返しでもあるんだけど。
あと本人の問題120%だが、ボケて油断してると、エラー直すのにやたら時間かかったりで。
Javaとか詳しく知らん状態だから言えるのかもしれんけど、もうこうするしかネェってレールが
最初からあるような印象でした。つかオラクルのライセンス問題のほうがムズいw
606デフォルトの名無しさん
2021/10/15(金) 12:19:11.94ID:Q47teFml 等価って図々しいだろ
607デフォルトの名無しさん
2021/10/15(金) 12:34:03.36ID:Ax3dDCZ3 std::regexみたいな文字コードというものがあることを知らない人間が作ってそうなものを標準だと思ってつかうのはやめたほうがいいと思います
608デフォルトの名無しさん
2021/10/15(金) 12:53:35.21ID:JZ8LRo6T char8_tが導入されたんだからutf-8しばりでいいじゃない
609デフォルトの名無しさん
2021/10/15(金) 13:14:36.67ID:x+xcCYcO なんか最近曖昧な上に突っ込む点多すぎる内容的にはどうでもいい話題が多くない?
610デフォルトの名無しさん
2021/10/15(金) 13:33:42.62ID:ma4A3Lrr611ハノン ◆QZaw55cn4c
2021/10/15(金) 19:29:27.64ID:0K4QrynR >>608
内部コードは utf-32 でやっているので、utf-32 縛りのほうがうれしいです‥
内部コードは utf-32 でやっているので、utf-32 縛りのほうがうれしいです‥
612デフォルトの名無しさん
2021/10/15(金) 19:56:39.74ID:JZ8LRo6T >>611
はぁ?
std:::basic_regex<char8_t>、std::basic_:regex<char16_t>, std:::basic_regex<char32_t> のどれでも好きなの使えばいいじゃん
はぁ?
std:::basic_regex<char8_t>、std::basic_:regex<char16_t>, std:::basic_regex<char32_t> のどれでも好きなの使えばいいじゃん
613デフォルトの名無しさん
2021/10/15(金) 20:01:47.12ID:JZ8LRo6T ところで、char16_t、char32_tってエンディアンはシステム依存しばり?
614デフォルトの名無しさん
2021/10/15(金) 20:03:20.51ID:eqKsqNtm ちなみに、いま使えるみたいですよ。
むかしは使えることになってるのに実際は使えなかったんだけど。
自作イテレーターにも対応してるようです。
アップルは知らんけど。
Ubuntu+gcc、Windows10+clでは自作イテレータでstd::regex<>が使えました。
これは、HTML、XML、JSONのデータ構造からコンテンツ内のみを検索のような事に使えます。
標準から外れるような議論もあるそうですが、便利なので外れないように抗議していきましょう。
むかしは使えることになってるのに実際は使えなかったんだけど。
自作イテレーターにも対応してるようです。
アップルは知らんけど。
Ubuntu+gcc、Windows10+clでは自作イテレータでstd::regex<>が使えました。
これは、HTML、XML、JSONのデータ構造からコンテンツ内のみを検索のような事に使えます。
標準から外れるような議論もあるそうですが、便利なので外れないように抗議していきましょう。
615デフォルトの名無しさん
2021/10/15(金) 20:12:21.03ID:eqKsqNtm C++20でchar8_tが入ると便利になりますよね。
616デフォルトの名無しさん
2021/10/15(金) 20:12:58.12ID:Q47teFml617デフォルトの名無しさん
2021/10/15(金) 20:35:46.40ID:eqKsqNtm STLはセントルイスの略。
では、GCCは何処でしょう?
では、GCCは何処でしょう?
618デフォルトの名無しさん
2021/10/15(金) 20:50:28.66ID:R98eOYn2 つまんね
619デフォルトの名無しさん
2021/10/15(金) 21:40:43.65ID:HBylJ5Wv 平面3リンクマニュピュレータの逆運動学のプログラミングが分かりません。
キーボードで手先の位置を入力すると、関節角が表示されるようにしたいです。
scanfを使うのと、アームの長さなどは適当に決めていいという条件です。
わかる方いたら、送って欲しいです。
キーボードで手先の位置を入力すると、関節角が表示されるようにしたいです。
scanfを使うのと、アームの長さなどは適当に決めていいという条件です。
わかる方いたら、送って欲しいです。
620デフォルトの名無しさん
2021/10/15(金) 22:21:16.57ID:fUsvamq4 >>619
どこの大学のなんていう授業か教えてくれたら送ってあげる
どこの大学のなんていう授業か教えてくれたら送ってあげる
621デフォルトの名無しさん
2021/10/15(金) 22:41:19.44ID:HBylJ5Wv 大した大学ではないです。ロボット工学です。
622デフォルトの名無しさん
2021/10/16(土) 10:16:02.78ID:pBeCkfuy >>619
冗長マニピュレータで一意に求まらん。制約条件設けてるはずだが。
冗長マニピュレータで一意に求まらん。制約条件設けてるはずだが。
623デフォルトの名無しさん
2021/10/16(土) 11:55:15.40ID:NekA8urB >>622
リンクの長さは良さそうな値を定義してください。関節の座標はこちらで決めずにあくまでも手先の位置・姿勢であるxed、yed、φedから計算で出します。解が複数出てくるので、全ての候補を求めてください。
例えば、リンクの長さは根元から順に0.3m、0.3m、0.05mなどで良いです。
プログラムとしては手先の目標値を入力して、θ1、θ2、θ3が出力されればOKです。
リンクの長さは良さそうな値を定義してください。関節の座標はこちらで決めずにあくまでも手先の位置・姿勢であるxed、yed、φedから計算で出します。解が複数出てくるので、全ての候補を求めてください。
例えば、リンクの長さは根元から順に0.3m、0.3m、0.05mなどで良いです。
プログラムとしては手先の目標値を入力して、θ1、θ2、θ3が出力されればOKです。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 [ぐれ★]
- 「町中華」の“息切れ倒産”が増加 ブームにも支えられ職人技で踏ん張ってきたが… 大手チェーンは値上げでも絶好調 [ぐれ★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 ★2 [ぐれ★]
- 立民・岡田氏の質疑「不適切」 維新・藤田氏、台湾有事答弁巡り [蚤の市★]
- さっき凄い若いイケメン見かけた
- 【高市売り】円安、止まらず!凄い勢いで暴落中。157円へ [219241683]
- そもそも日本て中国に日沈む国だとか無礼な事言ってたよね
- アニメでよく日本人キャラなのに目の色だけ変えたりしてるのあるじゃん?
- 【悲報】ヤフコメ民「中国が水産物を輸入禁止にするなら、日本国民向けに安く販売すればいい。中国依存から脱するべき」 [153736977]
- 高市早苗って「わざと」日本畳んでるよな? [419865925]
