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


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

C++相談室 part164



1 名前:デフォルトの名無しさん (ワッチョイ 33da-QP0H) mailto:sage [2023/05/09(火) 11:50:52.06 ID:EYc2I7oW0.net]
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること

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

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

41 名前:デフォルトの名無しさん mailto:sage [2023/05/16(火) 16:03:17.10 ID:mGp2Y9l5a.net]
>>39
可能
ヘッダのクラス定義はまとめないとだめだけど
cppのソースは分かれてても最後にリンクで辻褄が合えばOK

42 名前:デフォルトの名無しさん [2023/05/16(火) 16:24:39.60 ID:hKNAv4Vda.net]
>>39
後半で言っていることがちょっと難しいかな
多重継承の数珠繋ぎを言ってる?

よく分からんけど多分そんな変なことしなくていいよ

43 名前:デフォルトの名無しさん mailto:sage [2023/05/16(火) 17:34:39.57 ID:cdgpde7Q0.net]
>>41
>>42
助かります。ありがとうございます。
勉強してみます。

44 名前:デフォルトの名無しさん mailto:sage [2023/05/16(火) 21:35:23.62 ID:+NXdN5Npd.net]
可読性が悪いものは
ファイルを分けても良くはならんぞ

45 名前:デフォルトの名無しさん mailto:sage [2023/05/16(火) 21:55:30.94 ID:RFVtGrOF0.net]
>>39
1つのクラスに機能を詰め込み過ぎなんじゃない?
昔、4万行のcppファイルを見たことはあるけどw

46 名前:デフォルトの名無しさん mailto:sage [2023/05/16(火) 22:05:53.03 ID:oY5Fe8SB0.net]
殆どコピペなんだろうな
クラスの継承知らないヤツがよくやる荒業

47 名前:はちみつ餃子 mailto:sage [2023/05/16(火) 22:27:10.76 ID:tGbGLk1R0.net]
そういえば C# でクラス定義を分ける機能 (パーシャルクラス) があると聞いたことがあるけど
本来的に分けるべきクラスを見かけだけ分割するような悪い設計を誘発しそうな印象がある。
C# について全然知らんので印象だけだけど。

48 名前:デフォルトの名無しさん mailto:sage [2023/05/16(火) 22:54:23.62 ID:A1rs+At80.net]
partialはXAMLから生成された.csと手書きする.csをマージするための機能なので

49 名前:デフォルトの名無しさん (スプッッ Sd1f-zj+H) mailto:sage [2023/05/17(水) 07:00:26.09 ID:s9zxu+xkd.net]
>>47
多重継承っぽいやつ?



50 名前:デフォルトの名無しさん (スップ Sd1f-kcYJ) [2023/05/17(水) 08:36:31.92 ID:9mruUvtDd.net]
分割されたそれぞれの断片をコンパイラの後工程で1クラスにまとめ上げる感じ。
なのでこんな感じの相互参照も許される。

partial class C{
private void F1(){ F2(); }
}

partial class C{
private void F2(){ F1(); }
}

まあ当然コードの見通しが悪くなるので、
コンパイラ生成が絡むとこだけをpartialにして1ファイル1クラスにしておくのが鉄則

51 名前:デフォルトの名無しさん (スッププ Sd1f-paFp) mailto:sage [2023/05/17(水) 12:04:20.17 ID:nFfh+5gid.net]
「1ファイル1クラスにしておくのが鉄則」

10行のクラスも10000行のクラスも何も考えずに1ファイル
思考停止君のやること

52 名前:デフォルトの名無しさん (オイコラミネオ MMc7-ZkZz) mailto:sage [2023/05/17(水) 12:36:42.78 ID:F24a8wLtM.net]
C#のpartialは基本的に自動生成されたファイルとの分離が主目的

winformsのコントロールのプロパティのイニシャライズとか人から触ってほしくないファイルで一種の馬鹿避けになってる
delphiではそのコントロール向けのファイルがバイナリでぶっ壊れてもどうにもできないし
コーディング中にコード内検索も出来ない
利便性が著しくよくない

後は一般のコードジェネレータの吐き出すファイル用にも使える
最近はmvvm toolkitで便利に使われている

コードの可読性が上がるし触られたくないものを扱うのも便利

人力コードで使う場合は長いファイルの下請けメソッドを分割する場合
単純に可読性が上がるけど普通は別のアプローチを使う

特定の機能をまとめたファイルを一つ作ってそこに関連クラスを全部入れるとかもできるけど無しだろうな
特定のタイミングでプリンターに出力するメソッドを追加してファイルのアリ無しで切り替えるとかは出来そう

53 名前:デフォルトの名無しさん (アウアウウー Sa67-MLJk) [2023/05/17(水) 12:57:39.48 ID:TlHThGt8a.net]
おんなじ意味合いの関数なんだけどSFINAEしまくってて1000行くらいあるやつはよく見かける

54 名前:デフォルトの名無しさん mailto:sage [2023/05/17(水) 13:32:11.85 ID:6s1sKbMg0.net]
時代はパーシャル

55 名前:デフォルトの名無しさん mailto:sage [2023/05/17(水) 16:10:19.20 ID:ZA2j/mjnd.net]
触られたくないコードって危険を孕んで内科医?
業務の情報が1人の社員に独占されていると
そいつが急死したら詰むだろ

56 名前:デフォルトの名無しさん mailto:sage [2023/05/17(水) 22:50:57.85 ID:F24a8wLtM.net]
彼も若いころは文脈も理解できてまともにコーディングできたのかもしれない

皆いつか老化して意味が取れなくなるんだから
いつか行く道と言うことで…

57 名前:デフォルトの名無しさん mailto:sage [2023/05/18(木) 08:16:22.48 ID:rquLbZPK0.net]
互いに依存しないことを明確にするためにファイルを分けることはまれによくある……
static int g_foo;

class A { ... };

class B {
 void bar() { baz(g_foo); A x; } // Bがg_fooやAへの依存が無いことはBをファイルを分けたらワカル分けなかったらわからん
};

58 名前:デフォルトの名無しさん mailto:sage [2023/05/18(木) 08:21:13.77 ID:rquLbZPK0.net]
もっともファイルを分けたからといってもメモリのエイリアシング的な形で依存した場合は知らん
some_func()が表記上はg_fooを含まないのに実は中でg_fooのアドレスを知っていて以下略

59 名前:デフォルトの名無しさん mailto:sage [2023/05/18(木) 22:15:33.79 ID:mLb7AMe5M.net]
さすがに冷たい対応だったかなと

C#でpartialが入った経緯
winformsはGUIデザイナを使ってボタン等のコントロールを自由に配置してプロパティを変えて表示される文字を変えることができる
初期はデザイナで変更するとformのファイルがそのまま変更された
そのファイルを人間も書き換えているので人がミスしたり運が悪いと整合性が取れなくなったりしてた
例えば全置換などやってデザイナの部分も書き換わったりとか

それで自動生成された部分を人が不意に触れないないようにそこだけを別ファイルに出す目的でpartial classが出来た
partial methodも作られたけど他人が使ってるのを見たことがない



60 名前:デフォルトの名無しさん mailto:sage [2023/05/19(金) 02:03:23.75 ID:iSJAQTOS0.net]
日本でパーシャルと言えばパーシャル冷蔵庫
微妙に凍結させた状態にして保存するというアレ
まさにC#のpartialの事である

61 名前:デフォルトの名無しさん mailto:sage [2023/05/19(金) 14:04:53.67 ID:Y7veEz1vd.net]
偏微分

62 名前:デフォルトの名無しさん mailto:sage [2023/05/19(金) 14:20:06.94 ID:s84ipUzkM.net]
グラッド ダイバージェンス ローテーション

63 名前:デフォルトの名無しさん (アウアウウー Sa2f-SwK+) [2023/05/20(土) 13:24:28.97 ID:QfLlK72xa.net]
Φ(E)
∇・E
∇×E

64 名前:デフォルトの名無しさん (JP 0H2b-QEN2) mailto:sage [2023/05/20(土) 14:24:46.00 ID:duXb8gf0H.net]
ナブラッ

65 名前:デフォルトの名無しさん (ワッチョイ 03cf-owa4) mailto:sage [2023/05/20(土) 14:35:25.50 ID:mmZhl8HV0.net]
チロワッ

66 名前:デフォルトの名無しさん (オイコラミネオ MMeb-owa4) mailto:sage [2023/05/20(土) 15:53:45.99 ID:KTPYLvU6M.net]
APLを思い出した
さすがに使ったことはないけど

67 名前:デフォルトの名無しさん (アウアウウー Sa2f-IRVr) mailto:sage [2023/05/20(土) 16:00:42.45 ID:eGW3N412a.net]
for(auto &v: createVector()) なんか処理

みたいな書き方してもcreateVectorは一回しかよばれず大丈夫ってことでいい?

68 名前:はちみつ餃子 mailto:sage [2023/05/20(土) 16:21:49.91 ID:dyAKGBP20.net]
>>67
せやで。
その関数が呼ばれるのは一度だけという解釈で正しい。

69 名前:デフォルトの名無しさん mailto:sage [2023/05/20(土) 16:23:49.47 ID:am3G09Kz0.net]
>>67
そんくらい自分で試しなされ
$ cat test.cpp
#include <iostream>
#include <vector>
using namespace std;
auto createVector() {
cout << "hoge\n";
return vector <int> ();
}
int main () {
for(auto &v: createVector()); // なんか処理
return 0;
}
$ g++ test.cpp
$ ./a.out
hoge



70 名前:デフォルトの名無しさん mailto:sage [2023/05/20(土) 18:59:35.46 ID:VcGb9zmJ0.net]
>>69
自分の環境だと通るのは知ってるけど、実は未定義でアウトみたいな場合あるから5chの有識者の意見が聞きたかった

71 名前:デフォルトの名無しさん mailto:sage [2023/05/20(土) 19:26:09.53 ID:KTPYLvU6M.net]
かなり昔範囲forはプリプロセッサで展開されると聞いたことがあったなあ
そういうのから誤解なんじゃないかな

実際展開してみたけどプリプロセッサでは展開されないです

72 名前:デフォルトの名無しさん mailto:sage [2023/05/20(土) 20:10:50.85 ID:pdI1pmlS0.net]
>>70
これのこと?

std::vector<int> createVector();

for(auto &v: createVector()) // セーフ

struct Result { std::vector<int> v; };
Result createResult();

for(auto &v: createResult().v) // UB

73 名前:はちみつ餃子 mailto:sage [2023/05/21(日) 00:13:09.51 ID:tvaGSf6W0.net]
>>71
range-based for は等価なコードを示す形で意味論が規定されてる。
https://timsong-cpp.github.io/cppwp/n3337/stmt.ranged
「こう書いた場合の挙

74 名前:ョと等しい」という説明が「このように展開される」と誤解されたんだろう。
コンパイラの内部で実際に展開しても構わないんだが
プリプロセッサはフェイズの整合性がとれなくなるのでこの展開をプリプロセッサでは実現できない。
[]
[ここ壊れてます]

75 名前:はちみつ餃子 mailto:sage [2023/05/21(日) 00:41:25.84 ID:tvaGSf6W0.net]
一時オブジェクトの寿命は個々の具体例を網羅的に覚えるというわけにもいかんので
ちゃんと原則を理解しないといかんというのは警告しておく。

>>72 で提示された内容を解説すると、このとき createResult の結果である Result は一時オブジェクトなので
完結式の終わりには解体される。 (>>73 で提示した展開形を参照のこと。)
右辺値は参照で受けた場合に限りその参照の寿命と同じ分だけ寿命が延長されるというルールがあるので
その原則に従えば Result::v の寿命は延長されるのだが v を内包する Result が解体されるときにメンバも解体してしまうので
Result::v も無効になってしまう。
当然だがすでに解体されたオブジェクトはそのイテレータも全部が無効。

76 名前:デフォルトの名無しさん [2023/05/21(日) 10:05:34.04 ID:bUoMcGVnd.net]
単純なFOREACHマクロだと展開できないんだよねこれ

FOREACH(T x, iterable) "文"

{
auto&& range=iterable;
auto&& begin=range.begin();
auto&& end=range.end();
for(;begin!=end; ++begin){
T x=*begin;
"文"
}
}

range寿命の関係上スコープの外に漏らしてはいけない。
FOREACHの終了を表現するために"#define FOREACH_END }}"とかの間抜けなマクロが必要になる
(たぶんC++17で導入された初期化付きifを使えば誤魔化せるけど)

セパレータの":"(or ",")をプリプロセッサを見つけるのが不可能。
Tでもiterableでも":"とか","を使って表現するケースに対応し切れない
(Tにtypename std::array<int, 5>::value_type を指定されたら無理)

77 名前:デフォルトの名無しさん (オイコラミネオ MMeb-owa4) mailto:sage [2023/05/21(日) 13:16:13.24 ID:gNV32dtiM.net]
そうそう
プリプロセッサは重複の無い任意の変数名を持ってこれない
固定でもスコープの問題もあるからプリプロセッサ論は馬鹿げてるなと思った

78 名前:デフォルトの名無しさん mailto:sage [2023/05/21(日) 14:57:20.57 ID:TLn2V+5X0.net]
>>74
ちなみにこれはC++23からは解決する(P2644)
for文の中身のあらゆる一時オブジェクトは(謎の力によって)ループ終了まで生存するようになる
まあ現時点ではやらない方がいいし、気にしなくて良くなるまで10年はかかるだろうけど

79 名前:デフォルトの名無しさん mailto:sage [2023/05/21(日) 15:50:41.28 ID:hDRagkvp0.net]
>>77
えええ!
どんな需要を満たそうとしてそんな変更するんかね?



80 名前:デフォルトの名無しさん mailto:sage [2023/05/21(日) 19:09:41.96 ID:9sSc2LHl0.net]
class Foo {
 int m_value;
public:
 Foo() { m_value = 現在時刻に依存して決まる何かの値; }
 int v() const { return m_value; }
};

int tmp;
for (i = 0; (tmp = Foo().v(), tmp < 100); i++) {
  cout << i << "," << tmp << endl;
}

とかになったらどうなってしまウンダー/(;≧Д≦)\

81 名前:デフォルトの名無しさん mailto:sage [2023/05/21(日) 20:47:43.16 ID:TLn2V+5X0.net]
for (auto&& x: <<ここだけだよ>>)

82 名前:デフォルトの名無しさん (ワッチョイ 6f5f-u1DA) mailto:sage [2023/05/21(日) 21:41:43.50 ID:Wy9ZySN20.net]
std::for_eachと死ぬタイミング合わせようとしてるのかな

83 名前:デフォルトの名無しさん (スププ Sdea-3V1s) [2023/05/22(月) 11:38:14.26 ID:da9WNPSud.net]
do{}while(ここにblock内で宣言した変数使えるのマダ?);

84 名前:デフォルトの名無しさん mailto:sage [2023/05/23(火) 08:13:25.35 ID:Zuh94crlM.net]
Main でインスタンス化した、ファイル操作
クラスの設定を、別のクラスutilityの
インスタンスで使いたい時ってどうしたら
いいですか?

ファイル開いておいて、デバッグ内容を
そこに書き込みたい。
デバッグ終わったら不要になるんで、
あまりincludeとか変数とか増やしたくない。

VC++ のwindowsディスクトップアプリ です。

85 名前:デフォルトの名無しさん (スップ Sd8a-Cz+X) [2023/05/23(火) 08:33:03.17 ID:2zdXEqSEd.net]
「ファイル操作クラス」ってなんのことか読み取れんが
std::osteamのことか?std::ostreamを持ってる別の仕事があるクラスか?

差し支えなければ現状のクラス定義を貼ってほしいが

86 名前:デフォルトの名無しさん (ラクッペペ MM86-F7IQ) mailto:sage [2023/05/23(火) 09:15:28.22 ID:Zuh94crlM.net]
>>84
ファイル操作を含んだ、デバッグ用に用意した
クラスです。Debugクラスとします。


Debug dbg; グローバルで‥
WWinMain(){

dbg.initial(); 色んな初期設定。
dbg.filename(debugfile) ;
dbg.start(); ここで、std::ofstrm file.openしてる

dbg.writefile(“なんかかきこむ”);

Utilty utl;

dbg.closefile();


}

Class Utility{

この中で、mainの中で色々設定した内容で
(mainで用意したdbgインスタンスのまま。)
Debugクラス。使いたい。
開いたFileそのまま。。


}

こんな感じですが、伝わりますか?

87 名前:デフォルトの名無しさん [2023/05/23(火) 10:39:56.04 ID:X1m2WkvHa.net]
Utility util(dbg);

88 名前:デフォルトの名無しさん (ワッチョイ defb-a+t/) mailto:sage [2023/05/23(火) 12:30:30.59 ID:gLCisDzi0.net]
関数の命名センスが短絡的やな
扇子を磨け

89 名前:デフォルトの名無しさん (スップ Sd8a-Cz+X) [2023/05/23(火) 12:40:55.81 ID:2zdXEqSEd.net]
std::ostreamはコピーを禁止してるから参照渡し(or ポインタ渡し)で受け取るのがいいかな

class Utility{
Debug& _debug;
public:
Utility(Debug& debug) : _debug(debug) {}
void f(){
_debug.writefile(...);
}
};

int main(){
...
Utility utl(dbg);
}



90 名前:デフォルトの名無しさん (アウアウウー Sa2f-k5Su) mailto:sage [2023/05/23(火) 13:00:20.12 ID:zQ9auONPa.net]
Debugをシングルトン化しておけばいいのでは。
そうすれば、utilityもMainもDebugの定義を読むだけで、お互いに無関心でいられる。

91 名前:デフォルトの名無しさん (スップ Sdea-9ehv) mailto:sage [2023/05/23(火) 13:07:36.09 ID:Gn7U56ehd.net]
staticおじさんになるんだよ

92 名前:デフォルトの名無しさん (ワッチョイ ffda-dfFb) mailto:sage [2023/05/23(火) 13:19:59.30 ID:4jUsmOvf0.net]
禁じ手
グローバルおじさん

93 名前:デフォルトの名無しさん (ワッチョイ 635f-cbOI) mailto:sage [2023/05/23(火) 14:52:04.84 ID:HWUzxVfV0.net]
#ifdef NDEBUG
#define DEBUG_PUTLN(line)
#else
#define DEBUG_PUTLN(line) dbg.writefile(line)
#endif

94 名前:デフォルトの名無しさん (ワッチョイ 5f7c-aV//) mailto:sage [2023/05/23(火) 20:11:47.19 ID:QG1lXeie0.net]
シングルトンって実質はグローバル変数そのものなんだけどな

95 名前:デフォルトの名無しさん (ワッチョイ dbd4-3DEL) mailto:sage [2023/05/23(火) 20:33:02.99 ID:H3Kl0Etq0.net]
クラス定義がそもそもグローバルだからな

96 名前:デフォルトの名無しさん mailto:sage [2023/05/23(火) 23:59:19.62 ID:4jUsmOvf0.net]
int i をグローバル変数にしてたおじさん居たな
理由聞いたら書くの面倒だからとか

97 名前:デフォルトの名無しさん [2023/05/24(水) 01:56:30.90 ID:EzFDCa2Ya.net]
全部シングルトンおじさんとglobalおじさんは一人でもいると周りがめっちゃ迷惑やな

98 名前:デフォルトの名無しさん mailto:sage [2023/05/24(水) 14:31:10.50 ID:VF8oVK+zM.net]
ありがとう。
やっばり、Utility の中にも色々書く必要あり
ですね。
デバッグのためだけにUtility2 3 4全部直すのも
と思ってたけど、諦めて頑張ります。

99 名前:デフォルトの名無しさん mailto:sage [2023/05/24(水) 14:34:53.03 ID:VF8oVK+zM.net]
external でインスタンス渡して、
global.h さんだけincludeしてできないかなと、
甘く考えてた時もありました。



100 名前:デフォルトの名無しさん mailto:sage [2023/05/24(水) 23:58:03.92 ID:lCJuR93r0.net]
世界で1つのint iをブンブン回してるのクソワロタ

101 名前:デフォルトの名無しさん mailto:sage [2023/05/25(木) 00:06:30.18 ID:1obgfOJTa.net]
ループ内でサブルーチンとか呼んだときどうするんだろう・・・

102 名前:デフォルトの名無しさん [2023/05/25(木) 00:18:52.33 ID:8bGOXla20.net]
std::u16string_view stringView (string);
stringView = {stringView.data () + 1, stringView.size () - 1};

これの2行目はどういう意味なんでしょうか?何かの文法のような気がするのですが、調べ切れていません・・・。

103 名前:デフォルトの名無しさん mailto:sage [2023/05/25(木) 00:55:03.39 ID:NKFrr9+j0.net]
グローバルなオブジェクトのコンストラクタの中からprintf()とかのC言語の標準ライブラリ機能が呼べるのはワカルが
coutとかのC++の標準ライブラリ機能は安全に呼べることは保証されるの?

104 名前:デフォルトの名無しさん mailto:sage [2023/05/25(木) 01:41:17.05 ID:WiPfB6bJ0.net]
される
規格上はstdに含まれる値(オブジェクト)はユーザーコードで参照されたら(特別の規定がない限り)常に有効でなければならない

105 名前:デフォルトの名無しさん (ワッチョイ 4aa5-owa4) mailto:sage [2023/05/25(木) 08:37:46.24 ID:2LyQ/gAw0.net]
>>101
rangesのviewだろ

106 名前:はちみつ餃子 mailto:sage [2023/05/25(木) 09:32:15.13 ID:G3dlC7U30.net]
>>101
> stringView = {stringView.data () + 1, stringView.size () - 1};

↑これは↓こう書いた場合と同じ。

stringView = std::u16string_view(stringView.data () + 1, stringView.size () - 1);

107 名前:デフォルトの名無しさん (スップ Sdea-9ehv) mailto:sage [2023/05/25(木) 11:13:48.89 ID:vvIauVZOd.net]
>>105
一見意味不明何だけど何て記法?

108 名前:デフォルトの名無しさん mailto:sage [2023/05/25(木) 11:49:30.93 ID:tfjCiJA40.net]
勉強中なんだけど、クラスの相互参照って気持ち悪い

109 名前:デフォルトの名無しさん mailto:sage [2023/05/25(木) 12:04:14.41 ID:tfjCiJA40.net]
もう、慣れた



110 名前:はちみつ餃子 mailto:sage [2023/05/25(木) 12:08:58.16 ID:G3dlC7U30.net]
>>106
たぶん直接的に表す用語は定義されてないと思う。

型の情報がないときは波括弧で表されたリストは initializer_list に推論されるけど
代入のときは代入演算子のオーバーロード解決時候補に関数シグネチャとして T& operator=(T&,T); が加わるので
結果としてこのとき生成される一時オブジェクトの初期化子という解釈になる。

111 名前:デフォルトの名無しさん mailto:sage [2023/05/25(木) 13:19:23.21 ID:E3OVdEtKM.net]
Uniform initialization 一様初期化とか統一初期化?
https://cpprefjp.github.io/lang/cpp11/uniform_initialization.html

std::initializer_listも含んだ文法だね
std::initializer_listの方か他のコンストラクタの方になるかはけっこうルールがややこし

112 名前:デフォルトの名無しさん (オイコラミネオ MMeb-owa4) mailto:sage [2023/05/25(木) 19:45:10.69 ID:bX845kvIM.net]
c++はその{}の中に書くとclassの中に書いた変数が順番に初期化される
いろいろ問題があるから他の言語で採用されていない

c++は実用面で利点があると判断されたのかそのまんま

113 名前:デフォルトの名無しさん (オイコラミネオ MMeb-owa4) mailto:sage [2023/05/25(木) 19:47:55.97 ID:bX845kvIM.net]
Brace initialization
https://learn.microsoft.com/en-us/cpp/cpp/initializing-classes-and-structs-without-constructors-cpp?view=msvc-170

114 名前:デフォルトの名無しさん (ワッチョイ 1b02-XPFS) mailto:sage [2023/05/26(金) 06:48:21.55 ID:kRDoXd150.net]
>>105
ありがとうございます。
DTMのプラグイン(VST3)を作ってみたくて、それにはC++をある程度分かってないといけないそうなので、
参考書読んだりしているのですが、これれまでC++に全く触れてこなかったので、かなり面食らってます・・・。
サンプルのソースを見ても、いろいろな応用が含まれていて、前提となる知識がそれなりにないと分からないのかなと・・・。

115 名前:はちみつ餃子 mailto:sage [2023/05/26(金) 10:03:10.85 ID:qewSmBpu0.net]
>>113
C++ の仕様には未定義がたくさんあるので実際に動作させた結果から学ぶべきではないという事情がある。
ある程度は理屈で理解しておかないと簡単に破綻するよ。
実例を見ながら雰囲気で使うってのは出来ない言語だと思う。

116 名前:デフォルトの名無しさん (ワッチョイ 67c9-HmrL) mailto:sage [2023/05/26(金) 10:55:39.45 ID:Yaiov3bU0.net]
しらない間に未定義踏んでて、コンパイラ変わったりしたときに挙動が変わるやつ

117 名前:デフォルトの名無しさん [2023/05/26(金) 11:28:17.59 ID:VVS6yE6rp.net]
>ある程度は理屈で理解しておかないと
に対しての
>実際に動作させた結果から学ぶべきではない

極端じゃね?

118 名前:デフォルトの名無しさん mailto:sage [2023/05/26(金) 11:37:41.87 ID:jtoHc2Cr0.net]
>>113
chatgptにサンプルコードを解説させたら?

119 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ cb3e-FIIW) mailto:sage [2023/05/26(金) 13:02:36.82 ID:qewSmBpu0.net]
>>116
「ちゃんとした資料を読まずに動作から何かを読み取ろうとするな」という話なので、
資料を読んだうえで手を動かして確認することまで否定してるわけじゃないよ。
少なくとも初手は入門書くらい読まんといかんという程度のことを言ってる。



120 名前:デフォルトの名無しさん (スッップ Sdea-Q5bc) mailto:sage [2023/05/26(金) 21:10:27.73 ID:u5i01UPgd.net]
解脱させたらに見えたし

121 名前:デフォルトの名無しさん (ワッチョイ 5f7c-aV//) mailto:sage [2023/05/26(金) 21:19:24.77 ID:cuJor+ml0.net]
「ワイのコードではこう動いてるからいいの!」「ワイが試したらこう動いたからこうなの!」
で突っ走った結果大爆発する事例が後を絶たない

122 名前:デフォルトの名無しさん (スプッッ Sd13-Cz+X) [2023/05/26(金) 21:27:57.62 ID:TE50P/kBd.net]
未定義まで行かなくても処理系依存とか未規定動作もあるからほんとにややこしい
知らず知らずのうちにコンパイラの拡張機能使ってたりもあるし

「動けばいいんだよ!」としか考えてないとどこで足元掬われるかわからん

123 名前:デフォルトの名無しさん (アウアウウー Sa2f-+waq) mailto:sage [2023/05/26(金) 22:54:23.75 ID:C+URTl/Qa.net]
んちんちんちんちんちんち

124 名前:デフォルトの名無しさん [2023/05/26(金) 23:25:57.70 ID:Rw5xxtFh0.net]
>>120-121
そんな低レベルな奴見たことないけどな
居るには居るんだろうけど

あと逆にそういうのを「手を動かさない」「実用コードで試しもせずに机上の空論でマウント取る」ことの言い訳にしてる奴を最近よく見かけるのでな

125 名前:デフォルトの名無しさん mailto:sage [2023/05/26(金) 23:42:19.49 ID:mzi7SNrwM.net]
実際VS2005ぐらいに演算の順番が決まってなくて実装依存だった
それでコードを書いてた
それがVS2007には演算順序が2005と変わってた
GCCでも別の順で計算された

どうしたらいいかわからんから多分ここに聞きにきたら未定義動作だからどうしようもない
実装依存で仕方がないと返答あり

126 名前:デフォルトの名無しさん [2023/05/27(土) 00:10:57.47 ID:U8Vd2x100.net]
自分もVCから別環境のclangに数万行のコード移したら未定義踏んでた部分あるけど、試さずにそれを最初から予知出来てたかというと無理がある
どちらかのコンパイラのバグで通らなかったりおかしな動作する場合もあるんだし(特にテンプレート周りは多い)
書いてる最中でも疑問に思ったらすぐ調べる癖がついてりゃいいんじゃないかな

127 名前:デフォルトの名無しさん mailto:sage [2023/05/27(土) 00:12:11.79 ID:ne0x12BC0.net]
>>124

128 名前: いや、文を分けて順序付けするなり、やりようはあっただろ。 []
[ここ壊れてます]

129 名前:デフォルトの名無しさん mailto:sage [2023/05/27(土) 00:24:40.55 ID:bsq21T/IM.net]
>>126
上にも書かれてるけど既存のコードのどこで問題が発生してるか全てを特定できないんだよ



130 名前:蟻人間 ◆T6xkBnTXz7B0 (スフッ Sdbf-JQ4Y) mailto:sage [2023/05/27(土) 00:41:28.44 ID:LEdjjvJrd.net]
最近のVisual C++なら「コード分析」機能でコードの改良点を教えてくれるかも知れない。

131 名前:デフォルトの名無しさん (ワッチョイ 3bda-DntA) mailto:sage [2023/05/27(土) 00:45:08.14 ID:JrAUAXG20.net]
AIが他人が書いたクソコードのリファクタリングやってくれると助かるな

132 名前:デフォルトの名無しさん (アウアウウー Sa8f-BLq/) mailto:sage [2023/05/27(土) 01:23:22.98 ID:D5N3c6HOa.net]
超すごい!人間を越えた!とかワイワイさわがしいAIだが
実際にそういう感じの「マジに困ってる、やってくれたら本気で助かる」
ような事案は結局できない、という地獄

133 名前:デフォルトの名無しさん mailto:sage [2023/05/27(土) 04:58:22.78 ID:wRHxWgs90.net]
言われたとおりやるだけ、なやつの極端な例だからな

134 名前:デフォルトの名無しさん (ワッチョイ 3bf0-TYVD) [2023/05/27(土) 08:03:41.82 ID:hUTpNjv00.net]
AIが人間並みの知性を持てば人間並みにエンバグしてくれるはず

135 名前:デフォルトの名無しさん (アウアウウー Sa8f-BLq/) mailto:sage [2023/05/27(土) 08:08:34.97 ID:ap1zYrbma.net]
すごい!まさに人間そのもののAIじゃないか!

136 名前:デフォルトの名無しさん mailto:sage [2023/05/29(月) 16:30:05.50 ID:AteM0zCG0.net]
責任転嫁するようになるまで人間に並んだとは認めない

137 名前:デフォルトの名無しさん mailto:sage [2023/05/29(月) 17:54:13.71 ID:I9NccWA+0.net]
会社で嫌われるイヤな奴の特徴を全てプログラミングされたAIとか?

138 名前:デフォルトの名無しさん mailto:sage [2023/05/29(月) 18:33:58.19 ID:IrTtCTAo0.net]
AIに相談したせいで鬱になって辞める社員が続出しそうだな
AIポイゾニングは新手のリモート攻撃として流行るかもね

139 名前:デフォルトの名無しさん (ワッチョイ 0b6e-jMfM) mailto:sage [2023/05/29(月) 20:15:39.44 ID:I9NccWA+0.net]
ヘイテトリスみたいな社員AI



140 名前:デフォルトの名無しさん mailto:sage [2023/06/04(日) 08:29:54.68 ID:5jvZ+YKl0.net]
質問ですがstd::stringに格納された数値文字列を数値にしたい、
しかし数値以外の文字(ただし空白文字は認める)が後ろにくっついていたらエラーにしたい、と言う場合どうす
れば良いの?
ダチャい書き方ならできうるけど人類はいつまでstrtod()や&(str[0])……
std::string str;
str ← なんか文字列入る
char* end;
double d = std::strtod(&(str[0]), &end);
if (end == &(str[0])) { エラー }
while (*end != '\0') {
 if (!std::isspace(*end)) { エラー }
 end++;
}

141 名前:デフォルトの名無しさん mailto:sage [2023/06/04(日) 08:38:19.14 ID:Wo5LOckB0.net]
>>138 まず、こちらへ
0からの、超初心者C++相談室
https://mevius.5ch.net/test/read.cgi/tech/1542002113/

142 名前:デフォルトの名無しさん (ワッチョイ 0128-w4Nq) mailto:sage [2023/06/04(日) 09:23:46.19 ID:5jvZ+YKl0.net]
誘導されたので誘導先に建てたはサーセン、

143 名前:デフォルトの名無しさん mailto:sage [2023/06/04(日) 11:01:36.99 ID:/SPLhkOjM.net]
文字列(char配列)とstringの仕組みはダサいけど他も大体これ
さらにspanもいれる
どこも大体同じ

144 名前:デフォルトの名無しさん [2023/06/04(日) 18:06:29.89 ID:HhL1J/ge0.net]
しかしstodの「文字列が数値で始まる場合、数値化不可能な文字があっても例外は投げずに数値化出来るところまでの部分で数値化する」ってむしろ不便だよな。

145 名前:デフォルトの名無しさん mailto:sage [2023/06/04(日) 18:43:24.19 ID:XolxJINE0.net]
charに変換して文字コード比較して範囲内外

146 名前:ナ変換分ける処理がシンプルじゃね []
[ここ壊れてます]

147 名前:デフォルトの名無しさん mailto:sage [2023/06/04(日) 18:44:47.92 ID:XolxJINE0.net]
速度気になるなら二分探索の処理に追加してやればいいし

148 名前:デフォルトの名無しさん mailto:sage [2023/06/04(日) 18:45:10.55 ID:XolxJINE0.net]
再帰処理でやってもいいかな

149 名前:デフォルトの名無しさん mailto:sage [2023/06/04(日) 18:45:59.18 ID:XolxJINE0.net]
順序保証したいならリンクリストもありか



150 名前:デフォルトの名無しさん mailto:sage [2023/06/04(日) 18:46:48.29 ID:XolxJINE0.net]
ちんこ痒い

151 名前:デフォルトの名無しさん [2023/06/04(日) 18:58:47.70 ID:ym4W3arT0.net]
リンクトリストな

152 名前:デフォルトの名無しさん mailto:sage [2023/06/04(日) 19:08:45.19 ID:XolxJINE0.net]
内挿探索でも良さそう

153 名前:デフォルトの名無しさん (ワッチョイ a236-OEcF) mailto:sage [2023/06/04(日) 20:01:40.57 ID:0KyMklrL0.net]
STLへの多重配列クラス追加まだ?

154 名前:はちみつ餃子 mailto:sage [2023/06/04(日) 22:37:10.94 ID:MHoxWKtY0.net]
>>142
トークナイズするときに便利。
文字列が数値表現だけになっている状態を扱うことってそんなになくない?
なんらかの文字列から取り出す操作になることは多いし、
それを前提として考えたら自然な設計だと思う。

155 名前:デフォルトの名無しさん mailto:sage [2023/06/04(日) 22:54:17.16 ID:5jvZ+YKl0.net]
>>151
>なんらかの文字列から取り出す操作になることは多いし、
まさにそれやが
std::stod()ではどこまで読んだのかわからないから取り出せない……

156 名前:はちみつ餃子 mailto:sage [2023/06/04(日) 23:07:59.65 ID:MHoxWKtY0.net]
>>152
わかるが。

157 名前:デフォルトの名無しさん mailto:sage [2023/06/04(日) 23:16:49.21 ID:bxWaSYac0.net]
仕様も確認できない奴が仕様に文句付けるとかお笑いだわ

158 名前:デフォルトの名無しさん mailto:sage [2023/06/04(日) 23:21:12.95 ID:QWRuQk/m0.net]
勉強になるなぁ
boost::lexical_cast
ばっか使ってきた

159 名前:デフォルトの名無しさん (ワッチョイ 0128-w4Nq) mailto:sage [2023/06/05(月) 01:56:30.15 ID:yTJt/rkc0.net]
>>154
仕様を確認して文句つけているのだから無問題



160 名前:デフォルトの名無しさん (ワッチョイ 0128-w4Nq) mailto:sage [2023/06/05(月) 02:01:37.37 ID:yTJt/rkc0.net]
つか自分のスキルに合わせて仕様を変えてしまう香具師よりはマシ

161 名前:デフォルトの名無しさん (ワッチョイ 0128-w4Nq) mailto:sage [2023/06/05(月) 02:39:23.25 ID:yTJt/rkc0.net]
つか初心者スレで今教えてもらったわサーセン;;;
std::stod()の第2引数でどこまで読んだのかわかるのかそうか、、、

162 名前:デフォルトの名無しさん [2023/06/05(月) 09:40:21.73 ID:ejs/048Ga.net]
1e-3
0.4E+5

どうせ . とか + とか - とか e とか E が数字の後ろに来たらエラーにする糞オレオレ関数の出来上がり

163 名前:デフォルトの名無しさん [2023/06/05(月) 18:46:42.35 ID:QlKvcf+ua.net]
fortran爺が1e-3を1-3と書いて送ってくるの辛い

164 名前:デフォルトの名無しさん mailto:sage [2023/06/05(月) 22:24:29.81 ID:yTJt/rkc0.net]
charやwchar_tのうちは文字数くれたら別段間違うことは無いはず……

165 名前:デフォルトの名無しさん (ワッチョイ 916e-UlWg) [2023/06/06(火) 05:24:35.89 ID:sRXlIYgz0.net]
0xe5a3ec05p-10

166 名前:デフォルトの名無しさん mailto:sage [2023/06/07(水) 18:16:46.44 ID:yJ6NJbScM.net]
regex 使って、全角半角タブはreplace
しつつも、正規表現で、数字だけ残して
ってしたらいいのでは

167 名前:デフォルトの名無しさん mailto:sage [2023/06/07(水) 19:51:43.45 ID:Y1IkEaDo0.net]
ファイル名で並び替えるとき数字を文字列じゃなく数として判断して並び替えるの便利だよね。StrCmpLogicalWみたいなの

168 名前:デフォルトの名無しさん mailto:sage [2023/06/07(水) 20:17:49.58 ID:Wtu+kJ5G0.net]
digitntegerみたいな関数なかったっけ
javaと混同してるかもしれん

169 名前:デフォルトの名無しさん mailto:sage [2023/06/07(水) 20:48:56.87 ID:DVJV7mYE0.net]
大文字小文字とか小数とか半角全角とか漢数字とかあるから闇が深い



170 名前:デフォルトの名無しさん mailto:sage [2023/06/07(水) 21:25:16.49 ID:nzVrXgF60.net]
アンダーバーの位置関係も結構罠だよね
文字コード的には 大文字<アンダーバー<小文字 だから

171 名前:デフォルトの名無しさん (オイコラミネオ MMe9-sceX) mailto:sage [2023/06/07(水) 23:13:43.57 ID:ZHL7BfYmM.net]
言語+コンパイラの仕様が拡張してるのにライブラリは貧弱なまま
自己流に実装してしょうもないバグが紛れ込む

関係ないけどstd::stodはC言語版と微妙に仕様が違うのだろうけどそんなの調べてない

172 名前:デフォルトの名無しさん mailto:sage [2023/06/08(木) 00:14:20.61 ID:mm4FKY9+0.net]
例えばstodが解釈できる数値表現を正規表現でも解釈したいと思ったらどうしたら

173 名前:デフォルトの名無しさん [2023/06/08(木) 11:09:51.53 ID:rxjbLVG0a.net]
仕様の不備は運用でカバー

174 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 00:34:29.94 ID:Y9bb1A2p0.net]
std::sort (std::execution::par, v.begin(), v.end());
上記で並列ソートできるとのことですが何並列なんでしょうか?
もし環境に合わせて良きに計らってくれるのなら
その良き並列数を取得する関数などありますか?

175 名前:はちみつ餃子 mailto:sage [2023/06/09(金) 01:32:53.73 ID:vjFKJkM00.net]
>>171
詳細は言語仕様では規定されていない。
リソースが不足していれば並列化されないこともあり得る。
並列化は大抵の場合に OS のサポートが必要だし
どういうサポートがあるかわからんので言語として明瞭な規定を決められない。

並列化される保証はないのにデータ競合が発生しないように実装するのは
プログラマの責任なので若干の理不尽さを感じなくもないが
C++ ってのはそういうもんなので……。

176 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 07:16:14.12 ID:bBOCrSG+0.net]
週末のレイトレーシングで1-17あたりをマルチスレッドにしてみたんだけど、ubuntu上でg++やインテルコンパイラだとスレッド数を増やすと逆におそくなるんです。windows上でvisualstudioでコンパイルすると、望み通りスレッド数を増やすほど速くなりました。何でなんでしょう?

177 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 08:07:59.94 ID:e2G6/2re0.net]
>>173
>週末のレイトレーシングで1-17
全く意味がわからないんだが?
>何でなんでしょう?
お前のコーティングのせいじゃないか?

178 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 08:18:32.57 ID:m5f79nsG0.net]
gccはね・・・どうも平行/並列処理には本気じゃないところがある
たとえばstd::execution::parなんか真面目にやらんかこらって言いたくなる

179 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 08:19:05.88 ID:m5f79nsG0.net]
無料なので強く出られないけどね



180 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 11:49:37.37 ID:Y9bb1A2p0.net]
皆さんレスを有り難うござます
うちはstd::execution::parで効果絶大です
$ g++ --version
g++ (Debian 10.2.1-6) 10.2.1 20210110
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

181 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 22:45:32.96 ID:uysUozYZ0.net]
なるほどなあ

182 名前:デフォルトの名無しさん mailto:sage [2023/06/10(土) 02:07:59.33 ID:oiDhCbH60.net]
EASTLが久しぶりにバージョンアップしたね

183 名前:デフォルトの名無しさん mailto:sage [2023/06/10(土) 07:02:46.03 ID:kaZ6v5kb0.net]
ほう!いいね

184 名前:デフォルトの名無しさん (ワッチョイ b16b-q0yD) mailto:sage [2023/06/14(水) 07:54:14.73 ID:/jeWb7sY0.net]
time コマンドで調べたメモリの使用量 (max resident set size) が理論値よりも多くて、原因を特定するためにコード内の各箇所でその時点でのメモリ使用量を出力できたら良いなと思います。
実行環境は Linux なのですが、どのようにするべきでしょうか?

185 名前:デフォルトの名無しさん (ワッチョイ b16b-q0yD) mailto:sage [2023/06/14(水) 08:43:22.06 ID:/jeWb7sY0.net]
あとメモリに関連した質問で、例えばめちゃデカい std::vector を要素数 1 に resize しても capacity はめちゃデカいままですよね?
STL コンテナ以外にも、大きいメモリが割り当てられてるオブジェクトを使用後に破棄したいというケースがよくあります。
最も簡単なやり方は関数とか局所的なスコープとして切り出すことかと思いますが、他に、オブジェクトに割り当てられているメモリを手動で解放する方法があったら教えてください。

186 名前:デフォルトの名無しさん (スプッッ Sd33-5Oyn) [2023/06/14(水) 08:49:33.85 ID:Xd2fVcpxd.net]
/proc/self/stat というファイルを覗きに行くか、
getrusage というシステムコールで取得することになるかな

187 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c13e-2rqm) mailto:sage [2023/06/14(水) 09:19:31.16 ID:O3itrano0.net]
>>182
そのために shrink_to_fit がある。
詳細は実装依存なので何もしない関数であっても仕様に反しないけど
常識的には各実行環境で効率的に動くように実装されるので
まずは試してみても損はないと思う。

アロケータを自作してもあまり制御できないんよね。
アロケーションが必要になったらコンテナからアロケータが呼ばれるという
受動的な構造なのでコンテナによるメモリ管理戦略にそれほど関与できるわけではない。

本当にどうしても標準ライブラリの挙動の詳細が不満なら
自分で同等のものを実装する (または望ましいものをどこかから見つける) しかないよ。

188 名前:デフォルトの名無しさん (アウアウウー Sadd-g1CP) mailto:sage [2023/06/14(水) 10:15:22.04 ID:iWYHYN4ra.net]
>>182
new で造って delete (または delete []) で解放

189 名前:デフォルトの名無しさん (ワッチョイ 8bfb-Xx8j) mailto:sage [2023/06/14(水) 12:28:17.37 ID:XWt8afSz0.net]
更にいうと、deleteはgccでは推奨されないのでptrを使うよりはstaticもしくはvirtualを使いましょうね。



190 名前:デフォルトの名無しさん (テテンテンテン MMeb-jufV) mailto:sage [2023/06/14(水) 12:29:45.65 ID:XEzvAdInM.net]
>>182
>>185とほとんど同じだけどunique ptrで管理。
ヒープの確保時間が問題になるならアロケーター使ってヒープを予約する。

191 名前:デフォルトの名無しさん (ワッチョイ d9f0-EP1b) mailto:sage [2023/06/14(水) 13:12:37.90 ID:9CAXVpD30.net]
>>182
vector<空にしたいオブジェの要素の型>().swap(空にしたいオブジェ)

192 名前:デフォルトの名無しさん (アウアウウー Sadd-g1CP) mailto:sage [2023/06/14(水) 13:33:02.07 ID:iWYHYN4ra.net]
>>188
vector<空にしたいオブジェの要素の型> hoge;
が既にあったとしたら
vector<空にしたいオブジェの要素の型>(hoge).swap(hoge);
で良いらしいけど副作用の心配無い?

193 名前:デフォルトの名無しさん (ワッチョイ 219b-q0yD) mailto:sage [2023/06/14(水) 14:03:16.39 ID:0kIiqVrM0.net]
>>183
ありがとうございます
> getrusage
を試してみようと思います

>>185-187
STL コンテナを使うとしても自作クラスを使うとしても、オブジェクトを unique_ptr で持つことにして要らなくなったら reset() すれば確保していた分のメモリを捨てられるということでしょうか
依存関係が絡み合っていて簡単に小さいスコープに分割できないときは試してみようと思います

194 名前:デフォルトの名無しさん (アウアウウー Sadd-g1CP) mailto:sage [2023/06/14(水) 14:16:54.18 ID:iWYHYN4ra.net]
reset()は違うと思う

195 名前:デフォルトの名無しさん (ワッチョイ 01da-EP1b) mailto:sage [2023/06/14(水) 14:26:34.51 ID:HNZbb8Sq0.net]
>>189
その場合はメモリアクセス領域が変わるのでswapする前に取得済みだったイテレータは再取得する必要あり

196 名前:デフォルトの名無しさん (ワッチョイ e95f-2rqm) mailto:sage [2023/06/14(水) 15:52:59.34 ID:K9MvWtl90.net]
>186 が何を言ってるのか意味不明でこわい。

197 名前:デフォルトの名無しさん (ワッチョイ e95f-2rqm) mailto:sage [2023/06/14(水) 15:54:13.97 ID:K9MvWtl90.net]
>>191
「reset() すれば確保していた分のメモリを捨てられる」で間違いないでしょ。

198 名前:デフォルトの名無しさん (テテンテンテン MMeb-jufV) mailto:sage [2023/06/14(水) 18:26:24.05 ID:9LyNOs9uM.net]
>>190
resetする必要は無いよ。

コンテナから普通に要素を削除すれば、後はコンテナクラスがよろしくやってくれる。効率は実装次第だけど。

199 名前:デフォルトの名無しさん (ワッチョイ 219b-q0yD) mailto:sage [2023/06/14(水) 18:51:34.14 ID:0kIiqVrM0.net]
>>195
コンテナクラスがよろしくやってくれるのに任せるのであれば、スマートポインタで持たずに単にコンテナとして持つのと変わらないように思うのですが、違うのでしょうか。
ちゃんと理解していなかったら申し訳ありません。



200 名前:デフォルトの名無しさん (ワッチョイ d17c-sLM4) mailto:sage [2023/06/14(水) 18:58:01.98 ID:vjajEcDc0.net]
vectorを信頼するなら単にclear()してshrink_to_fit()すればいい
信用できないならスマポで持っといていらなくなったら手動でブチ消せばいい
それすら信用できないならイチから自分で作れ
お前がどれだけ心配消化による

201 名前:デフォルトの名無しさん (テテンテンテン MMeb-jufV) mailto:sage [2023/06/14(水) 19:18:20.42 ID:YeSwNDrrM.net]
>>196
どのコンテナを使うかによる。

vectorとかdequeはまだ確保していない要素用の領域をしばしば予約するから、>>182のような状況を回避するのは面倒臭い。

listとかmapは(これも実装次第だけど)まだ確保していない要素のための領域を予約したりしないから、他のデメリットを許容するなら>>182対策の選択肢になる可能性はある。

いずれにしても、そこまで気にするならまずベンチマークを取って実態を調査すべきだし、そもそも巨大なメモリを頻繁に確保・解放するのは設計に問題があることが多いから、メモリを解放しないで済む方法を検討してみる。

202 名前:デフォルトの名無しさん (ワッチョイ 219b-q0yD) mailto:sage [2023/06/15(木) 03:20:48.20 ID:J1cG0ikp0.net]
>>198
そもそもvectorのスマートポインタ (あるいはより一般的にサイズが動的なクラスのスマートポインタ) を作り、そのvectorやクラスのサイズを変えたときって確保されてる領域のサイズも変わるんでしたっけ?
手動で変えなきゃいけないと思っていました
(また、vectorのポインタとvectorの先頭要素のポインタは意味が違うのでよりわけが分からなくなりました)

203 名前:デフォルトの名無しさん (ワッチョイ d17c-sLM4) mailto:sage [2023/06/15(木) 06:50:20.05 ID:usfnoco+0.net]
std::vectorはshrink_to_fit()呼ばない限り勝手にcapacity縮めたりしないはずだけど

204 名前:デフォルトの名無しさん (ワッチョイ d19c-jufV) mailto:sage [2023/06/15(木) 08:48:34.83 ID:hMmgKiSo0.net]
>>199
コンテナ内のポインタの予約は避けられないよ。

ただ、ポインタのサイズを気にするようなシビアな状況なら、そもそもc++じゃなくてcで実装することを検討すべき。

205 名前:デフォルトの名無しさん (ワッチョイ b96e-ofsu) mailto:sage [2023/06/15(木) 09:00:49.34 ID:K4jCDX8M0.net]
シビアな状況でC++が使えないやつがCならOKなはずはない

206 名前:デフォルトの名無しさん (アウアウウー Sadd-g1CP) mailto:sage [2023/06/15(木) 10:11:47.24 ID:dLjlwX4ma.net]
>>199
何が判ってないのかが判ってないパターンだな
まともな解答もらってても何が正しいのか(なぜ正しいのか)
すら判断出来なさそうなレベル
解答者に失礼

207 名前:デフォルトの名無しさん (ワイーワ2 FF63-pDI4) mailto:sage [2023/06/15(木) 10:56:55.78 ID:kyFBXozFF.net]
他所スレで同じ様な流れが

>742
質問の仕方が悪いだけwww
欲しい情報を引き出すには一定以上の質問能力が必要

>743
質問の仕方が重要なのはその通りだけど
ここで問題にしてるのは自分が詳しくない領域では質問の仕方が悪かったかどうかも分からないってことでしょうよ

>744
>>742
質問のしかたさえ良ければ正確な情報が手に入ると思ってるのは素人だけだぞ?w

208 名前:デフォルトの名無しさん (ワッチョイ 219b-q0yD) mailto:sage [2023/06/15(木) 12:02:49.40 ID:J1cG0ikp0.net]
>>201
いや、ポインタのサイズなんて全く気にしてない。
質問は、メモリの解放をコンテナに任せるならわざわざスマポで持つ意味ないよね? ってこと。
で、コンテナに任せるというのは元の質問(>>182)への回答に全くなってないよね? ってこと。
(その理由は>>184,200様の書いてくださってる通り)
つーかお前が何も分かってないのは>>195でreset()しなくて良いとかほざいてる時点でお察し。


>>203-204

>>203>>191で「reset()しなくても良い」とかほざいてて>>195と同レベ。


>>183-185,194,197,200様
ご丁寧な回答をくださりどうもありがとうございました。
勉強になります。

209 名前:デフォルトの名無しさん (テテンテンテン MMeb-jufV) mailto:sage [2023/06/15(木) 12:29:34.24 ID:QcI//Xn+M.net]
>>205
コンテナのsmart ptrの扱いは調べた?
コンテナの要素とポインタの参照先の違いについて根本的な誤解がありそう。

vectorはまだ構築していないインスタンス用のメモリ領域を予約するけど、smart ptrはそんなことしないよ。
vector<smart ptr>もsmart ptr の予約はするけど、smart ptrの参照先インスタンスの予約はしない。



210 名前:デフォルトの名無しさん (ワッチョイ 219b-q0yD) mailto:sage [2023/06/15(木) 13:15:56.80 ID:J1cG0ikp0.net]
>>206
だから、結局任意のコンテナ、クラスに対してスコープ内でメモリを解放する方法は?
new で生ポを持って delete するか、スマポを持って reset するかだろ?


> vectorはまだ構築していないインスタンス用のメモリ領域を予約するけど、smart ptrはそんなことしないよ。
そりゃそう。
ゆえに、メモリを間違いなくリリースしたいなら reset すればよいのですねと>>190で述べている。
それで終わりなのにお前と来たら reset は不要だの元のコンテナの挙動に任せるだの、論旨を全く理解してないとんでもレスばっかり。


> vector<smart ptr>も……
論外。
誰もスマポのvectorの話なんてしてねえ。

211 名前:デフォルトの名無しさん (ワッチョイ 8bfb-Xx8j) mailto:sage [2023/06/15(木) 14:56:16.78 ID:M9bt3STi0.net]
186でも言ってるがstaticもしくはvirtualでデストラクタ使えよ
それがシンプルで高速で1行も無駄のない設計な

212 名前:デフォルトの名無しさん (ワッチョイ 01c9-6bUV) mailto:sage [2023/06/15(木) 15:01:28.21 ID:B8g22vaD0.net]
182の
>最も簡単なやり方は関数とか局所的なスコープとして切り出すことかと思いますが
がコンストラクタで確保してデストラクタで消す話というのはわかってる上で

>他に、オブジェクトに割り当てられているメモリを手動で解放する方法があったら教えてください。
なんじゃないの?

そんなものは無いっていう答えもあるにはあるけどサ

213 名前:デフォルトの名無しさん (ワッチョイ 13f0-8sUu) mailto:sage [2023/06/15(木) 18:41:07.51 ID:QIwD56Ju0.net]
最近IPP触り始めたんですが全部飽和演算で面食らってます
Modulo関数は無いんですか?

214 名前:デフォルトの名無しさん (ワッチョイ fb8c-jufV) mailto:sage [2023/06/15(木) 21:00:11.51 ID:W1C5TI4i0.net]
>>207
ああ、ごめん。めっちゃデカイインスタンスのvectorじゃなくて、めっちゃデカイvectorね。
それなら実装依存だけど>184か、>192とか参照無効化の制限とかコピーコストとかあるけど>189。189はsmart ptrにしとけば実用上問題ないかね。vectorのイテレーターは保存するものじゃないし。

215 名前:デフォルトの名無しさん (ワッチョイ c14e-8sUu) mailto:sage [2023/06/15(木) 21:28:08.23 ID:3cvhbwG+0.net]
実際の所、vectorならclear()→shrink_to_fit()でメモリが開放されないこってありうるの?

216 名前:デフォルトの名無しさん (ワッチョイ d17c-sLM4) mailto:sage [2023/06/15(木) 22:10:40.95 ID:usfnoco+0.net]
規格上はshrink_to_fit()にメモリ解放する義務はないし、実装定義で何やっても自由(capacityを増やすような真似だけは禁止)
shrink_to_fit()がなんにもしない実装でも一応規格準拠になる
そんな糞みたいな実装が実在するかは知らない

217 名前:デフォルトの名無しさん (US 0H0b-q0yD) mailto:sage [2023/06/16(金) 02:13:28.00 ID:PZdB0bgSH.net]
>>211
はい結局一人だけ違う話してた
ハァァ~~~~~(クソデカため息)

218 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c13e-2rqm) mailto:sage [2023/06/16(金) 11:31:25.61 ID:QEmhRLek0.net]
>>212
基本的には効率的に実装されるものだと信じて良いと思うが
どういう実装が効率的であるかは実行環境の事情による。

たとえばメモリ管理がページ単位というのは普通のことだし
その場合にページ単位より細かく確保したり解放したりしても非効率になる。

常に何もしないというような実装はあまりないと思うけど
解放するほうが非効率だと考えられる状況では
shrink_to_fit を呼んでも解放しなかったり部分的にだけ解放する
ということはそれなりにあり得そうだと思うよ。

219 名前:デフォルトの名無しさん (ワッチョイ 01c9-6bUV) mailto:sage [2023/06/16(金) 12:08:14.46 ID:nWXjt7Za0.net]
capacityと OS側からみた空きメモリはまた別かもしれんわけで
アロケーターがOSからじかに要求してる場合もあれば
OSへの要求回数を減らして内部でプールしてやりくりしてるのもあるし
制御したいレイヤーによっては全部自前でやるしかない という落ちにも



220 名前:デフォルトの名無しさん (ワッチョイ c14e-8sUu) mailto:sage [2023/06/16(金) 12:26:43.83 ID:B2wRJ7jC0.net]
>>215
まぁ、細かい単位のメモリだったら、実際に開放されているかどうかなんて、ほとんど動作に影響しないとも言えるしね
(未初期化変数の不具合が発覚しづらい、くらいか)
とりあえずshrink_to_fitを呼んでおいて、細かいことは気にしないのが一番かもしれないw

221 名前:デフォルトの名無しさん (ワッチョイ 934f-q0yD) mailto:sage [2023/06/16(金) 12:46:08.57 ID:H6XPX5qB0.net]
「STLコンテナ以外にも」という文言が読めてない文盲さんたちがvectorの話ばっかしててワロ

222 名前:デフォルトの名無しさん (ワッチョイ d969-2rqm) mailto:sage [2023/06/16(金) 15:41:25.79 ID:KX+TErXo0.net]
「STLコンテナ以外にも」はSTLコンテナも含むということ
STLコンテナの話をしても何もおかしくない

223 名前:デフォルトの名無しさん (アウアウウー Sadd-g1CP) mailto:sage [2023/06/16(金) 15:43:23.81 ID:ly+Q1cW8a.net]
いつものことだが
ほんの最初の数レスで終わってるのに
どうでも良い脱線ほど盛り上がってgdgdレスでスレが延びる

224 名前:デフォルトの名無しさん (アウアウウー Sadd-Xx8j) mailto:sage [2023/06/16(金) 15:46:42.75 ID:/DJegtL/a.net]
ほんそれ
回答終了してんのにちんこかゆい

225 名前:デフォルトの名無しさん (スフッ Sd33-pDI4) [2023/06/16(金) 15:49:19.69 ID:YNpYq5+wd.net]
>>182 良く読むと
>STL コンテナ以外にも、大きいメモリが割り当てられてるオブジェクトを使用後に破棄したいというケースがよくあります。
>最も簡単なやり方は関数とか局所的なスコープとして切り出すことかと思いますが

いやいやそもそも「関数とか局所的なスコープ(つまりautoだろ?stackだろ?)で大きいメモリ確保しようなんて思うな」って話なんだよな

226 名前:デフォルトの名無しさん (ワッチョイ e95f-2rqm) mailto:sage [2023/06/16(金) 16:09:01.10 ID:qgM8i0iT0.net]
ローカルなvectorを置けばヒープ確保されるので「つまりautoだろ?stackだろ?」は
また何か誤解してる人が来たなとしか。

227 名前:デフォルトの名無しさん (ワッチョイ 219b-q0yD) mailto:sage [2023/06/16(金) 16:49:22.15 ID:ybGonaVE0.net]
reset要らないとか言ってる奴らは結局何なん

228 名前:デフォルトの名無しさん (テテンテンテン MMeb-jufV) mailto:sage [2023/06/16(金) 19:32:47.80 ID:yx9ngvFiM.net]
>>224
結論は>211にまとめといた。
resetは要らん。

229 名前:デフォルトの名無しさん (ワッチョイ 92dc-gfWY) mailto:sage [2023/06/17(土) 08:56:51.34 ID:3MnK6eEg0.net]
>>223
「STLコンテナ以外にも」という文言が読めてない文盲さんたちがvectorの話ばっかしててωωω



230 名前:デフォルトの名無しさん (テテンテンテン MM96-Axrn) mailto:sage [2023/06/17(土) 10:36:04.78 ID:koF9X0k9M.net]
>>226
「大きいメモリが割り当てられてるオブジェクトを使用後に破棄したい」なら
>185か>187。
>187はunique ptrの置き場所と解放タイミングによって解放の仕方が違って、自動変数にして関数やスコープから抜けるタイミングで解放するなら手動操作不要、vectorなどのヒープに置くとかスコープの終わり前に解放したいとかならreset()とかvectorの要素削除とかで手動解放。

いずれにしても、自動変数に巨大インスタンスを考え無しに置くのは悪手で、そのオブジェクトがスタックに巨大データを置かない(ヒープ等に置く)ことを確認してからにしたほうがいい。

231 名前:デフォルトの名無しさん (ワッチョイ 6128-l8k0) mailto:sage [2023/06/17(土) 15:30:36.02 ID:S+64vkUJ0.net]
>>216
vectorのcapacityはそのvectorが氏ぬかcapacity縮小アクションが生じない限りvector固有に占有されるから
capacity(のうちsize()を超える分)と OS側からみた空きメモリはまた別でケテーイ……
一方malloc()がOSからゲットしたメモリをOSに返さずにいるのはOS側からみた空きメモリではないにしろ
同一プロセス内の他のオブジェクトの構築に使えるのだから空きメモリのうち
これすらもOSに返したいということならこの流れの中で現状答えがでていないキモヌ

232 名前:デフォルトの名無しさん (ワッチョイ 6128-l8k0) mailto:sage [2023/06/17(土) 15:31:34.82 ID:S+64vkUJ0.net]
まあしいて言えばプロセスを一旦exitして再立ち上げ?

233 名前:デフォルトの名無しさん (ワッチョイ 6128-l8k0) mailto:sage [2023/06/17(土) 15:45:09.56 ID:S+64vkUJ0.net]
普通に作ったら(コードで明示的に直接OSのAPIでメモリを分捕って解放とかしない限りは
プロセスのprivate bytesはプロセスが氏ぬまで増えることはあっても減ることは無いという印象、

234 名前:デフォルトの名無しさん (ワッチョイ 7d9b-trtU) mailto:sage [2023/06/17(土) 16:27:35.20 ID:5e+acAEX0.net]
>>225
スマンまじで理解できないのだけど、なぜvectorに限った話をしてるの?

235 名前:デフォルトの名無しさん (テテンテンテン MM96-Axrn) mailto:sage [2023/06/17(土) 19:22:00.09 ID:mYwWSuEFM.net]
>>231
巨大インスタンスは>227

236 名前:デフォルトの名無しさん (ワッチョイ d9ab-trtU) mailto:sage [2023/06/17(土) 19:29:36.10 ID:HtrmHz3i0.net]
回答者のレベル低いな~~~
こんだけダラダラ続けて、結局質問者>>182>>190で早々に結論づけてることをリピートしてるだけw

237 名前:デフォルトの名無しさん (ワッチョイ 69f0-J7ro) mailto:sage [2023/06/17(土) 19:54:50.95 ID:9hSxsWrs0.net]
アロケータ気に入らないなら自作くらいしろよポンコツ
なにもかもSTLに頼りやがってそれでPGやってるつもりになるなよ

238 名前:デフォルトの名無しさん (ワッチョイ 6128-l8k0) mailto:sage [2023/06/17(土) 20:19:47.36 ID:S+64vkUJ0.net]
人類には早すぎた話題また……

239 名前:デフォルトの名無しさん (オイコラミネオ MM91-L1I+) mailto:sage [2023/06/17(土) 23:14:07.63 ID:H9lc23A5M.net]
次世代の人は便利に使いこなしてるかより簡素になった仕組みを使うのだろう



240 名前:デフォルトの名無しさん (ワッチョイ 655f-rdTE) mailto:sage [2023/06/18(日) 03:00:55.26 ID:GIMFAM+a0.net]
>>231
コンテナの種類を問わない一般的な方法なんてものはないからじゃないですかね

241 名前:デフォルトの名無しさん (ワッチョイ 8101-1tDD) mailto:sage [2023/06/18(日) 21:04:45.70 ID:VwYqKwPk0.net]
以下のコードでaccumulateのとこでコンパイルエラーが起こります
何故か分かります?
#include <iostream>
#include <array>
#include <deque>
#include <exception>
#include <numeric>
using Vector = std::array <double, 3>;
using Vector_Container = std::deque <Vector>;
Vector &operator += (Vector &lhs, const Vector &rhs) {
const auto size {lhs.size ()};
if (size != rhs.size ()) throw std::runtime_error ("Sizes are different.");
for (size_t i {0}; i < size; ++ i) lhs [i] += rhs [i];
return lhs;
}
Vector operator + (const Vector &lhs, const Vector &rhs) {
Vector result {lhs};
result += rhs;
return result;
}
int main () {
Vector v0 {0, 1, 2}, v1 {10, 11, 12};
Vector_Container c0 {v0, v1};
accumulate (c0.begin (), c0.end (), Vector {}); // コンパイルエラー
return 0;
}

242 名前:デフォルトの名無しさん (ワッチョイ 515f-C6j3) mailto:sage [2023/06/18(日) 21:45:44.90 ID:UCXMUPHB0.net]
>>238 エラーメッセージ見ればたぶん分かる。

243 名前:デフォルトの名無しさん (ワッチョイ 8101-1tDD) mailto:sage [2023/06/18(日) 21:48:16.43 ID:VwYqKwPk0.net]
>>239
レス有難うございます
まず訂正
-accumulate
+std::accumulate
全部は貼れないですけど大事そうなところ

In file included from /usr/include/c++/12/numeric:62,
from test1.cpp:18:
/usr/include/c++/12/bits/stl_numeric.h: In instantiation of ‘constexpr _Tp std::accumulate(_InputIterator, _InputIterator, _Tp) [with _InputIterator = _Deque_iterator<array<double, 3>, array<double, 3>&, array<double, 3>*>; _Tp = array<double, 3>]’:
test1.cpp:22:14: required from here
/usr/include/c++/12/bits/stl_numeric.h:141:46: error: no match for ‘operator+’ (operand types are ‘std::remove_reference<std::array<double, 3>&>::type’ {aka ‘std::array<double, 3>’} and ‘std::array<double, 3>’)
141 | __init = _GLIBCXX_MOVE_IF_20(__init) + *__first;

244 名前:デフォルトの名無しさん (ワッチョイ 9e81-L1I+) mailto:sage [2023/06/18(日) 23:15:51.41 ID:w3/xAOT+0.net]
ADLでoperator+が見つからないからかな?
struct Vector : std::array <double, 3> {};
みたいに定義したらいけるのでは

245 名前:デフォルトの名無しさん (ワッチョイ 8101-1tDD) mailto:sage [2023/06/18(日) 23:20:13.62 ID:VwYqKwPk0.net]
>>241
>struct Vector : std::array <double, 3> {};
>みたいに定義したらいけるのでは
通りますね
どういうこと?

246 名前:デフォルトの名無しさん (ワッチョイ 32fb-9xvA) [2023/06/18(日) 23:24:52.33 ID:bX3uBTIT0.net]
std::accumulateが14行目で定義したoperator+を見つけれてないのが原因っぽい。

std::accumulateの第4引数に
[](const Vector& v1, const Vector& v2){ return v1+v2;}
を追加してやるとコンパイルは通る。

14行目のoperator+をstd名前空間に入れてやれば動くにゃ動くけど色々マズいので(調査する分にはいいけど)最終的な解答にはならないかな

247 名前:デフォルトの名無しさん (ワッチョイ 32fb-9xvA) [2023/06/18(日) 23:29:04.68 ID:bX3uBTIT0.net]
>>242
たぶんC++コンパイラはoperator+の候補を検索するときに
Vector( = std::array<double, 3>)と同じ名前空間にあるものしか検索しない

Vectorのクラ

248 名前:ス定義そのものがグローバル名前空間にあるなら14行目のoperator+を見つけられるけど、
今はVectorの正体はstd::array<...>なのでstd名前空間しか検索しないんだと思う
[]
[ここ壊れてます]

249 名前:デフォルトの名無しさん (ワッチョイ 8101-1tDD) mailto:sage [2023/06/18(日) 23:39:19.50 ID:VwYqKwPk0.net]
>>243,244
なるほど解説頂きまして有難うございます
グローバルスコープはどっからでも見えて良さそうなものの
何でグローバルスコープの関数を探さないですかね?



250 名前:デフォルトの名無しさん (ワッチョイ a901-UvLK) [2023/06/18(日) 23:48:03.44 ID:EGGkT3O00.net]
独自のメンバ変数を持たないのなら継承してしまうのも手ではある(ただしコンストラクタやarrayを受け取るキャスト用コンストラクタとか書く必要が出ると思うけど)
ただ、そもそもカスタマイズしたり自分の用途に本当に使いやすいものを作りたいなら、ちゃんと自分で全部書いた方がいいと思うよ

251 名前:デフォルトの名無しさん (ワッチョイ b110-lSMs) mailto:sage [2023/06/19(月) 00:42:02.49 ID:2lgIrH6A0.net]
>>245
std::accumlateの定義内からだと、その下の方(ユーザーコード)で定義されてるoperator+は見えてないので、グローバル名前空間の探索では見つからない

252 名前:デフォルトの名無しさん (ワッチョイ 8101-1tDD) mailto:sage [2023/06/19(月) 00:52:39.28 ID:Q4g6N6uX0.net]
>>247
std::accumlateが定義されているnumericをincludeする前に
以下のようにグローバルスコープにプロトタイプを置いても
同じようにoperator+が見えてないとエラーが出ます
using Vector = std::array <double, 3>;
Vector operator + (const Vector &lhs, const Vector &rhs);
#include <numeric>

253 名前:デフォルトの名無しさん (ワッチョイ a901-UvLK) [2023/06/19(月) 03:40:46.00 ID:RYn53SnN0.net]
accumlateは関数テンプレートだから実体化される時点でoperator+が見えてりゃOKのはず
言われてる通りADLで対象外なのが問題

254 名前:デフォルトの名無しさん (ワッチョイ 256b-trtU) mailto:sage [2023/06/19(月) 05:38:23.58 ID:JAsvvATP0.net]
>>237
(スマート)ポインタで持って要らなくなったら明示的にリリースする方法はあらゆるコンテナに対して使えるよね?笑

255 名前:デフォルトの名無しさん (ワッチョイ f59c-Axrn) mailto:sage [2023/06/19(月) 08:48:03.43 ID:KLBRX38t0.net]
>>250
>>223

256 名前:デフォルトの名無しさん (ワッチョイ 8101-1tDD) mailto:sage [2023/06/19(月) 09:20:16.57 ID:Q4g6N6uX0.net]
>>249
有難うございます
グローバルスコープに定義した関数が見えないのは
どうしてなんでしょうかね?
それでは全然グローバルじゃないような気がするのですが
規格を決めるときに何か意図があったのでしょうかね?

257 名前:デフォルトの名無しさん (ワッチョイ a901-UvLK) [2023/06/19(月) 10:39:37.41 ID:RYn53SnN0.net]
そもそもが名前空間内(よその演算子と混ざらないように)にある演算子オーバーロードを、外部からでも引数が合えば使えるように(std::operator+(a, b)とか書かないでいいように)するためのルールらしいから
外部の演算子見に行くのは

258 名前:レ的に合わんのじゃね

std名前空間内のarrayに外部から勝手に動作を追加しようとしてるんだから、あまりよろしくないやり方しようとしてると考えた方がいい
(だから>>246のように書いた、継承したら一応arrayではなくちゃんとVectorクラスに対する演算子だから通る)
[]
[ここ壊れてます]

259 名前:デフォルトの名無しさん (ワッチョイ 8101-1tDD) mailto:sage [2023/06/19(月) 11:53:54.08 ID:Q4g6N6uX0.net]
>>253
>std名前空間内のarrayに外部から勝手に動作を追加しようとしてるんだから、
>あまりよろしくないやり方しようとしてると考えた方がいい
なるほど
たぶんこういう考え方なんでしょうね



260 名前:デフォルトの名無しさん (ワッチョイ 5efb-+wmN) mailto:sage [2023/06/19(月) 12:20:34.90 ID:4PINPeBN0.net]
つまりvector<int>を使いなさいということ

261 名前:デフォルトの名無しさん (ワッチョイ 7d9b-trtU) mailto:sage [2023/06/19(月) 12:21:25.69 ID:wGtx/iKL0.net]
>>251
安価ミス

262 名前:デフォルトの名無しさん (アウアウウー Sacd-9XmN) mailto:sage [2023/06/20(火) 00:04:57.81 ID:YSi65ASja.net]
実引数依存の名前探索、Argument-Dependent Lookup (ADL)は、
Koenig lookup とも言う

「Cプログラミングの落とし穴」の著者、
Koenigが、C++ に入れる事を推奨した

ADLを知っているなら、かなりのプロと言える

263 名前:デフォルトの名無しさん (ワッチョイ 8101-1tDD) mailto:sage [2023/06/20(火) 00:18:46.72 ID:vGfe0Eju0.net]
勉強になります

264 名前:デフォルトの名無しさん (アウアウウー Sacd-9XmN) mailto:sage [2023/06/20(火) 02:12:24.83 ID:1vctBLGTa.net]
演算子のオーバーロードなら、フレンド関数とか?

非メンバの演算子オーバーロード | Programming Place Plus C++編【言語解説】 第35章

https://programming-place.net/ppp/contents/cpp/language/035.html

265 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) mailto:sage [2023/06/20(火) 10:05:39.77 ID:IIzrqfbq0.net]
状況を簡略化するとこう。

namespace ns {
struct foo {};
template <class T>
void bar(const T&) {
T() + T();
} };

ns::foo operator+(const ns::foo& x, const ns::foo& y) { return ns::foo(); }

int main() { bar(ns::foo()); }

ADL は「通常の探索に加えて」関連する名前空間も探索対象にするルールなのでグローバル名前空間も探索対象になるが、通常の探索では後ろで宣言 (定義) されているものは見つけることができない。 この場合はエラーとして検出されるけど、可視な宣言と実際の定義の集合に食い違いは未定義という解釈でいいと思う。 (ちょっと自信はない……。)
だから順序を変えれば通る。

namespace ns {
struct foo{};
};

ns::foo operator+(const ns::foo& x, const ns::foo& y) { return ns::foo(); }

namespace ns {
template <class T>
void bar(const T&) {
T() + T();
} };

int main() { bar(ns::foo()); }

当然ながら std の (というかそれに限らず既存のライブラリの) 宣言の順序をどうこうするわけにもいかないので無理にカスタムしようとするのは筋が悪いということになる。

266 名前:デフォルトの名無しさん (ワッチョイ 8101-1tDD) mailto:sage [2023/06/20(火) 10:53:08.18 ID:vGfe0Eju0.net]
>>260
>だから順序を変えれば通る。
最近手元のg++を更新しまして10.2.1 -> 12.2.0になったんですが
前者のケースが通らなくなりまして疑問に思っていたところでした
10.2.1は寛容で両方とも通るけどC++的には後者のみ通るのが正しい?

267 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) mailto:sage [2023/06/20(火) 11:41:30.21 ID:IIzrqfbq0.net]
>>261
前者はたぶん未定義かつ診断不要な状況なのでエラーを検出せずに通すのも正しい挙動で
プログラマがそういう状況を作ってしまうのが仕様に反する (というか結果が保証されない) という解釈になると思う。

268 名前:デフォルトの名無しさん (ワッチョイ 8101-1tDD) mailto:sage [2023/06/20(火) 13:36:04.44 ID:vGfe0Eju0.net]
なるほどー
有難うございます

269 名前:デフォルトの名無しさん (JP 0H91-FhUT) [2023/06/20(火) 21:39:35.82 ID:Pk8V/jejH.net]
template<typename Callback>
void func(Callback cb)
{
//cb(1); // A
//cb(1,2);// B
}

void f1(int){}
void f2(int,int){}

int main(){func(f1);}

AとBをコンパイル時に呼び分けたいんですけど
どのように記述すればよいか教えていただけませんか?



270 名前:デフォルトの名無しさん (ワッチョイ 515f-9XmN) mailto:sage [2023/06/20(火) 22:18:37.18 ID:Cuq1USIJ0.net]
is_invocableでおk

271 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) mailto:sage [2023/06/20(火) 22:21:49.81 ID:IIzrqfbq0.net]
>>264
渡されたコールバック関数の引数の数によって区別するってこと?
素朴な方法だとオーバーロードするのが手っ取り早いと思う。

void func(void (*cb)(int)) {
cb(1);
}

void func(void (*cb)(int, int)) {
cb(1, 2);
}

void f1(int) {}
void f2(int, int) {}

int main() {
func(f1);
func(f2);
}

272 名前:デフォルトの名無しさん (ワッチョイ 8101-1tDD) mailto:sage [2023/06/20(火) 22:27:55.14 ID:vGfe0Eju0.net]
>>264
template<typename Callback> void func(Callback cb);
template <> void func(void (*cb) (int))
{
(*cb)(1); // A
}
template <> void func(void (*cb) (int, int))
{
(*cb)(1,2);// B
}
void f1(int){}
void f2(int,int){}
int main(){func(f1);}

273 名前:デフォルトの名無しさん (ワッチョイ 8101-1tDD) mailto:sage [2023/06/20(火) 22:29:12.98 ID:vGfe0Eju0.net]
templateが意味ないね

274 名前:デフォルトの名無しさん (ワッチョイ 127f-L1I+) mailto:sage [2023/06/20(火) 22:39:00.27 ID:ui/rWsWf0.net]
265が言うようにis_invocable使うとこんな感じ?

template<typename Callback>
void func(Callback cb)
{
if constexpr (std::is_invocable_v<Callback, int>) {
cb(1);
} else if constexpr (std::is_invocable_v<Callback, int, int>) {
cb(1,2);
}
}

275 名前:デフォルトの名無しさん (ワッチョイ 8101-1tDD) mailto:sage [2023/06/20(火) 22:41:37.75 ID:vGfe0Eju0.net]
>>269
これって関係ないif節はコンパイル時に消えるの?

276 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) mailto:sage [2023/06/20(火) 22:43:20.79 ID:IIzrqfbq0.net]
>>270
消えるよ。

277 名前:デフォルトの名無しさん (JP 0H91-FhUT) [2023/06/20(火) 22:44:14.18 ID:Pk8V/jejH.net]
>>269
ありがとうございます。
gcc 13.1.0 でc++17でうまくいきました。

後出しで申し訳ありませんが、C++14でかけませんか?

278 名前:デフォルトの名無しさん (ワッチョイ 8101-1tDD) mailto:sage [2023/06/20(火) 22:47:27.45 ID:vGfe0Eju0.net]
>>269,271
これは知らんかった
勉強になるなぁ

279 名前:デフォルトの名無しさん (JP 0H91-FhUT) [2023/06/20(火) 22:48:18.64 ID:Pk8V/jejH.net]
>>269
まさにこれをやりたかったです。

template<typename Callback>
void func(Callback cb)
{
// こことか

if constexpr (std::is_invocable_v<Callback, int>) {
cb(1);
} else if constexpr (std::is_invocable_v<Callback, int, int>) {
cb(1,2);
}

// ここをどうしようか悩んでいました
}



280 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) mailto:sage [2023/06/20(火) 22:59:00.24 ID:IIzrqfbq0.net]
>>272, >>274
ひとつの関数テンプレート中でやりたいってこと?
if constexpr が導入される前だとオーバーロードなり特殊化なりで
別の関数として分離しないと書けないと思う。

is_invocable に相当するものは自分で書こうと思えば書けるが
if constexpr は言語のコアの機能だからどうにもならんし……。

281 名前:デフォルトの名無しさん (JP 0H91-FhUT) [2023/06/20(火) 23:14:31.48 ID:Pk8V/jejH.net]
>>275
情報ありがとうございます

ご掲示いただいたコードで勉強になりました。

282 名前:デフォルトの名無しさん (ワッチョイ 69f0-J7ro) mailto:sage [2023/06/20(火) 23:42:05.71 ID:zCL4VLm70.net]
>>273
ザッツcostexprマジック

283 名前:デフォルトの名無しさん (ワッチョイ 69f0-J7ro) mailto:sage [2023/06/20(火) 23:43:57.61 ID:zCL4VLm70.net]
n抜けてたwコストがかかる演算なのは確かだけどw
constexprマジック!マジック!

284 名前:デフォルトの名無しさん (ワッチョイ 32fb-dYQK) [2023/06/21(水) 00:07:10.76 ID:2lh42auf0.net]
C++11のSFIANE地獄へようこそ
https://wandbox.org/permlink/2sfUVeEBrErqvI2R

template関数の実体化が1つだけ成功して、
他が失敗するように仕掛ければ呼び分けは可能。

ただ見ての通り相当面倒なことを書かなきゃならない。

285 名前:デフォルトの名無しさん (ワッチョイ 8101-1tDD) mailto:sage [2023/06/21(水) 00:28:02.40 ID:CWKUsltc0.net]
>>279
>>266と本質的に何が違うのか分からない
解説よろしく
(templateでやってることは無駄なのでは?)

286 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) mailto:sage [2023/06/21(水) 00:41:42.51 ID:3HBFHOpK0.net]
>>280
いや、 >>279 のほうがちょっと柔軟で使いやすい。
たとえば

void f3(long int, long int) {}

みたいなのを渡したとき >>266 ではエラーになる。
引数として int を渡せる (int から暗黙に変換可能な仮引数を持っている) というのと
厳密に int そのものでなければならないというのとでは制約の厳しさが違う。

287 名前:デフォルトの名無しさん (ワッチョイ 515f-9XmN) mailto:sage [2023/06/21(水) 00:42:09.27 ID:LxMKpynY0.net]
templateでやるのは質問者の与えた要件だな
宿題なんじゃね、しらんけど

288 名前:デフォルトの名無しさん (ワッチョイ 32fb-9xvA) [2023/06/21(水) 00:52:13.25 ID:2lh42auf0.net]
C++14にはif constexprが存在しないから
template使ったオーバーロードしか手段がない

質問者がC++14環境でって言ってたからこんなクソ面倒くさいことやれば一応できるっていう例示

289 名前:デフォルトの名無しさん (ワッチョイ 8101-1tDD) mailto:sage [2023/06/21(水) 01:17:47.52 ID:CWKUsltc0.net]
>>281,283
ありがとう
>引数として int を渡せる (int から暗黙に変換可能な仮引数を持っている) というのと
>厳密に int そのものでなければならないというのとでは制約の厳しさが違う。
こういうことね



290 名前:デフォルトの名無しさん (ワッチョイ a901-UvLK) [2023/06/21(水) 04:29:46.61 ID:IDPPhD2V0.net]
>>260
あー本来グローバルも対象になるのか、適当こいてスマソ

だが>>248で質問者が言ってるように、元のコードで順序を変えてもダメなのよ
何故か考えてはちみつのコードを以下のようにしたら同様に通らなかった

namespace ns {
template <class T = int>
struct foo{};

// added
struct hoge{};
int operator +(const hoge &x, const hoge &y) {return 1;}
};


ns::foo<> operator+(const ns::foo<>& x, const ns::foo<>& y) { return ns::foo<>(); }

namespace ns {
template <class T>
void bar(const T&) {
T() + T();
} };

int main() { bar(ns::foo<>()); }

すでに名前空間内に同名の関数があった場合はダメっぽい

291 名前:デフォルトの名無しさん (ワッチョイ a901-UvLK) [2023/06/21(水) 09:44:10.00 ID:IDPPhD2V0.net]
あ、すまんfooがクラステンプレートになってるの直し忘れた(直しても同じだが)

292 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) mailto:sage [2023/06/21(水) 10:22:19.76 ID:3HBFHOpK0.net]
>>285
名前探索 (name lookup) は狭い名前空間から探索していって
合致する名前があればそれより外側に同名の関数があっても
オーバーロード解決に参加しない。

わかりやすい例で言えばメンバ関数は非メンバより優先されるし、
メンバ関数内にひとつでも候補が見つかった時点で非メンバ関数は一切考慮に入らなくなる。

void foo(void) {}

struct bar {
void baz(void) {
// この foo は bar::foo のこと
// 名前が見つかった時点でそれより外の名前空間は見に行かないので
// 引数が合わなくても他の候補は試みられずエラーになる。
foo(1);
}
void foo(void) {}
};

293 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) mailto:sage [2023/06/21(水) 10:34:08.97 ID:3HBFHOpK0.net]
例をちょっと間違えたのでやりなおし。

void foo(int) {}

struct bar {
void baz(void) {
foo(1);
}
void foo(void) {}
};

こうすると非メンバ関数の foo は候補にすらならないという話。

294 名前:デフォルトの名無しさん (ワッチョイ 8101-1tDD) mailto:sage [2023/06/21(水) 11:00:59.24 ID:CWKUsltc0.net]
g++更新にともない
自前ライブラリのビルドでエラーが出るようになって
悩んでたところを解説してくれてる
マジで凄い人達だな

295 名前:デフォルトの名無しさん (ワッチョイ a901-UvLK) [2023/06/21(水) 11:31:26.94 ID:IDPPhD2V0.net]
>メンバ関数内にひとつでも候補が見つかった時点で非メンバ関数は一切考慮に入らなくなる。
thx。確かにこれ経験したことあるわ・・・ややこしいし名前変えて対処したけど

296 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) mailto:sage [2023/06/21(水) 12:13:25.08 ID:3HBFHOpK0.net]
>>285 の例は using を使う形でも解決できる。 (設計意図によってはそれが妥当かどうかわからんけど。)

namespace ns {
struct foo {};

struct hoge {};
int operator+(const hoge& x, const hoge& y) { return 1; }
};

ns::foo operator+(const ns::foo& x, const ns::foo& y) { return ns::foo(); }

namespace ns {
template <class T>
void bar(const T&) {
using ::operator+; // グローバルな operator+ をオーバーロード候補として参加させる
T() + T();
}
};

int main() { bar(ns::foo()); }


テンプレートを見る機会がよくあるなら std::begin を using している事例は見たことがあると思う。

297 名前:デフォルトの名無しさん (ワッチョイ ad10-fL0y) mailto:sage [2023/06/21(水) 12:20:53.22 ID:s1sJDdcu0.net]
C++って、こういう悪夢みたいなテクニックで溢れかえってるよなあ
RustやらPythonだのに人気が移るわけですよ

298 名前:デフォルトの名無しさん (テテンテンテン MM96-Axrn) mailto:sage [2023/06/21(水) 12:23:49.28 ID:xjKiS8Z6M.net]
記法でいうならNimがいいよ。

299 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) mailto:sage [2023/06/21(水) 16:00:35.62 ID:3HBFHOpK0.net]
カスタマイズされた関数が呼ばれるようにする綺麗な方法として customization point object という概念が近頃は導入されてる。
綺麗な方法というか汚い部分はライブラリに隠すってだけなんだけど。
真似してみてもいいかもね。

より綺麗な方法が導入されるのはいいんだけど、
過去の方法が消えてなくなるわけでもないし完全に置き換えられるわけでもないからなぁ。
個々には良くなっても全体としては余計に複雑になるだけってのもよくある話。
https://m.xkcd.com/927/



300 名前:デフォルトの名無しさん (ワッチョイ c997-trtU) mailto:sage [2023/06/22(木) 09:50:22.29 ID:+UOgHQ6A0.net]
max RSS (メモリ総量) の取得ってWindowsとLinuxでポータブルな方法ないの?

301 名前:デフォルトの名無しさん (スプッッ Sd12-9xvA) [2023/06/22(木) 10:07:05.02 ID:T+/An9G4d.net]
C++標準ライブラリには無い

外部ライブラリに頼るか自分で実装するかになるけど、結局のところ#ifdefでOS依存の機能を呼び分けるしかない

302 名前:デフォルトの名無しさん (ワッチョイ 196e-ljvc) mailto:sage [2023/06/22(木) 10:35:39.47 ID:myrOOi5M0.net]
std::uintptr_t get_available_memory();
とプロトタイプだけ用意して、定義を環境別に作るだな

内容的に割と単純な処理のはずで
環境別に用意といってもたいした工数にはなるめえよ

303 名前:デフォルトの名無しさん (アウアウウー Sacd-Hkv7) mailto:sage [2023/06/22(木) 17:54:50.46 ID:Sn58Ngpoa.net]
Nim いいよね
C++ 嫌になったら Nim においでおいで

304 名前:デフォルトの名無しさん (ワッチョイ c997-trtU) mailto:sage [2023/06/23(金) 06:00:18.48 ID:AFPisFIg0.net]
なんかのオブジェクトをポインタじゃなく実体として持ってるとして、それを delete するやり方ってないの?
たとえば std::vector A に対して
delete &A;
みたいな

305 名前:デフォルトの名無しさん (ワッチョイ 92ad-DGQF) mailto:sage [2023/06/23(金) 06:14:43.58 ID:Dz+tkRpF0.net]
「実体を持っている」と言うが「誰が」持っているかにもよる
グローバル変数として宣言しているなら予めメモリ上に確保されているから破棄は無理(強引に再利用はできる)
スコープ内で変数として宣言したのなら必要なメモリはスタック上にあるからスタックを弄るしかない
別のオブジェクトのメンバ変数として宣言されているならそのオブジェクトを破棄する

306 名前:デフォルトの名無しさん (ワッチョイ 92ad-DGQF) mailto:sage [2023/06/23(金) 06:17:44.59 ID:Dz+tkRpF0.net]
スコープ内でってのはローカル変数の意味で言ったの

307 名前:デフォルトの名無しさん (ワッチョイ 3602-Ul6j) [2023/06/23(金) 07:14:23.97 ID:GEB8UNzF0.net]
A.~vector<>();でいいんじゃないの?
メモリ解放が必要ならdelete(void*)&A;とかして。

308 名前:デフォルトの名無しさん (ワッチョイ 196e-ljvc) mailto:sage [2023/06/23(金) 07:18:45.05 ID:v++V1HM40.net]
>>299
deleteはdynamic storage durationのオブジェクトにのみ許される
std::vector<int> A;はautomatic storage durationの場合はその定義を囲むブレースから逸脱すれば破棄される
static storage durationの場合はプログラムの実行終了時に破棄される
thread storage durationの場合はスレッド終了時に破棄される

309 名前:デフォルトの名無しさん (テテンテンテン MM96-Axrn) mailto:sage [2023/06/23(金) 07:19:36.07 ID:pmKt7pYtM.net]
極論すれば、c++の変数は自動変数しか無いから、変数で定義しているものはコンパイラに任せるしか無い。



310 名前:デフォルトの名無しさん (ワッチョイ 196e-ljvc) mailto:sage [2023/06/23(金) 07:23:15.08 ID:v++V1HM40.net]
> c++の変数は自動変数しか無い

???

311 名前:デフォルトの名無しさん (ワッチョイ adc9-1tDD) mailto:sage [2023/06/23(金) 08:10:40.98 ID:Z0FiiE+w0.net]
変数の生命期間よりも前に絶つのは new したものを delete する方法しかないよ

std::vector* pA = new std::vector();
std::vector& A = *pA;
 :
 Aで操作
 :
delete pA;
この後 Aに対して操作すると鼻から悪魔

312 名前:デフォルトの名無しさん (ワッチョイ 196e-ljvc) mailto:sage [2023/06/23(金) 08:36:05.01 ID:v++V1HM40.net]
auto&& A { *new std::vector<int>(0) };
delete &A;
これで「実体」のように偽装はできるけど
こんなコード書くやついたらグーパンだよ

313 名前:デフォルトの名無しさん (ワッチョイ 92f0-L1I+) mailto:sage [2023/06/23(金) 08:38:29.90 ID:OoWAXDqh0.net]
このスレ読んでると目の裏がチカチカしてくるなw

314 名前:デフォルトの名無しさん (ワッチョイ f59c-Axrn) mailto:sage [2023/06/23(金) 08:46:52.36 ID:z+mnuoLR0.net]
>>305
極論すれば、と言っているだろ。
せめて反例ぐらい出せよ。

315 名前:デフォルトの名無しさん (ワッチョイ 196e-ljvc) mailto:sage [2023/06/23(金) 09:45:42.49 ID:v++V1HM40.net]
反例っておまえ・・・

静的変数

316 名前:デフォルトの名無しさん (ワッチョイ 0d4e-L1I+) mailto:sage [2023/06/23(金) 10:11:58.67 ID:Zb3L9Wmq0.net]
>>299
deleteで何をしたいかによるな
deleteは
・デストラクタを呼び出して
・メモリを開放する
という2つの動作が含まれるが、「メモリを開放する」に関しては、確保されてもいないメモリはもちろん開放できないが、
デストラクタは実体としてはただの関数なので、普通に呼び出すことは可能
ただし、メモリが開放される(deleteされる)時にもデストラクタはもちろん呼び出されるので、2重に呼び出しても大丈夫なように設計されたクラスである必要はある

317 名前:デフォルトの名無しさん (ワッチョイ 8101-1tDD) mailto:sage [2023/06/23(金) 11:56:54.20 ID:jOpqVfQE0.net]
>>299
スコープを終わらせれば消える

318 名前:デフォルトの名無しさん (テテンテンテン MM96-UmNC) mailto:sage [2023/06/23(金) 13:49:52.85 ID:RsoTpuHzM.net]
Windows11でc++の開発したいんですけど開発環境何を選べばいいですか?
ちなみに趣味でおもちゃ言語のコンパイラを書こうと思います

319 名前:デフォルトの名無しさん (スッップ Sdb2-Ul6j) [2023/06/23(金) 14:29:49.42 ID:P5Uu3Ce/d.net]
wslのclangでいいんじゃないの



320 名前:デフォルトの名無しさん (ワッチョイ 515f-C6j3) mailto:sage [2023/06/23(金) 14:40:39.89 ID:79pDbKtj0.net]
>>311
> 2重に呼び出しても大丈夫なように設計されたクラスである必要はある
trivial destructor 以外は(空の ~T() {} 含め)どうがんばっても大丈夫にはならず未定義動作となる模様。
https://timsong-cpp.github.io/cppwp/n4868/basic.life#9.sentence-1

321 名前:デフォルトの名無しさん (テテンテンテン MM96-UmNC) mailto:sage [2023/06/23(金) 14:42:57.84 ID:XaN8/xk5M.net]
>>314
visual studioでできませんか?
visual studioに依存しないような形で

322 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) mailto:sage [2023/06/23(金) 14:49:06.12 ID:Xemzxb7u0.net]
>>316
依存するかしないかはプログラマが気を付けることだろ

323 名前:デフォルトの名無しさん (ワッチョイ 196e-ljvc) mailto:sage [2023/06/23(金) 14:58:36.88 ID:v++V1HM40.net]
>>316
つーか俺はVisual Studioを推奨する
コンパイラ本体が昔からしっかりしてるし
デバッガは無数の信者を抱えるクオリティ

324 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) mailto:sage [2023/06/23(金) 15:11:25.32 ID:Xemzxb7u0.net]
俺はコンパイラは複数を利用するのが好ましいと思う。
気を付けてても処理系に依存している (または未定義を踏んでいる) こともある。
いくつかのコンパイラで試してみれば問題点を発見しやすい。

発現した問題についてはデバッガなりなんなりで追えばいいんだが、
問題が潜伏したまま表面に現れないってのは後になってじわじわ効いてきたりするし……。

325 名前:デフォルトの名無しさん (アウアウウー Sacd-Hkv7) mailto:sage [2023/06/23(金) 16:11:46.79 ID:lCxAQSJFa.net]
>>299
デストラクタに直接リソース解放させるより
リソース解放用の dispose() みたいな関数を造っておいて
デストラクタから dispose() 呼ぶのと同時に
delete しないで dispose() だけ外から呼ぶ設計もあるよ

326 名前:デフォルトの名無しさん (アウアウウー Sacd-Hkv7) mailto:sage [2023/06/23(金) 16:14:47.39 ID:lCxAQSJFa.net]
>>313
Code::Blocks (+ mingw)

327 名前:デフォルトの名無しさん (ワッチョイ 69f0-J7ro) mailto:sage [2023/06/23(金) 18:47:00.64 ID:5tcqgCxE0.net]
コンパイラの本なにがいいのかオススメ聞いたらオッサンに聞いたら怪獣が書いてある本って云われて本屋行って買ったらあとで付録のFDD誰かにかっぱわられていタコとに気付いたけどその本一冊ではなんの役にも立たないクソみたいな本だったわ
そのあとオライリーのyacc&lexの本と早乙女氏のBison&Flex本で学び直したわ

328 名前:デフォルトの名無しさん (ワッチョイ 69f0-J7ro) mailto:sage [2023/06/23(金) 19:05:06.07 ID:5tcqgCxE0.net]
良く見たら全然違ったわw
https://i.imgur.com/DHAPVXR.jpg
yacc&lexが早乙女氏でBison&Flexが五月女氏でオライリーに似てるけどASCII出版やったわ

329 名前:デフォルトの名無しさん (テテンテンテン MM96-Axrn) mailto:sage [2023/06/23(金) 19:51:54.58 ID:s3XGk2XtM.net]
>>316
まず動くものを作ることに注力したほうがいい。
どうせ最初のコードは(問題領域の学習後に)捨てることになるから、プロトタイプと割り切るべき。あんまり頑張ると進捗悪くて挫折するし、うまく行ってもコンコルド効果で酷い目にあう。

>>310
確かに静的変数は自動だけど別物だな……よくやった。悔しいが褒めてやろう。



330 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) mailto:sage [2023/06/23(金) 22:40:53.53 ID:Xemzxb7u0.net]
>>324
???
storage duration は四種類の内の「ひとつ」であることは直接的に明記されていて解釈の余地がない。
https://timsong-cpp.github.io/cppwp/n4861/basic.stc#1
兼ねる場合は存在しない。

331 名前:デフォルトの名無しさん (ワッチョイ 6501-2DXs) [2023/06/24(土) 08:29:33.32 ID:31MSzc3x0.net]
>まず動くものを作ることに注力したほうがいい。
+1票

>いくつかのコンパイラで試してみれば問題点を発見しやすい。
これはその通りだけど、もっともっと先の話

332 名前:デフォルトの名無しさん (ワッチョイ 856e-gmRT) mailto:sage [2023/06/24(土) 09:51:19.10 ID:xNNc2oEW0.net]
動くといってもHello worldじゃあまりにもモチベーションに乏しいから
何でもいいから目的目標を持ったプログラムを書いたほうがいい

333 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ dd3e-F8yx) mailto:sage [2023/06/24(土) 12:57:29.18 ID:rXisqo0O0.net]
>>327
この話題の大元である >>313 でコンパイラを書くと書いてあるよ。

334 名前:デフォルトの名無しさん (ワッチョイ 6501-wYA+) [2023/06/24(土) 20:48:58.11 ID:rm+SB6K20.net]
ドラゴンブックでは?
誤植を指摘できるくらい読み込めば古典は理解できてると思う

335 名前:デフォルトの名無しさん (アウアウウー Sa69-F3wx) [2023/06/27(火) 14:41:09.50 ID:DdZG5nY/a.net]
いつまでも初心者を抜け出せない人は初心者本を読み過ぎ

336 名前:デフォルトの名無しさん (ワッチョイ 856e-gmRT) mailto:sage [2023/06/27(火) 17:36:09.51 ID:59BI4JPS0.net]
初心者本は【ど】初心者のうちだけにしとけ
謙虚なことはいいことだが、ここだけは背伸びしたほうがいい

初心者本で何か知ったら、それで禿本がどのくらい読めるようになったかやってみれ
禿本が普通に読めるようになったら次はISOの規格票

337 名前:デフォルトの名無しさん (ワッチョイ 856e-gmRT) mailto:sage [2023/06/27(火) 17:38:22.91 ID:59BI4JPS0.net]
逆もしかり
ISOの規格票であえなくギブしたら禿本
禿本でギブのとき初心者本に戻る感じな

338 名前:デフォルトの名無しさん (ワッチョイ 8d7c-BujW) mailto:sage [2023/06/27(火) 18:00:18.69 ID:h1cnuIf90.net]
特にC++は下手な参考書より規格の方が分かりやすかったりするからな…

339 名前:デフォルトの名無しさん (ワッチョイ dd4e-OfpS) mailto:sage [2023/06/27(火) 18:15:38.33 ID:D2orubkn0.net]
初心者へのアドバイスに禿本とかいう隠語をつかうのはどうかと思う



340 名前:デフォルトの名無しさん (ワッチョイ d5b3-q57E) mailto:sage [2023/06/27(火) 18:27:04.42 ID:KKkR5HKI0.net]
今独学でC++学んでいるんですが、たまたま見つけたサイトでint32_tとありましたが
int変数を宣言するのにint32_tなんて使いませんよね?
intでokですよね?

341 名前:デフォルトの名無しさん (ワッチョイ ad5f-VF0j) mailto:sage [2023/06/27(火) 18:34:12.56 ID:3myjDgNL0.net]
何に使うか次第

342 名前:デフォルトの名無しさん (ワッチョイ ad02-ES2+) mailto:sage [2023/06/27(火) 18:46:35.68 ID:gpD88JT50.net]
>>335
32ビット長である必要があるときだけint32_tを使えばいいよ

343 名前:デフォルトの名無しさん (ワッチョイ d5b3-q57E) mailto:sage [2023/06/27(火) 19:26:51.01 ID:KKkR5HKI0.net]
サンクス

344 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ dd3e-F8yx) mailto:sage [2023/06/27(火) 19:30:48.55 ID:wxXBe/Gr0.net]
>>335
int は言語仕様では少なくとも -32767 から 32767 を表現可能な幅 (つまり 16 ビット) を持つことが規定されている。
具体的な大きさは処理系定義であって、最低限である 16 ビットかもしれないしもっと大きいかもしれない。
扱おうとする値の範囲が 32 ビット分の幅が必要であると見積もったなら int32_t が適切なこともある。

ただ…… int32_t は「条件に合致する整数型を処理系が持っているなら必ず提供しなければならない」ということになっているので、逆に言えば 32 ビット幅の整数型を持たない処理系では int32_t が存在しないことが許される。
C++ は処理系定義ということにしている項目がたくさんあって移植性を考慮しようとするとすごく大変なんだが (プログラマが想定してさえいれば) ある程度に広く対応可能な仕組みとしてこういう回りくどいものがある。
初心者の内はとりあえず自分の環境で動くものを作れるようになるというので十分だと思うよ。

345 名前:デフォルトの名無しさん (ワッチョイ 856e-gmRT) mailto:sage [2023/06/28(水) 05:36:22.40 ID:p/gJzJ+n0.net]
>>334
知らなきゃ聞くだろ

346 名前:デフォルトの名無しさん (スッップ Sd43-KhjG) mailto:sage [2023/06/28(水) 05:40:48.88 ID:PRZu9/2Od.net]
>>340
禿本って誰ですか?

347 名前:デフォルトの名無しさん (ワッチョイ 856e-gmRT) mailto:sage [2023/06/28(水) 07:54:48.30 ID:p/gJzJ+n0.net]
Bjarne Stroustrup著 The C++ Programming Language
ISBN-10 4797375957

348 名前:デフォルトの名無しさん (ワッチョイ 856e-gmRT) mailto:sage [2023/06/28(水) 07:55:45.79 ID:p/gJzJ+n0.net]
禿のブログ
https://www.stroustrup.com/

349 名前:デフォルトの名無しさん (ワッチョイ dd4e-OfpS) mailto:sage [2023/06/28(水) 11:12:40.66 ID:MFKAAcNx0.net]
>>340
誰も知らないから隠語なんだよ
たまにいるよな、相手の知らないであろう単語を使ってマウントを取った気分になるやつ



350 名前:デフォルトの名無しさん (テテンテンテン MM4b-HUf/) mailto:sage [2023/06/28(水) 12:11:22.15 ID:gg0vhlU/M.net]
>>340
検索すると別人の本が出てくるから駄目だろ。

351 名前:デフォルトの名無しさん (ワッチョイ 23f0-OfpS) mailto:sage [2023/06/29(木) 00:03:54.47 ID:XHjEw6wR0.net]
C++でintと書けない理由はほぼほぼwindowsのintが32ビットと定義されているからで、
逆に言えば100% windowsで動かさないとあらかじめ分かっているならint使って書くよ

352 名前:デフォルトの名無しさん (ワッチョイ 4be5-O9q2) mailto:sage [2023/06/29(木) 07:49:46.01 ID:0UnKiO4J0.net]
せいぜい数十までの整数でも、いちいちint8_tになんかしねえな

353 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ dd3e-F8yx) mailto:sage [2023/06/29(木) 08:15:54.28 ID:l+ZsGqGg0.net]
巨大な配列なら話は別だが単発の整数がレジスタより小さくても得なことが無いからな。

354 名前:デフォルトの名無しさん (ワッチョイ 9dc9-3ptY) mailto:sage [2023/06/29(木) 08:19:17.75 ID:beCjxg/z0.net]
通信関連でペイロードに ビット長指定されてるのなんかは int○_t 使っときたい

355 名前:デフォルトの名無しさん (ワッチョイ 8590-bmws) mailto:sage [2023/06/29(木) 11:02:12.05 ID:prJHgW/t0.net]
intでもshortでもCPUの計算速度は同じ

356 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ dd3e-F8yx) mailto:sage [2023/06/29(木) 11:11:38.45 ID:l+ZsGqGg0.net]
四則演算では int より小さい整数は int に拡張する変換が入ることになってるし、
int を受け取る関数でも当然に変換されるので
変換する処理の分だけ素朴なコンパイラだと short のほうがコスト高になる可能性もある。

357 名前:デフォルトの名無しさん (ワッチョイ 8590-bmws) mailto:sage [2023/06/29(木) 11:21:22.19 ID:prJHgW/t0.net]
言葉足らずだったな
初学者向けに正確にいえば
ビット数の低い数値の型にしたからといって
計算速度が速くなるワケじゃない

理由はハチミツ氏の記述通り

358 名前:デフォルトの名無しさん (ワッチョイ 23f0-OfpS) mailto:sage [2023/06/29(木) 17:52:26.59 ID:XHjEw6wR0.net]
型のサイズが大きいほどキャッシュミスの確率が上がるし
ベクトル化の効率も関わってくるから話はそう簡単でもないけどな

359 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ dd3e-F8yx) mailto:sage [2023/06/29(木) 18:01:09.64 ID:l+ZsGqGg0.net]
チューニングが必要になったら実測しろってのはそういうことよな。
やってみるまでわからん。



360 名前:デフォルトの名無しさん (ワッチョイ 23ad-F8yx) mailto:sage [202 ]
[ここ壊れてます]

361 名前:3/06/30(金) 13:08:37.59 ID:fR+nHOGQ0.net mailto: やはり64bitCPUなら64bit整数が一番計算が速かったりするのかな []
[ここ壊れてます]

362 名前:デフォルトの名無しさん (ワッチョイ 05a7-7pYU) mailto:sage [2023/06/30(金) 13:38:31.87 ID:x+ZjTlP+0.net]
>>348
al、ah、axと小さなレジスタでやりくりすることによりスタックすらも使わずに複数の変数を操作することは可能になる
まあ汎用レジスタ数の多い64bitアプリ

363 名前:ではあんまりメリットにならんが []
[ここ壊れてます]

364 名前:デフォルトの名無しさん (ワッチョイ 4bf2-kZxR) mailto:sage [2023/06/30(金) 13:40:34.61 ID:GCvfqGNe0.net]
普通、intは32bitじゃないの?
普通の計算に64bitなんて使ったらキャッシュ効率悪すぎでしょ

365 名前:デフォルトの名無しさん (ワッチョイ dd4e-OfpS) mailto:sage [2023/06/30(金) 15:06:59.18 ID:4d5Im9Ce0.net]
多少のCPU内の計算速度差より、メモリアクセスのペナルティの方が遙かに影響でかいんだよね
昔、同じテキスト処理をsjisとutf16で速度比べたら、処理が複雑なはずのsjisの方がわずかに速かったこともあった

366 名前:デフォルトの名無しさん (ワッチョイ ad02-ES2+) mailto:sage [2023/06/30(金) 16:50:22.94 ID:4gqYGJxm0.net]
じゃあ16ビット整数使おうぜ!

367 名前:デフォルトの名無しさん (スッップ Sd43-+46M) [2023/06/30(金) 18:10:36.60 ID:diu+eantd.net]
ILP32
LLP64 windows: int32 long32 long long 64
LP64 unix: int32 long64 long long 64
ILP64 実装例なし

368 名前:デフォルトの名無しさん (スプッッ Sd03-+QuN) mailto:sage [2023/06/30(金) 18:16:08.64 ID:rpfOZ2Y1d.net]
>>358
自作エディタの内部文字コードに悩んでるけどもしかしてUTF8がええのかな

369 名前:デフォルトの名無しさん (ワッチョイ dd4e-OfpS) mailto:sage [2023/06/30(金) 18:31:33.16 ID:4d5Im9Ce0.net]
>>361
utf8は日本語3バイトになるし、冗長コードの問題もあるし、処理がより煩雑になるから内部処理コードには一番向かないと思う
エディタなら素直にutf32(もしくは16)で持つのが良いような気がする



370 名前:デフォルトの名無しさん (ワッチョイ 8d9c-HUf/) mailto:sage [2023/06/30(金) 18:50:30.08 ID:JeB1mWDr0.net]
>>362
utf16はサロゲートペアがあるから避けたほうがいい。
簡単に実装するならutf32、メモリを節約するならutf8。だけど、utf8が覇権だからutf8にしたら?

371 名前:デフォルトの名無しさん (ワッチョイ 8d7c-BujW) mailto:sage [2023/06/30(金) 18:53:22.37 ID:ccKyFSM70.net]
今から新規にエディタ作るなら内部はUTF32一択でしょ
それ以外を使う理由がない

372 名前:デフォルトの名無しさん (ワッチョイ dd4e-OfpS) mailto:sage [2023/06/30(金) 20:01:34.61 ID:4d5Im9Ce0.net]
>>363
サロゲートペアの判定は簡単だし、utf32でも厳密には1文字=1要素にはならないし、
メモリアクセス量との兼ね合いでより高速に動作しそうな気がするが…避ける理由がよく分からない

373 名前:デフォルトの名無しさん (ワッチョイ 9d10-56Vs) mailto:sage [2023/06/30(金) 20:23:00.32 ID:fhTbp4mH0.net]
今どきは絵文字とかも絡んでくるから「簡単に実装」なんてそうそう言えないと思うんだよね
性別やら肌の色で修飾みたいな複雑仕様を網羅する必要があるから

374 名前:デフォルトの名無しさん (ワッチョイ 8d7c-BujW) mailto:sage [2023/06/30(金) 21:27:23.31 ID:ccKyFSM70.net]
Unicodeの処理なんてただでさえ魔境なんだから減らせる複雑性は減らしといた方が良いよ
悪いこと言わないからUTF32にしとけ

375 名前:デフォルトの名無しさん (ワッチョイ e2ad-hRAP) mailto:sage [2023/07/01(土) 10:11:11.88 ID:6RngsvF70.net]
テキストエディタを自作すると一文字一文字の描画位置の計算を毎回しなければならず、結局全テキストをデータutf32形式で保持するのが楽という結論になりそう

376 名前:デフォルトの名無しさん (ラクッペペ MM8e-J/Sn) mailto:sage [2023/07/01(土) 10:21:22.63 ID:zjPNSumQM.net]
そこまでやるとワープロやDTPの範疇では?

377 名前:デフォルトの名無しさん (ササクッテロラ Sp5f-kcaK) [2023/07/01(土) 10:38:59.61 ID:oFUv7PIMp.net]
>>351
変換する処理ったって、普通static_castにコスト発生せんやろ

378 名前:デフォルトの名無しさん (ササクッテロラ Sp5f-kcaK) [2023/07/01(土) 10:41:23.25 ID:oFUv7PIMp.net]
static_castというよりstatic_cast相当というべきか
もちろん浮動小数点数と整数だと命令いるけど

379 名前:デフォルトの名無しさん (オイコラミネオ MMe7-+Mc8) mailto:sage [2023/07/01(土) 10:43:45.44 ID:hNdT1t6QM.net]
レジスタの拡張命令が必要になる
それはゼロコストではない



380 名前:デフォルトの名無しさん (オイコラミネオ MMe7-+Mc8) mailto:sage [2023/07/01(土) 10:45:55.45 ID:hNdT1t6QM.net]
8bit,16bitの値を同サイズのレジスタに読む
それを32bitへ拡張する

381 名前:デフォルトの名無しさん (ササクッテロラ Sp5f-kcaK) [2023/07/01(土) 10:49:09.01 ID:UYNjOrxwp.net]
そうなのか、知らんかった・・・

382 名前:デフォルトの名無しさん (オイコラミネオ MMe7-+Mc8) mailto:sage [2023/07/01(土) 10:55:28.60 ID:hNdT1t6QM.net]
8bitしかないのに32bitで読むと当然ごみが入るので何かしないといけない
逆に8bitだけ読んで何もしないとこちらもレジスタにゴミが残ってる
何もしないで使える場合なにかしらの仕組みがある

そんなことするよりレジスタ拡張命令使った方がいい
通常の命令だけでなくてsimdにも用意されている

383 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 433e-hRAP) mailto:sage [2023/07/01(土) 10:57:02.19 ID:7zrd4+jP0.net]
俺も >>367 の意見に賛成。
UTF-32 の採用で何もかも良くなるわけではないが
少なくともコードポイント単位での扱いは楽になる。

384 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 433e-hRAP) mailto:sage [2023/07/01(土) 10:58:34.38 ID:7zrd4+jP0.net]
ちょうど Unicode 関連の本を読んでたんだが
右から左へ書く言語だとか
それが入れ子になってる場合だとか、
そういうのにちゃんと配慮したソフトウェアが世の中にあるのは
めちゃくちゃ頑張った人がいるんだなぁと有難みを感じてる。

385 名前:デフォルトの名無しさん (スププ Sd02-+VJx) [2023/07/01(土) 12:18:01.21 ID:W7avfgkdd.net]
日本語も右から左に書く言語だ
正確には上から下と右から左ニダ

386 名前:デフォルトの名無しさん (ワッチョイ 17f0-mXgB) mailto:sage [2023/07/01(土) 12:20:52.99 ID:86MprtLh0.net]
BiDiモード

387 名前:デフォルトの名無しさん (ラクッペペ MM8e-J/Sn) mailto:sage [2023/07/01(土) 12:42:13.26 ID:ZV4XYgX9M.net]
世界でも珍しい縦書き文化

388 名前:デフォルトの名無しさん (ワッチョイ 0e79-p0MK) mailto:sage [2023/07/01(土) 15:53:40.98 ID:GgZZqhZy0.net]
UTF32派の人ってWin32でW系API通す時に毎回変換するってこと?

389 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 433e-hRAP) mailto:sage [2023/07/01(土) 16:08:08.30 ID:7zrd4+jP0.net]
>>381
そうだよ。
作るアプリケーションがエディタ (またはシーケンシャルではない
テキスト操作をする何か) であるという前提を置いているときなら
という条件付きな話だが。



390 名前:デフォルトの名無しさん (ワッチョイ e2ad-hRAP) mailto:sage [2023/07/01(土) 17:26:11.76 ID:6RngsvF70.net]
そもそもWin32でA系APIにutf8渡せないし

391 名前:デフォルトの名無しさん (ワッチョイ 7b9c-44el) [2023/07/01(土) 17:29:40.49 ID:ceIwatEY0.net]
A系にはutf8渡せるんじゃないの?

392 名前:デフォルトの名無しさん (ワッチョイ e2ad-hRAP) mailto:sage [2023/07/01(土) 17:36:11.93 ID:6RngsvF70.net]
渡せるという表現がまずかったかな
結果を気にしなければ、なんでも渡せるよ

393 名前:デフォルトの名無しさん (ワッチョイ 06f2-fGW2) mailto:sage [2023/07/01(土) 17:43:00.61 ID:XU86fDmw0.net]
>>384
Windows バージョン 1903 (2019 年 5 月の更新プログラム) 以降、ActiveCodePage プロパティを使って、プロセスのコード ページとして UTF-8 を使うように強制できるようになりました。

394 名前:デフォルトの名無しさん (ラクッペペ MM8e-J/Sn) mailto:sage [2023/07/01(土) 19:58:04.79 ID:Z2fZL/QQM.net]
A系はASCIIなのでunicode由来のutfもshift-jis などのMBCSも扱えない

395 名前:デフォルトの名無しさん (ワッチョイ 06f2-HE4y) mailto:sage [2023/07/01(土) 20:10:31.66 ID:XU86fDmw0.net]
>>387
最近までは、-A API がレガシと見なされていました。
これは、何十年もの間、Windows が "Unicode" -W バリアントを推進していたためです。
しかし、最近のリリースの Windows では、ANSI コード ページと -A API を活用し、
新しい SKU で UTF-8 サポートを導入しています。 ANSI コード ページが
UTF-8 に対して構成されている場合、-A API は UTF-8 で動作します。

396 名前:蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd02-Ojup) mailto:sage [2023/07/01(土) 20:13:40.75 ID:6ckc7dLGd.net]
>>387
以前からCP_ACPは日本語環境でシフトJISを扱えたはず。CP_ACPの解釈をCP_UTF8にすることができる設定と見なせる。

397 名前:デフォルトの名無しさん (ブーイモ MM8e-44el) [2023/07/01(土) 20:43:32.48 ID:B2exONcuM.net]
ASCIIしか考えてないアメリカ人の

398 名前:作ったプログラムでもUTF-8ならそれなりに動くよね
strlenが正確な文字数を返してくれるわけではないけども
[]
[ここ壊れてます]

399 名前:蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd02-Ojup) mailto:sage [2023/07/01(土) 20:55:13.36 ID:6ckc7dLGd.net]
WideCharToMultiByteとMultiByteToWideCharの第一引数に明示的にシフトJISのコードページ932を指定すればUTF-8な環境でも動く。



400 名前:デフォルトの名無しさん (ワッチョイ 7f28-iz2R) mailto:sage [2023/07/01(土) 23:06:29.67 ID:5I1AeY3j0.net]
そうなの?
ただ単に変換APIの第一引数に明示的にシフトJISのコードページ932を指定しただけだと
とりわけWideCharToMultiByte()の場合、文字コードの自動判別が介在する余地もなく、
ウィンドーズ内部表現のUTF-16がシフトJISのコードページ932に(指定通りに)変換されるだけなんじゃないの……

M$のページ見たら
>マニフェストの ActiveCodePage プロパティを使って、プロセスのコード ページとして UTF-8 を使うように強制できるようになりました。
>マニフェストの ActiveCodePage プロパティを使って
と書いてあった
マニフェストファイル変えたら中で何がどう切り替わるのかわ皆目わからんが、
ただ単に変換APIの第一引数に明示的にシフトJISのコードページ932を指定したら万事OKというよりは得心が行く

401 名前:デフォルトの名無しさん (ワッチョイ 06f2-HE4y) mailto:sage [2023/07/02(日) 00:11:45.31 ID:26TSX02F0.net]
そういう話じゃない
〜A系のAPIの文字列引数にUTF8が使えるようになったという話だ

402 名前:デフォルトの名無しさん (ワッチョイ ce9a-EKe4) mailto:sage [2023/07/02(日) 00:28:14.28 ID:MfIRncIE0.net]
>>390
>strlenが正確な文字数を返してくれるわけではないけども
そもそも正確な文字数が必要な局面って?
そもそもUnicodeにおける「文字」って

403 名前:デフォルトの名無しさん (ラクッペペ MM8e-J/Sn) mailto:sage [2023/07/02(日) 00:43:33.66 ID:B6PMzb/YM.net]
A系ならstrlen、W系ならlstrlen使えば済む話では?

404 名前:デフォルトの名無しさん (ワッチョイ ce9a-EKe4) mailto:sage [2023/07/02(日) 01:40:17.87 ID:MfIRncIE0.net]
>>377
Unicode自体と同様、文句もあるけど世界中が規格化標準化されるのはやはり
有益な面があるなあと思ったり
言語を完全に知らなくてもそういう規則に従えばまあまあのものが出来る
そうやって自分もRTLなテキストを処理するコードを書いたことがあるし
日本語を(も)扱うコードだってどこかの外人が書いてるわけで

そうだ、日本語だって戦前はRTL。あれ、英語はどうしてたんだろ.... 敵性言語だから
ないことになってたのかなw

そういえば、テキストだけじゃなくてUIのレイアウトも変わるし、テキストのスクロール
方向とかも変わるし、注意が必要だったり

405 名前:デフォルトの名無しさん (ワッチョイ cb02-ctHD) [2023/07/02(日) 04:10:12.63 ID:3Rb9PhMu0.net]
Visual C++してもいいでしょうか?
特定の既定のライブラリの無視に「LIBCMT.lib」を設定して
マルチスレッド使っても大丈夫でしょうか?
もちろんランタイムライブラリの設定はマルチスレッドにしてます。
これでマルチスレッド使っても大丈夫でしょうか?

406 名前:0397 (ワッチョイ cb02-ctHD) [2023/07/02(日) 04:46:51.92 ID:3Rb9PhMu0.net]
ごめんなさい。自己解決しました。

407 名前:デフォルトの名無しさん (ワッチョイ 7f28-iz2R) mailto:sage [2023/07/02(日) 08:22:56.48 ID:cqAPSm8d0.net]
>>393
何言ってるかわからんkwsk
過去にCreateFile(L"漢字.txt", ...)で作ったファイルを、
WideCharToMultiByteとMultiByteToWideCharの第一引数に明示的にシフトJISのコードページ932を指定するだけで
CreateFileA(u8"漢字.txt", ...)で開けるようになったとしたら論理鉄器におかしい希ガス

408 名前:デフォルトの名無しさん (ワッチョイ c2fb-PY2F) [2023/07/02(日) 10:08:44.31 ID:idCQJgQa0.net]
環境依存の文字コードを取り扱うA系の関数でコードページ65001(UTF8)をサポートしたという話か?

「最近のリリースのWindows」とやらが何年ごろの話か知らんが

409 名前:デフォルトの名無しさん (オイコラミネオ MMe7-hRAP) mailto:sage [2023/07/02(日) 10:21:10.68 ID:FpcWXL3uM.net]
親切な人がいて上の方に書いてある



410 名前:デフォルトの名無しさん (ワッチョイ 7f28-iz2R) mailto:sage [2023/07/02(日) 11:09:45.90 ID:cqAPSm8d0.net]
書いて無くね↑?

411 名前:デフォルトの名無しさん (スププ Sd02-+VJx) [2023/07/02(日) 11:52:22.93 ID:R6FnNIs/d.net]
>>396
英文モールスや和文モールス信号(符号)は戦前からあるから参考になるよ

みごとに被ってるから

412 名前:デフォルトの名無しさん (アウアウウー Sabb-hiKC) mailto:sage [2023/07/02(日) 11:59:53.95 ID:BV1CApnra.net]
>>399
お舞の方が何言ってるかワカラン
>過去にCreateFile(L"漢字.txt", ...)で作ったファイルを、
>WideCharToMultiByteとMultiByteToWideCharの第一引数に明示的にシフトJISのコードページ932を指定するだけで
>CreateFileA(u8"漢字.txt", ...)で開けるようになったとしたら論理鉄器におかしい希ガス

CreateFile と WideCharToMultiByte/MultiByteToWideChar には何の関係も無いぞ
どちらかといえば setlocale/systemlocale とかの話してるなら判らんでもないが

413 名前:デフォルトの名無しさん (ワッチョイ 7f28-iz2R) mailto:sage [2023/07/02(日) 12:09:58.45 ID:cqAPSm8d0.net]
>>404
>>391

414 名前:デフォルトの名無しさん (ワッチョイ 7f28-iz2R) mailto:sage [2023/07/02(日) 12:12:15.47 ID:cqAPSm8d0.net]
んまーもちついて>>391を読めば
>UTF-8な環境でも
というのがActiveCodePage プロパティを使って、プロセスのコード ページとして UTF-8 を使うように強制できるようになりました環境(>>386
の意味なら分からなくも無いorz

415 名前:デフォルトの名無しさん (ワッチョイ ce9a-EKe4) mailto:sage [2023/07/02(日) 14:25:34.89 ID:MfIRncIE0.net]
>>403
>>396はエンコーディングの仕方の話ではないんですよね

疑問の答えはここにあった(と思う)
https://upload.wikimedia.org/wikipedia/commons/b/b3/Bank_of_Japan_silver_convertible_one_yen_banknote_1885.jpg

416 名前:デフォルトの名無しさん (アウアウウー Sabb-hiKC) [2023/07/02(日) 15:11:19.95 ID:BV1CApnra.net]
和氣清麻呂好き

417 名前:デフォルトの名無しさん (ササクッテロラ Sp5f-UEHP) [2023/07/03(月) 18:00:48.84 ID:+/doOPQlp.net]
組み込みの設計技法を学びたいんだけど、静的構造と動的構造の設計を学べるいい書物あったら教えてください

418 名前:デフォルトの名無しさん (テテンテンテン MM8e-CxeC) mailto:sage [2023/07/05(水) 19:37:47.51 ID:UfO9dhEIM.net]
>>409
古い人間だから、デザインパターン本ぐらいしか知らん。

C++テンプレート設計の良本てあったっけ?

419 名前:デフォルトの名無しさん (ワイーワ2 FFfa-QrII) mailto:sage [2023/07/05(水) 19:46:37.42 ID:98uidMYlF.net]
>>410
Modern C++ Designとか?



420 名前:デフォルトの名無しさん (ワッチョイ 7b7c-9nZq) mailto:sage [2023/07/05(水) 19:52:44.79 ID:tRsu2qbd0.net]
あれは魔術書過ぎてちょっと…C++03時代の本だから古いし

421 名前:デフォルトの名無しさん (オイコラミネオ MMe7-hRAP) mailto:sage [2023/07/05(水) 20:15:53.22 ID:XE8fk1ziM.net]
横からだけど組み込みは手続き型なのかイベントドリブンなのかも知らないので知りたいなw

422 名前:デフォルトの名無しさん (ワッチョイ c67c-mdfO) mailto:sage [2023/07/06(木) 03:34:48.12 ID:s5S2CoPB0.net]
組み込みだから手続き型とか
組み込みだからイベントドリブンとか
そういうのはないよ

423 名前:デフォルトの名無しさん (ワッチョイ 433e-hRAP) mailto:sage [2023/07/06(木) 09:09:22.20 ID:a8qSLwwI0.net]
>>413
組み込まれていれば組み込みなんだよ。
扱う技術には何も違いは無い。

組み込みなら何らかの制御対象はあるだろうから
その制御対象の性質には影響を受けると思うが。

424 名前:デフォルトの名無しさん (ワッチョイ 06f2-HE4y) mailto:sage [2023/07/06(木) 09:59:15.82 ID:ZkyJU/6U0.net]
手続き型かどうかとイベントドリブンかどうかは関係ない概念

425 名前:デフォルトの名無しさん (ワッチョイ d701-kcaK) [2023/07/06(木) 14:16:15.16 ID:ALXC3HlV0.net]
>>412
横からだが魔術書とか、アンサイクロペディアの内容真に受けてるのか流行ってるのか知らんけど良くない
凝ったメタプログラミングとかしなくても、わりと実用的な知識が書いてあるよ
オブジェクト指向だけだとユーザーに制約を押し付けてしまいがちな部分を、もう少し自由度高く、直交する概念を組み合わせて小さなパーツに分けるのにテンプレートが便利だよとかいう話が書いてある

426 名前:デフォルトの名無しさん (ワッチョイ df01-Jyjt) mailto:sage [2023/07/06(木) 14:28:39.97 ID:a0X6jP530.net]
出版当時の衝撃は魔術と評されるに値したなぁ
今もって難解の書ではある
正座して読むべし

427 名前:デフォルトの名無しさん (ワッチョイ c67c-mdfO) mailto:sage [2023/07/06(木) 15:07:08.13 ID:s5S2CoPB0.net]
足が痺れて集中できない

428 名前:デフォルトの名無しさん (ワッチョイ 7b7c-9nZq) mailto:sage [2023/07/06(木) 20:08:43.89 ID:3MFY2fBc0.net]
>>417
いや読んだし持ってるし、面白くて良いことも色々書いてるのは知ってるよ
でも「設計技法の本だよ!」ってC++詳しくない人に薦めるような本ではない

429 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 433e-hRAP) mailto:sage [2023/07/06(木) 21:07:53.32 ID:a8qSLwwI0.net]
C++03 と C++11 の間で大きな溝があるからなぁ。
言語を詳しく知った上でなら C++03 を前提として書かれた本でも
役に立つところを拾って読むということも出来るけど、
不慣れな内には薦められないというのはわかる。



430 名前:デフォルトの名無しさん (ワッチョイ c67c-mdfO) mailto:sage [2023/07/06(木) 21:11:56.86 ID:s5S2CoPB0.net]
メジャーチェンジの上って何て言うんだろう
グレートチェンジ?

431 名前:デフォルトの名無しさん (ワッチョイ d701-kcaK) [2023/07/06(木) 21:51:28.48 ID:ALXC3HlV0.net]
>>420
ああ質問者と勘違いしてた
ただ魔術書とか痛いし不正確な表現はよろしくない(実際Qiitaとかで価値の無い出典も示さないクソ記事書いてる奴がよく使ってる)と言いたいだけ
あと>>409が初心者かどうかはわからんぞ

432 名前:デフォルトの名無しさん (ワッチョイ d701-kcaK) [2023/07/06(木) 21:53:09.37 ID:ALXC3HlV0.net]
もちろん組み込み学ぶのに適した本だとは思わんけど

433 名前:デフォルトの名無しさん (アウアウウー Sabb-hiKC) mailto:sage [2023/07/06(木) 23:37:01.42 ID:YLJUKdW5a.net]
>>422
新装開店と言いつつ中身は実質閉店詐欺sale

434 名前:デフォルトの名無しさん (ワッチョイ 7f28-iz2R) mailto:sage [2023/07/07(金) 00:10:58.87 ID:EP1fLvq90.net]
>>412
ほんそれ
積読のままになってる……

435 名前:デフォルトの名無しさん (ワッチョイ 06f2-2tOT) mailto:sage [2023/07/07(金) 00:21:21.09 ID:AhT1sfN50.net]
C++なんてもう20年くらいまともに使ってないんだけど大きく変わってるの?
普段使いするような部分で変わったのってどんなのあるの?

436 名前:デフォルトの名無しさん (オイコラミネオ MMe7-+Mc8) mailto:sage [2023/07/07(金) 00:32:21.86 ID:7ps2WMbUM.net]
new deleteしない
生のポインタを使わない
moveの意識

437 名前:デフォルトの名無しさん (ワッチョイ df01-Jyjt) mailto:sage [2023/07/07(金) 00:36:54.14 ID:2SE8uAkh0.net]
>>427
moveが一番大きいかな?
生ポインタは20年前でも使わない人は使わなかった

438 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 433e-hRAP) mailto:sage [2023/07/07(金) 01:56:31.07 ID:gGTaLgTI0.net]
俺もムーブ (というかその前提である右辺値参照も) の存在が大きな差だと思う。
今となっては C++03 では右辺値参照なしでやってたってのが信じられんくらいだ。

439 名前:デフォルトの名無しさん (ワッチョイ 434e-+Mc8) mailto:sage [2023/07/07(金) 13:56:40.22 ID:/sgbjnHO0.net]
右辺値参照とmoveでパラメータや戻り値などにclassのインスタンスを直接使いやすくなって、設計の自由度と安全性が格段に向上したとは思うけど、
その代わり、演算子のオーバーロード時のconstやexplicitの有無など、型推論の仕組みをきちんと理解して適切に記述しないとtemplateで訳わかんないエラーが出て、
初心者殺し度も格段に向上したよねw



440 名前:デフォルトの名無しさん (ワッチョイ 0e79-p0MK) mailto:sage [2023/07/07(金) 14:27:35.57 ID:tybFBPle0.net]
まさに今20年前のコードメンテしてるからnew delete使ってるよ
C++のランタイムすらリンクしてないからこれnewした時Win32APIの何が呼ばれてるんだろう?HeapAllocだったかな?

441 名前:デフォルトの名無しさん (スプッッ Sd22-yGZL) [2023/07/07(金) 14:38:08.14 ID:5UFmRPYBd.net]
スタティックライブラリがリンクされてるんでしょ
ランダム使用時と完全に同じとは行かないけどほぼ同等の処理のはずだけど

442 名前:デフォルトの名無しさん (スプッッ Sd22-yGZL) [2023/07/07(金) 14:38:34.18 ID:5UFmRPYBd.net]
ランダムじゃなくてランタイム

443 名前:デフォルトの名無しさん (ワッチョイ ffb9-BMDt) [2023/07/08(土) 09:03:38.78 ID:Iqj4gtss0.net]
g++でVLAを使ってるんですが、宣言時に初期化リスト使うのって未定義ですか?
公式のドキュメントを漁ってるんですが見当たらないので(英語苦手なので見落としてたらすみません)

444 名前:デフォルトの名無しさん (スップ Sd3f-hfg2) mailto:sage [2023/07/08(土) 09:37:22.13 ID:E0cUKLNxd.net]
C++にはそもそもVLAないぞ
非標準で実装されるケースはありうるけどね

445 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f73e-kkOg) mailto:sage [2023/07/08(土) 09:56:47.19 ID:svQTfB7/0.net]
>>435-436
C と同等の VLA を使えるように拡張されている旨はちゃんとドキュメントに書かれてる。
しかし C の VLA では初期化子を書けないことになってる。

446 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f73e-kkOg) mailto:sage [2023/07/08(土) 10:03:16.21 ID:svQTfB7/0.net]
GCC の具体的なドキュメントとしてはここ。
https://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html

> Variable-length automatic arrays are allowed in ISO C99, and as an extension GCC accepts them in C90 mode and in C++.

447 名前:デフォルトの名無しさん (ワッチョイ ffb9-BMDt) [2023/07/08(土) 10:10:11.44 ID:Iqj4gtss0.net]
>>436
はい、処理系依存ということは認識してます
>>437,438
ありがとうございます!

448 名前:デフォルトの名無しさん (ワッチョイ 9701-gR7n) mailto:sage [2023/07/08(土) 11:40:41.01 ID:hU6KuhT00.net]
コンテナ使えばVLAって最早必要ないような...

449 名前:デフォルトの名無しさん (オイコラミネオ MMeb-kkOg) mailto:sage [2023/07/08(土) 12:00:36.50 ID:p+sO9/0DM.net]
数年前にc++でありながらvectorすらない実装はあったけど



450 名前:デフォルトの名無しさん (スップ Sd3f-hfg2) mailto:sage [2023/07/08(土) 13:06:37.75 ID:E0cUKLNxd.net]
>>440
禿同

451 名前:デフォルトの名無しさん (ササクッテロラ Sp0b-/+4S) [2023/07/08(土) 15:36:54.89 ID:lxagCGE0p.net]
CのVLAってスタック使われることもあるんじゃなかったっけか

452 名前:デフォルトの名無しさん (ラクッペペ MM8f-VHD8) mailto:sage [2023/07/08(土) 15:51:02.79 ID:Wmg0D33kM.net]
コンパイラによる

453 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f73e-kkOg) mailto:sage [2023/07/08(土) 18:03:19.11 ID:svQTfB7/0.net]
どうしても VLA が必要だとしたら
そもそもヒープアロケーションのコードを書いてるときとか、
変則的なアーキテクチャで仕方がないとか、
C++ の言語機能が完全には使えない状況かな。

あるいはヒープアロケーションのコストを許容できないほど速度的に厳しいとか。

454 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f73e-kkOg) mailto:sage [2023/07/08(土) 20:31:31.43 ID:svQTfB7/0.net]
話をぶった切る上に去年の話でアレなんだがこの件。
https://mevius.5ch.net/test/read.cgi/tech/1653135809/734
なんの気なしにログを見返してて思い出した。
unexec だ。

455 名前:デフォルトの名無しさん (ワッチョイ ff7c-DxV6) mailto:sage [2023/07/08(土) 20:45:51.68 ID:wtJKE3gc0.net]
もうアセンブラかVerilog使えって感じだな

456 名前:デフォルトの名無しさん (ワッチョイ 9ff0-STDj) mailto:sage [2023/07/08(土) 21:25:24.78 ID:lX93SXsZ0.net]
世の中には動的確保のコスト計算できない人が多すぎるんだ

457 名前:デフォルトの名無しさん (ワッチョイ bf79-CBkq) mailto:sage [2023/07/08(土) 22:15:45.40 ID:gvv7KDv40.net]
>>433
ちゃうちゃう、 new deleteのソースアセンブラに吐かせたの見たらGlobalAlloc GlobalFree使ってるわ
さすがにGMEM_FIXEDだったけど

458 名前:デフォルトの名無しさん (ワッチョイ d7f0-7EMH) mailto:sage [2023/07/09(日) 04:19:53.74 ID:MkrAlSpi0.net]
Windowsのメモリアロケータってクソだよな

459 名前:デフォルトの名無しさん (ラクッペペ MM8f-VHD8) mailto:sage [2023/07/09(日) 05:38:04.63 ID:4tVwl4EYM.net]
せやろか



460 名前:デフォルトの名無しさん (ワッチョイ ff7c-DxV6) mailto:sage [2023/07/09(日) 05:40:32.30 ID:DZU7rHSU0.net]
Win16からの色々を引きずってるってこと?

461 名前:デフォルトの名無しさん (ラクッペペ MM8f-VHD8) mailto:sage [2023/07/09(日) 05:53:12.10 ID:xZgYfcZXM.net]
引きずっているのはLocalAlloc

462 名前:デフォルトの名無しさん (オイコラミネオ MMeb-STDj) mailto:sage [2023/07/09(日) 07:55:31.77 ID:wAJ5czLTM.net]
なんとなくメジャーなものをけなして気持ちがよくなってるんだろ
楽だよなそういうので気持ちよくなれる人は

463 名前:デフォルトの名無しさん (ワッチョイ d7f0-7EMH) mailto:sage [2023/07/09(日) 09:27:34.88 ID:MkrAlSpi0.net]
メジャーだからって完璧に出来ているとは思わない方がいい

464 名前:デフォルトの名無しさん (ワッチョイ ff7c-DxV6) mailto:sage [2023/07/09(日) 09:33:30.46 ID:DZU7rHSU0.net]
反体制派な俺すげーだろって痛すぎる厨二病は昔からいるよね

465 名前:デフォルトの名無しさん (ワッチョイ f74e-STDj) mailto:sage [2023/07/09(日) 09:36:52.25 ID:IdmutbDk0.net]
具体的にどういう場面で問題があるのか、可能ならサンプルコードなどを添えて指摘してくれないと、同意しようがないよね

466 名前:デフォルトの名無しさん (ワッチョイ d7c0-SCup) mailto:sage [2023/07/09(日) 10:14:00.41 ID:+WiQ27SB0.net]
そりゃ様々な用途や優先すべき軸がある中で汎用的にあらゆる用途に高性能であれと言われたら
中庸にするか尖らせて特定用途で使い物にならなくなるかの二択になるよね

467 名前:デフォルトの名無しさん (ワッチョイ 9728-0TTi) mailto:sage [2023/07/09(日) 10:40:38.50 ID:ihdHNtRI0.net]
EXEで確保したしたメモリーブロックをdllで解放するときに(そんなことをするなというのはさておき
むしろmalloc()だとリンクするCRTのバージョン相違でトラブルになりかねないから
OSがmalloc()的なことまでしてくれるのは良い事な希ガス知らんけど

468 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f73e-kkOg) mailto:sage [2023/07/09(日) 10:57:36.03 ID:6ZzBc/+b0.net]
C++ なら operator new のオーバーロードなんかも出来るわけだし
コンテナ類もアロケータを差し込むことが出来るわけで
メモリアロケーションに関して過剰なほどのカスタマイズ性がある。

もちろん提供されるアロケータで性能が足りるならそれに越したことは無いが、
足りないときでもなんとかできる可能性があるってのは C++ のいいところだよ。

469 名前:デフォルトの名無しさん (ワッチョイ 9728-0TTi) mailto:sage [2023/07/09(日) 11:09:45.90 ID:ihdHNtRI0.net]
前なんかstd::vector<T>をdllに渡したら(コピー渡ししたら)クラッシュするトラブルに遭遇して
原因はC++のランタイムのバージョン相違やったorz



470 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f73e-kkOg) mailto:sage [2023/07/09(日) 11:44:01.32 ID:6ZzBc/+b0.net]
DLL を跨ぐときは生配列が結局は楽かなぁ。
他環境に移植する予定がないなら COM の流儀に従って SAFEARRAY とか。

471 名前:デフォルトの名無しさん (ワッチョイ d701-/+4S) [2023/07/09(日) 21:30:46.83 ID:Y+7J8yUt0.net]
アロケータを指定するときってのは性能どうこうではなく環境や設計上の理由が主だよ
それよりpolymorphic_allocatorはなんでコンテナのコピー時にget_default_resourceを返すんだマジで

472 名前:デフォルトの名無しさん (ワッチョイ 9701-gR7n) mailto:sage [2023/07/09(日) 21:44:31.99 ID:r53YpIy/0.net]
10年くらい前だけど6コア(12スレッド) x 双頭のマシンで
Debianのlibcのmallocをjemallocに置き換えたら
かなり速くなって感動したなぁ
いまのglibcのmallocはどうなんだろ?

473 名前:デフォルトの名無しさん (ワッチョイ 82f0-rqn1) mailto:sage [2023/07/15(土) 10:34:20.34 ID:/MZbR2lO0.net]
最近クラス作るのが面倒な時thread_localのstd::vectorよく使うんだけど
何か問題起きたりする?

474 名前:デフォルトの名無しさん (ワッチョイ e2f0-WYHp) mailto:sage [2023/07/15(土) 11:05:18.52 ID:08dxROCJ0.net]
問題を検証するコードを書いて実験してみれよ
一日で組めるだろ

475 名前:デフォルトの名無しさん (テテンテンテン MM34-Dvnh) mailto:sage [2023/07/15(土) 12:21:20.90 ID:lF+Fe8GnM.net]
>>466
それ悪魔の証明

476 名前:デフォルトの名無しさん (ワッチョイ 5cfb-cHdk) mailto:sage [2023/07/15(土) 14:11:00.47 ID:bqZq+Kwu0.net]
1日で組んだコードも合わせて技術ブログに記事を書くところまでがセット

477 名前:デフォルトの名無しさん (ワッチョイ 3279-EJzg) mailto:sage [2023/07/15(土) 14:24:56.68 ID:V/XrAlYW0.net]
よく使う割に問題が起きてないならそれは問題ないのでは
証明終わり

478 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bd32-2eqx) mailto:sage [2023/07/15(土) 14:38:32.48 ID:e8BGem9r0.net]
>>465
std::vector 型の変数がスレッドローカルとして定義されること自体は問題を引き起こさない。
スレッドローカルな変数はスレッドの生成・解放と同じタイミングで生成・解放される普通の変数。
それで問題が起こるなら単にプログラムのロジックに誤りがあるってだけ。

479 名前:デフォルトの名無しさん (ワッチョイ 915f-9/0y) mailto:sage [2023/07/15(土) 15:24:04.02 ID:8R7I+TSs0.net]
「クラス作るのが面倒な時」と「thread_localのstd::vector」の関連が見えないな。



480 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bd32-2eqx) mailto:sage [2023/07/15(土) 16:45:55.27 ID:e8BGem9r0.net]
>>741
std::thread は関数オブジェクトを受け取ることが出来る。
スレッドに固有、かつそのスレッド全体で使うようなデータは
その関数オブジェクトが所有するのが常道のひとつ。
しかしスレッドローカル変数もスレッドの寿命と一致する形でのデータ置き場になる。
そういう意味で代替品であると見做すことができる。

という話だと私は解釈したが、 std::vector がどこから出てきたかはわからん。

481 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9832-2eqx) [2023/07/15(土) 19:51:59.74 ID:jZQsWptc0.net]
コードで言うなら
https://wandbox.org/permlink/oZ8EAGChqPtobFuY
みたいにするのは面倒だから
https://wandbox.org/permlink/90mvVtrKUca4Iyic
でいいよね?

みたいな話だと思った。

482 名前:デフォルトの名無しさん (オイコラミネオ MM71-9/0y) mailto:sage [2023/07/15(土) 20:03:36.74 ID:UiYhW/dJM.net]
そもそもの知識がないからpythonみたいにリストにぶち込んで
インデックスですべてやろうとかそんな話かとオモタ

python界はすごいぞ
クラスに変数など作らずすべて辞書にぶち込んで使ってたりする

483 名前:デフォルトの名無しさん (オイコラミネオ MM71-9/0y) mailto:sage [2023/07/15(土) 20:19:33.71 ID:UiYhW/dJM.net]
a = {}
a['taro'] = {"name":"太郎","age":25, "sex":"男"}
a['hanako'] = {"name":"花子","age":18 ,six":"六"}

484 名前:デフォルトの名無しさん (ワッチョイ e2f0-WYHp) mailto:sage [2023/07/15(土) 20:24:16.88 ID:08dxROCJ0.net]
変数がすべてバリアントだからなw

485 名前:デフォルトの名無しさん (オイコラミネオ MM71-9/0y) mailto:sage [2023/07/15(土) 20:27:48.20 ID:UiYhW/dJM.net]
if a['taro']["age"] ==a['hanako']["age"]:

これって全然コード補完効かないから脳が死にかける

486 名前:デフォルトの名無しさん (オイコラミネオ MM71-9/0y) mailto:sage [2023/07/15(土) 20:32:21.17 ID:UiYhW/dJM.net]
name="name"
age="age"
sex="sex"
six="six"

とかしたらいいんか
if a['taro'][age] ==a['hanako'][age]:
嫌すぎる

487 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 163e-MI76) mailto:sage [2023/07/15(土) 20:42:45.70 ID:oCSaktaG0.net]
プログラマではない人間もユーザー層として存在するし
Python はそういう人間にもリーチしてしまったから
割合としてワヤなものもできやすいというのは理解できる。

488 名前:デフォルトの名無しさん (オイコラミネオ MM71-9/0y) mailto:sage [2023/07/15(土) 20:45:00.27 ID:UiYhW/dJM.net]
a['taro'] = {"name":"太郎","age":25, "sex":"男"}
だけ見るとjsonなのかとも思える

489 名前:デフォルトの名無しさん (JP 0H8a-PPvg) [2023/07/15(土) 21:13:09.66 ID:2P0YU21lH.net]
あるクラスにあるクラスのコレクションを抱かさせてるなんて良くあると思うけど
その際に外部からそのコレクションを参照したい場合、どうするのが定石なの?
class Datas
{private:std::vector<Data> _datas;};

publicにするとか、std::vector<Data>::iteratorをpublicにするとか
const Data& operator[](int index)をpublicにするとかいろいろあると思うけど



490 名前:デフォルトの名無しさん (オイコラミネオ MM71-9/0y) mailto:sage [2023/07/15(土) 21:18:25.83 ID:UiYhW/dJM.net]
ファーストクラスコレクションの話?

491 名前:デフォルトの名無しさん (ワッチョイ df01-L4gQ) mailto:sage [2023/07/15(土) 21:22:12.84 ID:wfhnDtnz0.net]
単数: datum
複数: data

492 名前:デフォルトの名無しさん (オイコラミネオ MM71-9/0y) mailto:sage [2023/07/15(土) 21:24:39.81 ID:UiYhW/dJM.net]
今日本屋で○○データムと言う本があった
DATAの単数形がdatumと言うことにこだわる大人って理系だけなんだろうなと感じたらこれだよ
即出て来た

493 名前:デフォルトの名無しさん (ワッチョイ df01-L4gQ) mailto:sage [2023/07/15(土) 21:35:08.39 ID:wfhnDtnz0.net]
datumに拘ってるのではなくdatasなんて言葉はない

494 名前:デフォルトの名無しさん (JP 0H8a-PPvg) [2023/07/15(土) 21:43:33.89 ID:2P0YU21lH.net]
そこか、英単語をぐぐったら解決しました。
ありがとうございました

495 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 163e-MI76) mailto:sage [2023/07/15(土) 21:58:55.40 ID:oCSaktaG0.net]
>>481
場合による。

見せる相手が最初から限定的であるような場合はフレンドを宣言すればいい。
コンテナ系クラスとかは内部的にはたぶんノードを表すクラスとか
も使ってると思うけどそういう感じで密接に関連がありつつ
他では使う可能性がないような強い関係性がある場合はフレンドにする。

データを保持するためだけの汎用クラスとして定義するならデータメンバは public にしてもかまわない。
std::pair とかはそうなってる。

もうちょっと疎結合にしたいときなら許したい操作だけをpublic なメンバ関数として公開すると思う。

既存のクラスを使いつつ外部に公開するのはサブセットにしたいという場合なら
プライベート継承した上で公開したいメンバだけ using するという方法も取れる。

#include <iostream>
#include <vector>

struct Data : private std::vector<int> {
using std::vector<int>::vector;
using std::vector<int>::operator[];
using std::vector<int>::begin;
using std::vector<int>::end;
};

int main(void) {
Data foo = {1, 2, 3};
for (int x : foo) {
std::cout << x << std::endl;
}
}

496 名前:デフォルトの名無しさん (ワッチョイ df01-L4gQ) mailto:sage [2023/07/15(土) 22:04:51.15 ID:wfhnDtnz0.net]
>>481
privateメンバなのだから
できるだけ外部からそのコレクションを参照しないように設計するべきだと思うよ
どうしてもってならiteratorではなくconst_iteratorにするとか
あなたが書いてるようにconst Data&を返すaccessorを実装するとか

497 名前:デフォルトの名無しさん (ワッチョイ 847c-zIhc) mailto:sage [2023/07/15(土) 22:07:48.52 ID:BdK15TwX0.net]
"HogehogeData"という名前で定義されたプログラム上の存在があったら
その複数形はHogehogeDatasと呼ぶしかない
気持ち悪くてもしょうがないんだよ

498 名前:デフォルトの名無しさん (オイコラミネオ MM71-9/0y) mailto:sage [2023/07/15(土) 22:15:14.37 ID:UiYhW/dJM.net]
ファーストクラスコレクションにしないならその実装は不要だ
基本的に存在意味がない

499 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 163e-MI76) mailto:sage [2023/07/15(土) 22:20:38.51 ID:oCSaktaG0.net]
ワイはプログラミング言語 Scheme を使ってるんやが Scheme の仕様には datum という語が出てくる。
シリアライズの単位に関する概念なのでリストひとつも datum と (つまり単数形で) 呼ばれるのが
ちょっとモニョッとする。



500 名前:デフォルトの名無しさん (JP 0H8a-PPvg) [2023/07/16(日) 08:28:58.24 ID:PzNRrLhAH.net]
どうでもいいことを突っ込んでる人いますけど
Datas=>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Data=>aaaaaaaaaaaaaaaa
と置換してください

501 名前:デフォルトの名無しさん (アウアウウー Sa3a-ZX0e) [2023/07/16(日) 09:51:34.88 ID:Po24/3Vva.net]
hogehogetoyukainanakamatati
で解決

502 名前:デフォルトの名無しさん (ワッチョイ 3279-EJzg) mailto:sage [2023/07/16(日) 16:16:15.89 ID:z7qY/utw0.net]
powershellはJSONやxmlをその構造のまま扱えたりオブジェクト(PSCustomObject)にも変換できてpythonなんかより小奇麗に書けますよっと
>>478だとif ($a.tsaro.age -eq $a.hanako.age) { ... という具合

503 名前:デフォルトの名無しさん (ワッチョイ 3279-EJzg) mailto:sage [2023/07/16(日) 16:20:50.17 ID:z7qY/utw0.net]
powershellはC#とシームレスに連携する手段もあってpowershellで苦手な再帰処理とかをC#コードに逃がしてpowershell機能を使いたい部分はActionやFuncから呼び出す事もできますよっと

504 名前:デフォルトの名無しさん (ワッチョイ 3279-EJzg) mailto:sage [2023/07/16(日) 16:21:58.50 ID:z7qY/utw0.net]
よく見たらここC++スレだね
俺の事は忘れてください

505 名前:デフォルトの名無しさん (ワッチョイ 0928-rP6O) mailto:sage [2023/07/17(月) 18:33:54.32 ID:mG7BHGLy0.net]
質問なのですがclass Datasというクラスがあってstd:::vector<Datas> vec((size_t)100); であるときに
vec[k]の場所にn個の場所を空けたい(値は初期化済Datasオブジェクトなら何でも良い)場合どう書くべき?
やっぱ手動でsz = vec.size(); vec.resize(sz + n);して既存要素vec[k..sz-1]を後ろ(vec[k+n..])にコピーする --- (1)
のが最速?

仮にstd::vector<T>::insertを使うと
 Datas x;   // (A)
 vec.insert(std::next(vec.begin(), k), n, x); // (B)
になると思うのですが、なんか(A)で不必要にオブジェクトを1個構築せねばならないのと
(B)で多分デフォルトコンストラクタではなくコピコンがn回呼ばれるのちょっち嫌
(なぜなら(1)のコピーとn個分の場所の確保に加えて、xをn回コピーするという余デフォルト構築よりも遅そうな処理をするから

506 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 163e-MI76) mailto:sage [2023/07/17(月) 20:23:35.30 ID:YifLUjyU0.net]
>>497
resize だって再配置 (に付随するコピー) の可能性はあるんで
どっちでも大差ないんじゃないかな。
楽だと思うほうで書けばいいと思うよ。

507 名前:デフォルトの名無しさん (ワッチョイ 915f-9/0y) mailto:sage [2023/07/17(月) 21:47:09.31 ID:I9Lq0d6Q0.net]
>>497
無駄なデフォルトコンストラクタやコピーを削って極力ムーブで済ませようと思ったら
sz, k, n の大小関係ごとに場合分けして move_iterator 経由の insert とか使い分ければ
いけそうだけど、面倒なわりに見合うほど効率改善しそうな気はしない。

508 名前:デフォルトの名無しさん (ワッチョイ 82f0-rqn1) mailto:sage [2023/07/17(月) 22:08:16.87 ID:kACYNrgv0.net]
書き込みはそこまで遅くないから労力に見合わないだろうね

509 名前:デフォルトの名無しさん (スッップ Sd94-v8RM) mailto:sage [2023/07/17(月) 22:54:28.45 ID:vqJJKRdWd.net]
速度を気にするなら実測しないと始まらないよ。



510 名前:デフォルトの名無しさん (ワッチョイ ae7a-CYkg) mailto:sage [2023/07/17(月) 23:18:54.88 ID:vGotTgNV0.net]
リアルタイムOSのタスクのように無限ループが前提のとき

TASK Task1() {
while(1) {
Obj1 obj = Device::GetObj();
:
:
}
のようにobjを使う場合に、GetObjが内部でnewされていると、この作りではいつかメモリ不足になってしまいます。

そうなると自作でないクラスのメソッドは使う前にnewの有無をすべて調べなければならなくなるように思います。
実際はそんな不条理はないはずで、このような問題はどう対処するのがいいですか。

511 名前:デフォルトの名無しさん (ワッチョイ df01-L4gQ) mailto:sage [2023/07/17(月) 23:25:49. ]
[ここ壊れてます]

512 名前:78 ID:CT+u9aWW0.net mailto: >>502
自作でないクラスのメソッドは使う前には
メソッドが消費するメモリを見積もらなければなりません
不条理でも何でも無い
[]
[ここ壊れてます]

513 名前:デフォルトの名無しさん (ワッチョイ 0928-rP6O) mailto:sage [2023/07/17(月) 23:34:05.22 ID:mG7BHGLy0.net]
わかりました

514 名前:デフォルトの名無しさん (ワッチョイ 82f0-rqn1) mailto:sage [2023/07/17(月) 23:42:05.60 ID:kACYNrgv0.net]
自作でないクラスでも使う関数がメモリ動的確保するかどうか普通は確認するぞ

515 名前:デフォルトの名無しさん (ワッチョイ 0928-rP6O) mailto:sage [2023/07/17(月) 23:46:35.71 ID:mG7BHGLy0.net]
>>502
>GetObjが内部でnewされていると、この作りではいつかメモリ不足になってしまいます。
この懸念は普通の作りなら基本的に無用。基本的に問題無い

(1) Obj1という型がポインタやハンドルではなくクラスの場合:
objはwhile(1) { }のブロックの中で構築されるので
ループの終わりでデストラクタが呼ばれる(破棄される)から、
Device::GetObj()が真っ当な作りならnewしたポインタをObj1のインスタンスobjに引き渡し、
Obj1クラスが真っ当な作りならobjが破棄されるときに引き渡されたポインタをdeleteする(ように作る
からダングリングポインタは生じない(ようにできる

(2) Obj1という型がポインタやハンドルの場合
確保したポインタやハンドルはいずれクローズせねばならない。
ループが次の繰り返しに入る前に確実にクローズすればよい

516 名前:デフォルトの名無しさん (ワッチョイ 0928-rP6O) mailto:sage [2023/07/17(月) 23:47:03.13 ID:mG7BHGLy0.net]
基本的に、というのは(2)のケースで例外が生じたときクローズされずに抜けてしまう危険性があるのと、
(1)のケースにおいてもobj1の構築中に例外が生じた場合はきちんとデストラクトされない危険性がある。
Obj1のメンバがnewされるべき生ポインタの場合はこれは対処不能。生ポはやめてスマポにすればおk

詳しい話ははちみつ餃子氏に聞くと良い(マテ

517 名前:デフォルトの名無しさん (ワッチョイ 0928-rP6O) mailto:sage [2023/07/17(月) 23:58:52.90 ID:mG7BHGLy0.net]
訂正orz、
誤: ループの終わりでデストラクタが呼ばれる(破棄される)から、(>>506
正: ループが次の繰り返しに入る前かループを抜ける際にデストラクタが呼ばれる(破棄される)から

518 名前:デフォルトの名無しさん (ワッチョイ 847c-8c0A) mailto:sage [2023/07/18(火) 00:04:09.43 ID:yoLqrsJ/0.net]
>>502
必要ならそのGetObj()とやらのドキュメントにDevice::ReleaseXyz()とかDevice::ReleaseObj(obj1)とかobj1.release()とかを後で呼ぶように指示されてるはず
それを怠ってリークさせたならお前がタコ
そういう指示がないくせに勝手にリークするならそのライブラリがタコ
そんだけの話

519 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 163e-MI76) mailto:sage [2023/07/18(火) 00:16:34.06 ID://OyAtPF0.net]
そして使い方がドキュメント化されてないなら組織として問題がある。
が、そういう話はマ板で。



520 名前:502 (ワッチョイ ae7a-CYkg) mailto:sage [2023/07/18(火) 00:38:24.79 ID:ibbV/iYr0.net]
皆さんありがとう。
>>506
ブロックスコープは知りつつも、ループのブロックの場合はループ中は寿命が継続すると思っていました。
ループ時に毎度後始末されるなら安心です。

521 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 163e-MI76) mailto:sage [2023/07/18(火) 01:05:37.37 ID://OyAtPF0.net]
>>511
根拠。
https://timsong-cpp.github.io/cppwp/n3337/basic.stc.auto

522 名前:デフォルトの名無しさん (ワッチョイ 3279-EJzg) mailto:sage [2023/07/18(火) 02:17:55.25 ID:BpIlHiPB0.net]
組み込み用途のライブラリで毎回ループ終端でデストラクタが呼ばれるように普通は設計しないから大丈夫
疑わしいならベンダーに問い合わせるかライブラリのソースを読めば解決

523 名前:デフォルトの名無しさん (ワッチョイ b632-bpoS) mailto:sage [2023/07/21(金) 16:52:12.91 ID:PleiVI860.net]
ちょいとコイツを見て欲しい。MSVC 14.36.32532でC++17かつセキュリティチェック無効(/GS-)

https://i.imgur.com/XGfeBgH.png

最小コードで再現するために、コマンドライン文字列を変な形式として扱ってるのは置いといて
変数rSizeが、引数argcのスタック領域(ebp+8)に割り当てられるんだけど、こんな最適化ある?
確かにargcは用済みだが、レジスタやローカルスタックではなくcdeclのconst引数にストアする?

524 名前:デフォルトの名無しさん (ワッチョイ 5cfb-MzNP) mailto:sage [2023/07/21(金) 16:56:19.42 ID:LKM5BaGE0.net]
そんなことよりbooost向けの技術書について教えてくれ

525 名前:蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd94-5KMR) mailto:sage [2023/07/21(金) 18:04:39.14 ID:GfD0zzOHd.net]
そんな最適化あるよ。長期に渡って解析やってたらときどき出くわすよ。

526 名前:デフォルトの名無しさん (ワッチョイ 82f0-rqn1) mailto:sage [2023/07/21(金) 18:26:11.73 ID:eD9pKuA20.net]
ADLについて初めて知ったのがboost::mathだった懐かしい

527 名前:デフォルトの名無しさん (ワッチョイ 847c-8c0A) mailto:sage [2023/07/21(金) 20:33:22.11 ID:9+qEAU5C0.net]
観測可能な範囲で規格通りの挙動をする限りは、コンパイラ様はどんなバイナリを吐こうとどんな風にメモリやレジスタを扱おうと自由なのだ

528 名前:デフォルトの名無しさん (ワッチョイ a728-Nt2/) mailto:sage [2023/07/22(土) 11:54:04.91 ID:1sMnnOgP0.net]
if文の条件式のところにがっつり文が書かれてゐる
最後の式の値が結果、とかますますPerl的世界に……
そのうち値を返す関数もreturn書かなくて良くなったりして……

529 名前:デフォルトの名無しさん (ワッチョイ 473e-8suU) mailto:sage [2023/07/22(土) 12:15:40.55 ID:QLIAp4G50.net]
>>519
任意の文を書けるわけではなく単純宣言に限られる。



530 名前:デフォルトの名無しさん (ワッチョイ 0710-XcQ/) mailto:sage [2023/07/22(土) 13:25:58.60 ID:uVFJqD+w0.net]
うん。なんか「見てくれ」とか言うから見たけどサンプルとしてもしょーもないコードだなと思って
一度コメントしかけてやめた
windowsのxx仕様 独自mainとか

531 名前:デフォルトの名無しさん (ワッチョイ 0710-XcQ/) mailto:sage [2023/07/22(土) 13:27:45.64 ID:uVFJqD+w0.net]
自分が本当に答えを知りたいんじゃなくて、フレームというか、言い争いを起こして面白がりたいのかな、とか

532 名前:デフォルトの名無しさん (ワッチョイ a728-Nt2/) mailto:sage [2023/07/22(土) 15:21:09.39 ID:1sMnnOgP0.net]
やっぱ
void foo() {
 for (int i = 0; i < 100; i++) { .... }
 for (int ii = 0; ii < 100; ii++) { ... }
 ...
 for (int iiiiiiiiiiiiiiiiiiii = 0; iiiiiiiiiiiiiiiiiiii < 100; iiiiiiiiiiiiiiiiiiii++) { ... }
}
とかあってどのfor文でもループ変数のアドレスをとるような式が書かれていなかったら
ローカル変数i、ii、...、iiiiiiiiiiiiiiiiiiが違うアドレスでなければならない理由は何も無いから
同じアドレスに割り当てになる可能性は高いと思う
でデータフロー解析するステップではもはやブロックの構造とか渡ってないから
そういう芸当をする同じロジックが>>514のようなことも当然するキモス
※ 個人の感想です

533 名前:デフォルトの名無しさん (ワッチョイ a728-Nt2/) mailto:sage [2023/07/22(土) 15:31:39.00 ID:1sMnnOgP0.net]
ていうか補足、
void bar(int& x);
というのがあって
for (int i = 0; i < 100; i++) { bar(i); }
for (int ii = 0; ii < 100; ii++) { bar(ii); }
for (int iiiiiiiiiiiiiiiiiiii = 0; iiiiiiiiiiiiiiiiiiii < 100; ii++) { bar(iiiiiiiiiiiiiiiiiiii); }
だった場合はこれは明示的にループ変数のアドレスをとっているわけではないが、
アドレスをとっているのと同じことなので
i、ii、...、iiiiiiiiiiiiiiiiii同じアドレスに割り当てになる可能性は無くなると思う
よかったなあ>>514

534 名前:デフォルトの名無しさん (ワッチョイ a728-Nt2/) mailto:sage [2023/07/22(土) 15:33:20.61 ID:1sMnnOgP0.net]
しかしわからんのは
void bar(const int& x); // const !
だった場合は
for (int i = 0; i < 100; i++) { bar(i); }
for (int ii = 0; ii < 100; ii++) { bar(ii); }
for (int iiiiiiiiiiiiiiiiiiii = 0; iiiiiiiiiiiiiiiiiiii < 100; ii++) { bar(iiiiiiiiiiiiiiiiiiii); }
だった場合はi、ii、...、iiiiiiiiiiiiiiiiiiが同じアドレスに割り当てられ得るのかどうかわわからん……

535 名前:デフォルトの名無しさん (ワッチョイ a728-Nt2/) mailto:sage [2023/07/22(土) 15:41:23.03 ID:1sMnnOgP0.net]
ゴメ自己解決しますたorz

536 名前:デフォルトの名無しさん (ワッチョイ 5f32-vVS+) mailto:sage [2023/07/22(土) 17:02:04.17 ID:lBkog51W0.net]
スコープを抜けたローカル変数であれば順当な割り当てに思えるのだけど
>>514が差し支えるのはコードインジェクションで引数を使い回すとかの横着
さりとてトップレベルのconstやvolatileは関数シグネチャに現れない訳で
cdeclであろうと引数の寿命は関数を抜けるまでだろうから極めて妥当なのか?

14.27.29110ではやらず、スタック量は逆に増え…増えたから節約してるのか
rbp+なら…いやそれも引数用スタック。C++20でvolatile非推奨化は有ったが
volatile引数への代入も引数スタックへの書き込みと思っちゃならんのかな

537 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 473e-pcwf) mailto:sage [2023/07/22(土) 18:07:10.54 ID:QLIAp4G50.net]
>>527
言いたいことがあるなら独り言を書くんじゃなくて説明しろ。

538 名前:デフォルトの名無しさん (ワッチョイ bf42-vVS+) mailto:sage [2023/07/22(土) 18:59:44.13 ID:h3Z+iL0O0.net]
>>528
どの部分ですか?rbp+のくだりならx64であればシャドウストアを呼び出し元が確保する事になっているので
引数へ代入以外でもrbp+に書き込まれるが、それにしたって引数の退避以外で行われるかという意味だけど

またこの最適化が適正だとすれば引数へconstを指定しても
それは引数の格納元が書き換わらない事を意味しない訳で
volatileにしても引数スタックと同一視は出来ないのかなと

539 名前:デフォルトの名無しさん (テテンテンテン MM8f-TfYz) mailto:sage [2023/07/22(土) 19:01:30.20 ID:gun3EJ7PM.net]
>>519
resultは欲しいね。



540 名前:デフォルトの名無しさん (ワッチョイ 875f-UuLb) mailto:sage [2023/07/22(土) 19:08:50.81 ID:nQhdUCcc0.net]
とりあえずcallee-savedとcaller-savedあたりでググってこい

541 名前:デフォルトの名無しさん (ワッチョイ 473e-8suU) mailto:sage [2023/07/22(土) 19:21:42.17 ID:QLIAp4G50.net]
>>529
技術的な意味合いじゃなくてね、
それをのべてどうしたいのってことだよ。
疑問なのか?主張

542 名前:なのか?感想なのか? []
[ここ壊れてます]

543 名前:デフォルトの名無しさん (ワッチョイ bf79-mRrB) mailto:sage [2023/07/22(土) 23:38:20.21 ID:a8PwsTyx0.net]
これだけは言っておく
文章が下手糞はプログラミングも下手糞ってことだ

544 名前:デフォルトの名無しさん (ワッチョイ dff0-lmMR) mailto:sage [2023/07/22(土) 23:53:10.56 ID:31w2/Kbx0.net]
久々にヤバい変数名を見た
>>525
このクソみたいな変数名はおまえが考えたのか

545 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 473e-pcwf) mailto:sage [2023/07/23(日) 01:23:57.19 ID:3Ckw8KVE0.net]
>>533
母語で説明できないようならプログラマには向いてないとかいう意味のことをダイクストラが言ってたな。

普通の人は母語が最も得意なはずだからそれで表現できないのに
プログラミング言語でなら表現できるってことはないのは道理というものだ。

546 名前:デフォルトの名無しさん (スップ Sd7f-d+yq) mailto:sage [2023/07/23(日) 07:00:15.87 ID:TPcdF2Bwd.net]
二、三個違えて大域変数切って火に油注ぎたくなるやつ

547 名前:デフォルトの名無しさん (ワッチョイ dff0-FYg4) mailto:sage [2023/07/24(月) 22:04:55.27 ID:7/Qlh6bu0.net]
さんざん言われてるけど質問文きちんと書ける人はChatGPTで自己完結しちゃうんだよな

548 名前:デフォルトの名無しさん (ワッチョイ a728-Nt2/) mailto:sage [2023/07/25(火) 00:09:45.61 ID:ngER/Udx0.net]
ゴメス>>524はリリースビルドしたら全部同じアドレスになったわ;;;
やっぱ握った変数なりオブジェクトなりのアドレスを
その変数なりオブジェクトなりの寿命が尽きた後に
使おうとするのは未定義動作であることだなあ、

549 名前:デフォルトの名無しさん mailto:sage [2023/07/25(火) 03:57:53.89 ID:YH2RVZct0.net]
俺には>>524がなんでそんな結論になるのか分からんのだが
for内で i を宣言してるんだからfor のスコープを持つローカル変数だろ?
int が4バイトの前提で言えば for 突入時に int i をスタック上に確保(スタックポインタを4バイトマイナス)して for 離脱時に int i の領域を解放(スタックポインタを4バイトプラス)する
この繰り返しなんだから int i や int ii のアドレスが同じになることに疑問を挟む余地がないと思うんだけど
何がおかしいのか俺にはさっぱり分からん



550 名前:デフォルトの名無しさん (アウアウウー Sa2b-tGd7) mailto:sage [2023/07/25(火) 09:19:21.66 ID:k8WJtY+Ua.net]
for の i がローカルになったのは最近
グローバルに盛れるコンパイラ環境は巷に溢れていた

551 名前:デフォルトの名無しさん (アウアウウー Sa2b-tGd7) [2023/07/25(火) 09:19:57.50 ID:k8WJtY+Ua.net]
盛れるじゃなかった
漏れる

552 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 473e-pcwf) mailto:sage [2023/07/25(火) 11:10:04.37 ID:akUn9hsS0.net]
>>540
最近っていつ頃のことだ?

553 名前:デフォルトの名無しさん (ワッチョイ dff0-POqA) mailto:sage [2023/07/25(火) 11:32:44.39 ID:YIf2r9Dz0.net]
#define for if(0) else for

554 名前:デフォルトの名無しさん (ワッチョイ dff0-POqA) mailto:sage [2023/07/25(火) 11:34:38.41 ID:YIf2r9Dz0.net]
間違えた
#define for if(0) {} else for
これでゾンビiよく消してた

555 名前:デフォルトの名無しさん (ワッチョイ 0710-PxlL) mailto:sage [2023/07/25(火) 12:01:03.86 ID:RkQ0FrMx0.net]
>>544
ごめん、まじめに教えて
これ何の意図?

これに意味がある具体的なコンパイラって何の何version?

556 名前:デフォルトの名無しさん (ワッチョイ dff0-POqA) mailto:sage [2023/07/25(火) 12:08:13.03 ID:YIf2r9Dz0.net]
VC++6.0という大昔にデファクトスタンダードだったコンパイラだ

557 名前:デフォルトの名無しさん (ワッチョイ 0710-PxlL) mailto:sage [2023/07/25(火) 12:10:00.81 ID:RkQ0FrMx0.net]
>>546
ほんとにごめん、何の意味があるの?

558 名前:デフォルトの名無しさん (ワッチョイ dff0-POqA) mailto:sage [2023/07/25(火) 12:12:51.37 ID:YIf2r9Dz0.net]
例外飛ばすと自動変数の破棄全部ふっ飛ばして戻ってくる酷いポンコツだったな
よくこんなの皆つかってたなというかコレしかなかったからな

559 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 473e-pcwf) mailto:sage [2023/07/25(火) 12:13:49.52 ID:akUn9hsS0.net]
>>545
for の初期化節で変数宣言した場合にその外側のブロックがスコープになるコンパイラが存在し、
その対抗策としてこういうマクロを導入するという方法があったという話だろ。



560 名前:デフォルトの名無しさん (ワッチョイ dff0-POqA) mailto:sage [2023/07/25(火) 12:14:32.19 ID:YIf2r9Dz0.net]
>>547
意味がわからないなら知らなくていい
当時を知らないなら理解しようとするだけ無駄というもの

561 名前:デフォルトの名無しさん (ワッチョイ 0710-PxlL) mailto:sage [2023/07/25(火) 12:24:31.68 ID:RkQ0FrMx0.net]
>>549
ありがとう、そしてありがとう

>>548
VC6がポンコツは同意。
あのころMSはディンカムウェアからstd c,c++ ライブラリを買って導入してたけど、そもそもc++の仕様準拠がメチャクチャだったと認識してます
もうVC使わなくなって長いので気にしなくなった

562 名前:デフォルトの名無しさん (ワッチョイ 0710-PxlL) mailto:sage [2023/07/25(火) 12:39:41.95 ID:RkQ0FrMx0.net]
『for内スコープ』の仕様にvc6は未対応だ、という事実を認識し
責任者がvc6を選択した案件で納品する

なら、その条件に従って書く(つまらないつまづきに繋がる書き方を避ける)のが他者に対して親切な技術者だと思うが

「そういう話はマ板で」か

563 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 473e-pcwf) mailto:sage [2023/07/25(火) 12:56:14.20 ID:akUn9hsS0.net]
>>551
言語仕様が改訂されたんだよ。
C++98 が成立するちょっと前まで for 文の外側のブロックをスコープとするルールで正しかった。
ARM (The Annotated C++ Reference Manual) でも旧ルールで説明されている。

VC の出来が悪かったのは事実だと思うが
スコープルールに関しては互換性を是とするウィンドウズの価値観に合わせて
意図的に変更を遅らせたのだと思う。

564 名前:デフォルトの名無しさん (ワイーワ2 FF9f-fo+T) mailto:sage [2023/07/25(火) 14:00:38.34 ID:uSv6E5akF.net]
いと懐かしき

565 名前:デフォルトの名無しさん (ワッチョイ 8702-Jlgx) mailto:sage [2023/07/25(火) 14:23:07.06 ID:kV+p+cpE0.net]
Visual C++ 6.0がリリースされたのが1998年じゃん
25年前じゃん。全然最近じゃないじゃん
遠い過去のことをつい最近って話すのはやめてほしいね

566 名前:デフォルトの名無しさん (ワッチョイ a701-Fb4F) mailto:sage [2023/07/25(火) 14:31:50.00 ID:MikqYz6X0.net]
>>555
だまれ小僧! 最近じゃよ

567 名前:デフォルトの名無しさん (ワッチョイ df32-8suU) mailto:sage [2023/07/25(火) 14:44:27.15 ID:vokyohz+0.net]
20年くらいまえのソースコードだったら
読む機会がないわけでもないからなぁ。
最近と言えるかどうかはともかくとして
経緯を知っておくに越したことはない

568 名前:デフォルトの名無しさん (アウアウウー Sa2b-QKap) mailto:sage [2023/07/25(火) 14:44:43.95 ID:iTChcdyRa.net]
25年前に30代だった人の多いスレ

569 名前:デフォルトの名無しさん (ラクッペペ MM8f-pwGU) mailto:sage [2023/07/25(火) 14:54:13.97 ID:218oSqZIM.net]
現役世代なら25年前なら20代



570 名前:デフォルトの名無しさん (ワッチョイ a701-Fb4F) mailto:sage [2023/07/25(火) 14:55:29.80 ID:MikqYz6X0.net]
だまれ小僧ども!

571 名前:デフォルトの名無しさん (ワッチョイ dff0-FYg4) mailto:sage [2023/07/25(火) 16:16:06.83 ID:uXZxGhnB0.net]
おじいちゃんかな入力使ってそう

572 名前:デフォルトの名無しさん (ワッチョイ 473e-8suU) mailto:sage [2023/07/25(火) 16:50:53.20 ID:akUn9hsS0.net]
リアルで トントカイモ をやったことある世代だわ……

573 名前:デフォルトの名無しさん (ワッチョイ 0710-PxlL) mailto:sage [2023/07/25(火) 20:33:32.87 ID:RkQ0FrMx0.net]
>>560
そこは
黙れ小僧、お前にSUNが救えるか!
じゃないの?

sunのccって何だっけ

でも個人的にはc++ユーザなら2014年以降の話をして欲しい

574 名前:デフォルトの名無しさん (ワッチョイ bf79-mRrB) mailto:sage [2023/07/25(火) 21:15:39.67 ID:2EbZvvbp0.net]
(昔話うぜー)

575 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 473e-pcwf) mailto:sage [2023/07/25(火) 21:54:33.88 ID:akUn9hsS0.net]
>>563
古い規格に基づいたコードが消滅しているならそれでもいいけどさ。

576 名前:デフォルトの名無しさん (ワッチョイ a728-Nt2/) mailto:sage [2023/07/25(火) 22:52:02.65 ID:ngER/Udx0.net]
>>539
アドレスをとったらメモリエリアシング除けで最適化が抑止される
そう思っていた時期が僕にもありました先週

577 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 473e-pcwf) mailto:sage [2023/07/25(火) 23:10:43.20 ID:akUn9hsS0.net]
アドレスとエイリアスは別枠なんだわ。
ポインタを数値として表示させると同じなのに == で比較すると偽値 (エイリアスではない) ということがあり得る。
pointer provenance の概念について調べてみると面白いかもね。

578 名前:デフォルトの名無しさん (ラクッペペ MM8f-pwGU) mailto:sage [2023/07/26(水) 07:52:30.48 ID:Ymbp6+unM.net]
古いコードに執着しはじめるならもういい加減引退した方がいい

579 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 473e-pcwf) mailto:sage [2023/07/26(水) 13:05:53.40 ID:Z/zSkMd/0.net]
>>568
誰かが書き換えなきゃ新しくはならんのだぞ。



580 名前:デフォルトの名無しさん (ラクッペペ MM8f-pwGU) mailto:sage [2023/07/26(水) 14:04:23.46 ID:nSMXTC2xM.net]
まったく無いとは言わないが20年以上も昔のコードを弄る機会って実際どれくらいあるのか
あまりに不毛な主張だろう

581 名前:デフォルトの名無しさん (ワッチョイ dff0-POqA) mailto:sage [2023/07/26(水) 14:22:14.82 ID:x/JHBN7Z0.net]
>>129
これが実現出来ればそういう心配事も無くなるんだがな

582 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 473e-pcwf) mailto:sage [2023/07/26(水) 14:24:26.98 ID:Z/zSkMd/0.net]
ちなみに俺は少なくとも C++11 以降だろ (C++20 は時期尚早かもしれない) 派だし
趣味でプログラミングしているから実務現場はわからない。
でも確実に 20 年前くらいのコードは生きてるよ。
質問サイトで (古いコードの意味について尋ねる質問に対して) 歴史的な事情を説明したことは何度もあるから。
それが割合としてどんくらいかというと確かに少なくはあると思うが……。

583 名前:デフォルトの名無しさん (ワッチョイ 0710-PxlL) mailto:sage [2023/07/26(水) 17:59:22.96 ID:EGwoK+U90.net]
11は妥当かも。新しいauto は11から一部、で14で増えた訳よね
C++の仕事で、例えばauto使ったらダメって言われたら、工エエェェ(´д`)ェェエエ工 アンタ達何でCじゃなくてC++使ってるん?てならんか

(マ板的な話でごめんね)
仕事で、Cで未だに99がダメとかいう頭おかしい現場もあり、問い詰めると周辺ツール整備の予算の都合と言い訳される。そういうのを切る政治のために喫煙所活動したり、元社の海外部署の圧を使ったりする

まあでも、自衛隊の武器でもC++あったよ…ただ、武器にはちゃんと使用期限があって。5年とか。継続で使いたい場合には再整備事業が起きる。次の期限いっぱいまで修理可能であるように求められるのね

新規は14以上、保守は11以上、は妥当かもね

584 名前:デフォルトの名無しさん (テテンテンテン MM8f-TfYz) mailto:sage [2023/07/26(水) 20:17:04.26 ID:zBy57xkKM.net]
動的に重たい機能(例外とか)を取り除いたembeded c++に再チャレンジしてほしいわ。

c with structure and template くらいの。

585 名前:デフォルトの名無しさん (ワッチョイ 077c-N/av) mailto:sage [2023/07/26(水) 20:27:29.80 ID:qeWM+gpE0.net]
また禿に死ぬべきだって言われるだけだぞ

586 名前:デフォルトの名無しさん (ワッチョイ dff0-FYg4) mailto:sage [2023/07/26(水) 20:36:31.16 ID:J6WrB9lP0.net]
俺も趣味でしか使ってないけど、OSSのメンテやってる外人がCで書かれたコードのこと
クソの山と呼んでるのを見かけてみんなそう思ってると信じちゃった

587 名前:デフォルトの名無しさん (ワッチョイ a701-Fb4F) mailto:sage [2023/07/26(水) 20:45:03.48 ID:T1zuvG990.net]
「クソの山」って英語で何ていうの?

588 名前:デフォルトの名無しさん (ワッチョイ dff0-4APs) [2023/07/26(水) 20:47:33.68 ID:e36yYIxR0.net]
>>577
stacked shit
ソースはフルメタル・ジャケット

589 名前:デフォルトの名無しさん (ワッチョイ a701-Fb4F) mailto:sage [2023/07/26(水) 21:11:20.60 ID:T1zuvG990.net]
My intestine is a kind of FIFO.



590 名前:デフォルトの名無しさん (ワッチョイ 0720-rRCM) [2023/07/26(水) 21:14:18.52 ID:4fMh7lxL0.net]
bullshit

591 名前:デフォルトの名無しさん (ワッチョイ 473e-8suU) mailto:sage [2023/07/26(水) 21:21:43.95 ID:Z/zSkMd/0.net]
>>576
現実がクソなんだよ。
それでもコードにしなきゃならないところ(低レイヤとか速度がいるところとか言語を跨ぐインターフェイスとか)でCが使われるから必然的にクソになる。
他の言語で書いたところでたぶんクソだぞ。

592 名前:デフォルトの名無しさん (オイコラミネオ MM3b-nVDU) mailto:sage [2023/07/26(水) 22:07:29.96 ID:iOxX8HKcM.net]
自分としては古いC++のコードの方がクソの山に見える
Cはまだまし

593 名前:デフォルトの名無しさん (ワッチョイ 6701-I2OL) [2023/07/26(水) 22:16:26.68 ID:jPIzcFjy0.net]
5chからの新しいお知らせは、他の板には出ないんだな

594 名前:デフォルトの名無しさん (ワッチョイ 67c0-CvEJ) mailto:sage [2023/07/27(木) 04:04:24.35 ID:QeVlkja60.net]
古い事自体は悪い訳ではないよね
質が低いけど影響範囲が大きくて修正されずに生き延びてる糞コードが悪いだけで

595 名前:デフォルトの名無しさん (ワッチョイ bf9a-0/k/) mailto:sage [2023/07/27(木) 09:00:04.57 ID:zEDi2bcm0.net]
>>578
stackだけだと積むというだけで高さはわからないような
they stacked shit that highというのが原文

596 名前:デフォルトの名無しさん (アウアウウー Sa2b-QKap) mailto:sage [2023/07/27(木) 09:00:15.65 ID:GoQM94Wca.net]
>>582
ほんそれ
+1

597 名前:デフォルトの名無しさん (ワッチョイ 8702-Jlgx) mailto:sage [2023/07/27(木) 09:39:10.27 ID:4LOg1fU50.net]
>>576
PythonとかJavaScriptだけの世界に生きてる人たちはC++はクソとか言ってそうな気がする

598 名前:デフォルトの名無しさん (アウアウウー Sa2b-QKap) mailto:sage [2023/07/27(木) 09:49:28.34 ID:GoQM94Wca.net]
実際C++は糞だと思う
Cの方がマシ

599 名前:デフォルトの名無しさん (ワッチョイ a701-Fb4F) mailto:sage [2023/07/27(木) 10:16:37.98 ID:+SEMblDr0.net]
VCでビルドしたC++ライブラリって
mingwでビルドしたオブジェクトファイルとリンクできないよね?
Cライブラリだとできるけども



600 名前:デフォルトの名無しさん (ワッチョイ 0710-IJmj) mailto:sage [2023/07/27(木) 10:25:00.16 ID:uqLQvp0Q0.net]
c++だとマングリングの規則がコンパイラごとに違うから無理なはず

601 名前:デフォルトの名無しさん (ワッチョイ a701-JYYx) mailto:sage [2023/07/27(木) 10:37:09.86 ID:+SEMblDr0.net]
>>590
ありがとうございます

602 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 473e-pcwf) mailto:sage [2023/07/27(木) 11:15:58.50 ID:p+3LvAw40.net]
COM の規約で運用するという方法もあるけど割とめんどい

603 名前:デフォルトの名無しさん (ワッチョイ a701-Fb4F) mailto:sage [2023/07/27(木) 12:11:09.64 ID:+SEMblDr0.net]
C++ライブラリとCライブラリの両方があったので
素直にCライブラリの方を使うことにします

604 名前:デフォルトの名無しさん (アウアウウー Sa2b-4APs) [2023/07/27(木) 14:18:54.70 ID:SGfMLUd3a.net]
>>585
その原文の訳が「まるでそびえ立つクソだ!」だからhighly stacked shitあたりだろうけど、あれはハートマン軍曹という異常者の語彙だから、多分pile of shitなんかの方が一般的かもね

605 名前:デフォルトの名無しさん (ワッチョイ 7ffb-p1qB) mailto:sage [2023/07/27(木) 21:44:21.80 ID:alYzqiaL0.net]
msvcからmingwに移行しようと思い、7zを展開したらディフェンダーちゃんが反応したので何かと思ったら

606 名前:デフォルトの名無しさん (ワッチョイ 473e-8suU) mailto:sage [2023/07/27(木) 22:58:54.41 ID:p+3LvAw40.net]
実行ファイルを生成するものは割りとひっかかる

607 名前:デフォルトの名無しさん (アウアウウー Sa2b-QKap) mailto:sage [2023/07/28(金) 10:55:13.63 ID:Zgvcm9f5a.net]
7zを展開する前にファイルをExoplorerから右クリックで開いて
ディフェンダー無効にしてから展開するだけだろ

608 名前:デフォルトの名無しさん (スップ Sd7f-HOej) mailto:sage [2023/07/28(金) 13:11:52.02 ID:6yxKL9JFd.net]
Defenderに無害認定されるまで戦い続けるマ?

609 名前:デフォルトの名無しさん (ワッチョイ dff0-FYg4) mailto:sage [2023/07/28(金) 13:58:16.94 ID:AMhr/ZcZ0.net]
どういう設定でコンパイルしたら有害認定されるかむしろ知りたいわ



610 名前:デフォルトの名無しさん (ワッチョイ 2705-TI2y) mailto:sage [2023/07/28(金) 20:53:22.55 ID:nOGNEf1T0.net]
oss物は使ってくれるなというms様のお達し?

611 名前:デフォルトの名無しさん (ワッチョイ a701-Fb4F) mailto:sage [2023/07/28(金) 21:03:20.13 ID:iCEYdRhP0.net]
wslでLinux飲み込んだのに?

612 名前:デフォルトの名無しさん (ワッチョイ 473e-8suU) mailto:sage [2023/07/28(金) 21:12:30.62 ID:yKS6EUDz0.net]
そういや従量課金回線むけに通信量を制限するソフトを入れたら
通信を阻害するマルウェアとして検出されたことがある。
解釈によってはそりゃそうだと思うし、
セキュリティツールは疑陽性が増えてでも偽陰性を
減らす方向に調整するのはしょうがないんじゃねーの

613 名前:デフォルトの名無しさん (ワッチョイ 8f9c-JfPF) [2023/07/29(土) 01:25:10.10 ID:eLz5SM1d0.net]
マイクロソフトとしてはストアアプリとして配信して欲しいんだろうね
ZIPなどの野良アプリ配布は不遇の時代よ

614 名前:デフォルトの名無しさん (ワッチョイ bec3-B8t3) mailto:sage [2023/07/29(土) 01:41:06.31 ID:mO2Fj1W+0.net]
テレメスパイウェアage

615 名前:デフォルトの名無しさん (アウアウウー Sa1f-6+wX) mailto:sage [2023/07/30(日) 09:49:16.34 ID:azQXcNDBa.net]
>>599
コンパイル後のexeがなぜか毎回消える問題は何かのバージョンで過去にあった

616 名前:デフォルトの名無しさん (ワッチョイ befb-LsOw) mailto:sage [2023/07/30(日) 11:40:03.78 ID:/52qmc2G0.net]
>>605
恥ずかしがり屋め//

617 名前:デフォルトの名無しさん (ワッチョイ 2679-ntsF) mailto:sage [2023/07/30(日) 19:58:32.07 ID:cURCmIiS0.net]
Defender様はOS内蔵のC#で作ったexeも容赦なく消してくるぞ
名前が他と被ってたり変な場所に置いたりしてると割と起こる

618 名前:デフォルトの名無しさん (ワッチョイ 2301-9pon) mailto:sage [2023/07/30(日) 23:32:06.49 ID:Phugis3j0.net]
初期化していないstd::optional <int>をdereferenceすると0として扱われます
boost::optional <int>だとAbortされるのですが
なぜstdではこのようになっているのかどなたかご存知ですか?
$ cat test.cpp
#include <optional>
#include <boost/optional.hpp>
#include <iostream>
using namespace std;
int main () {
std::optional <int> i0;
cout << *i0 << '\n';
if (i0) cout << "Initilized\n";
else cout << "Not initilized\n";
boost::optional <int> i1;
cout << *i1 << '\n';
return 0;
}

$ ./test
0
Not initilized
test: /usr/include/boost/optional/optional.hpp:1212: boost::optional<T>::reference_type boost::optional<T>::get() [with T = int; reference_type = int&]: Assertion `this->is_initialized()' failed.
Aborted (core dumped)

619 名前:デフォルトの名無しさん (ワッチョイ d35f-X/lp) mailto:sage [2023/07/30(日) 23:50:56.20 ID:1/o7VgXA0.net]
>>608
どちらも事前条件違反での未定義動作の結果。
「0として扱う」と定められているわけじゃない。
boost が assert で止めてくれているのは親切。



620 名前:デフォルトの名無しさん (ワッチョイ 2301-9pon) mailto:sage [2023/07/30(日) 23:58:13.09 ID:Phugis3j0.net]
boostの方が親切ですよね
何でstdでなくしたんでしょ?

621 名前:デフォルトの名無しさん (ワッチョイ 2301-9pon) mailto:sage [2023/07/31(月) 00:15:55.53 ID:ulrQSEBD0.net]
stdはパフォーマンスを気にしたんでしょうかね?

622 名前:デフォルトの名無しさん (ワッチョイ 8f7c-xLd3) mailto:sage [2023/07/31(月) 00:17:50.97 ID:kuDsfsru0.net]
未定義動作をどうしようとコンパイラの勝手

623 名前:デフォルトの名無しさん (ワッチョイ 2301-9pon) mailto:sage [2023/07/31(月) 00:42:57.84 ID:ulrQSEBD0.net]
>>612
boostでは初期化済みかどうかを確認していたのを
stdでなぜ確認を外したのか?って問いになります
>>611に書いたようにパフォーマンスってこでしょうかね?

624 名前:デフォルトの名無しさん (ワッチョイ d35f-X/lp) mailto:sage [2023/07/31(月) 01:10:19.51 ID:cE0Z6rmj0.net]
>>613
std::optionalの仕様がboost::optionalを参考にしたのは確かだろうけど、
std::optionalの実装はboost::optionalの実装をもとにしたわけじゃないだろうから、
不要なチェックが無い状態でむしろ自然。
何か意図を持って「なくした」「外した」などという事実がおそらく無い。
仮に意図的だったとして、ここで誰かがその質問にyes/noを答えても本当かどうかはわからない。
どうしても気になるならライブラリ実装者に聞くべき。

625 名前:デフォルトの名無しさん (ワッチョイ 2301-9pon) mailto:sage [2023/07/31(月) 02:06:40.22 ID:ulrQSEBD0.net]
仕様はboostが元になっているのは間違いないので
規格に入れるときになぜこれを変えたのか理由が分かればなと考えました
proposal追ってる人でご存知の方がいればなと思いましたが
自分でも読んでみます

626 名前:デフォルトの名無しさん (ワッチョイ d35f-X/lp) mailto:sage [2023/07/31(月) 03:26:45.40 ID:cE0Z6rmj0.net]
>>615
仕様はどちらも事前条件違反での未定義動作で、変わってない。
なので仕様について調べてもおそらく答えは出ない。
assertの有無は実装の範疇。

627 名前:デフォルトの名無しさん (ワッチョイ a6a4-2Bsr) mailto:sage [2023/08/02(水) 01:27:09.22 ID:UwRg95UI0.net]
プログラミングの面接を受けた。言語は何でもいいというので今使ってるC++で予め申請。
ロジックを問う問題なので言語で差はつかない、という話... だったが実際は文字列処理
の問題が多く、これはスクリプト系とかの方が有利じゃないか

C++にはなんで文字列のsplit系はないんだろ。どうしてます? <- あ、これが雑多な質問w

628 名前:デフォルトの名無しさん (ワッチョイ a6a4-2Bsr) mailto:sage [2023/08/02(水) 01:29:42.76 ID:UwRg95UI0.net]
ちなみに自分は以前Pythonを使っていた時期もJavaを使っていた時期もあるけど
今は頭が「C++脳」になっている気がして、とっさにそれらを使うとなると不安を感じたのだった
やはり常日頃から他の言語も回しておくべきだろうか

629 名前:デフォルトの名無しさん (ワッチョイ a6a4-2Bsr) mailto:sage [2023/08/02(水) 01:31:05.25 ID:UwRg95UI0.net]
マ系の話かもしれないですね、すみません



630 名前:デフォルトの名無しさん (ワッチョイ 4af0-0TAO) mailto:sage [2023/08/02(水) 01:45:10.69 ID:JKibevwe0.net]
次の問題でグラフにプロットしろとか言われそうだなw

631 名前:デフォルトの名無しさん (ワッチョイ b73e-4j5P) mailto:sage [2023/08/02(水) 01:58:11.71 ID:Vhf3uqZN0.net]
>>617
普通は申告した技能に嘘がないことを確かめるのが
面接の主な目的であって
正解率に意味があるような試験ではないよ。

632 名前:デフォルトの名無しさん (ワッチョイ 33d6-cK++) mailto:sage [2023/08/02(水) 06:20:23.71 ID:NkBPLpHI0.net]
>>617
istringstream と getline を使えば、区切られた文字を順番に取り出せる。
空白文字区切りなら、getline の代わりに >> が使える。

https://maku77.github.io/cpp/string/split.html

633 名前:デフォルトの名無しさん (アウアウウー Sa1f-IPSQ) [2023/08/02(水) 09:31:21.06 ID:4pI1Wfnva.net]
>>617
C/C++でそれが出来て初めて「C/C++が使えます」って言えるんだ

634 名前:デフォルトの名無しさん (ワッチョイ befb-LsOw) mailto:sage [2023/08/02(水) 09:36:40.40 ID:y1hozJP20.net]
1つの言語で覚えたあたらしい機能を実現するのに他の言語ではどう書く?って感じで比較しながら書くと記憶が精緻化しやすく忘れにくくなる

635 名前:デフォルトの名無しさん (アウアウウー Sa1f-IPSQ) [2023/08/02(水) 10:22:30.40 ID:4pI1Wfnva.net]
>>618
「C++脳」
良く言えるな
C++も不安だらけじゃないか

636 名前:デフォルトの名無しさん (ワッチョイ befb-LsOw) mailto:sage [2023/08/02(水) 12:38:15.38 ID:y1hozJP20.net]
コーディングテストのはずがメインメソッド作ってって言われたときはこちらからお断り申し上げたことがある

637 名前:デフォルトの名無しさん (ワッチョイ befb-LsOw) mailto:sage [2023/08/02(水) 12:43:22.62 ID:y1hozJP20.net]
チンチンシュッシュシュですわ

638 名前:デフォルトの名無しさん (ワッチョイ 4b9a-2Bsr) mailto:sage [2023/08/03(木) 09:24:52.48 ID:lr2Ednh70.net]
>>625
あ、別にC++が得意という意味でなく、それ以外の言語を使うとき頭がすぐに切り替わらない、
というぐらいの話で

結局そのとき自分は文字をチェックして区切り文字の位置を調べてstring.substr()で切り出し
vector<string>に追加というベタな感じを。でも他の言語でsplit()を呼んで終わりなのと比べると
無駄に焦ったと思われ >>622はすっかり忘れていた

639 名前:デフォルトの名無しさん (ワッチョイ 6af0-PvkJ) mailto:sage [2023/08/03(木) 09:35:40.45 ID:IPuBCl990.net]
自分で作れよw
簡単だろ



640 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b73e-yh3V) mailto:sage [2023/08/03(木) 09:36:19.80 ID:HBD/4AdY0.net]
>>628
C++20 以降なら std::views::split を使えるよ。

641 名前:デフォルトの名無しさん (ワッチョイ befb-LsOw) mailto:sage [2023/08/03(木) 20:08:30.72 ID:IJZbd6wk0.net]
>>628
c++がマニアックなのはまぁわかる
他の言語に切り替わらないっていうのは鍛錬不足じゃあ無いのかね
c++で書いたものを見ながら別の言語に書き換えるっていう作業の時間が足りてないんじゃない?

642 名前:デフォルトの名無しさん (ワッチョイ 43a5-IPSQ) [2023/08/04(金) 21:09:58.67 ID:5lu3SOws0.net]
プリプロセッサディレクテブでマクロを組む方法はないでしょうか?
#ifndef XX
#define XX 1
#endif

define_default (XX, 1); <-こんな感じにマクロ化したい

643 名前:デフォルトの名無しさん (ワッチョイ 7510-oj1Z) mailto:sage [2023/08/05(土) 01:51:28.51 ID:L/LBNngA0.net]
🤔…(こんな感じとは?)

644 名前:デフォルトの名無しさん (ワッチョイ 7510-oj1Z) mailto:sage [2023/08/05(土) 02:15:04.78 ID:L/LBNngA0.net]
スマン言いたい事分かった

直接の回答は:わからん。
多分、君の実装アイデアでは無理。
C++というかCな気がするが、コンパイラの規格の中に翻訳作業のステージが確か7つ位定義されてて、その一つがプリプロセス。で無限ループしないようになってたような。


本当にやりたいであろう事(定数定義の記述に定形があって煩雑なのをシンプルに書きたい)なら、私なら別の方法でやる、けどそれは聞かれてないよね

645 名前:デフォルトの名無しさん (スッップ Sd2f-YWx9) mailto:sage [2023/08/05(土) 09:38:26.20 ID:wvUeqD5zd.net]
定義をマクロ定義する事はできないよ
都度意味を変えてincludeで読み込ませるとか

646 名前:デフォルトの名無しさん (ワッチョイ 4f7c-HETv) mailto:sage [2023/08/05(土) 10:20:09.70 ID:9rqysa6s0.net]
よく分からんがC++の範疇じゃなくてcamkeとかコンパイラオプションでやる事っぽく見える

647 名前:デフォルトの名無しさん (ワッチョイ 31a5-mBaV) [2023/08/05(土) 22:30:35.02 ID:a9xEz2i50.net]
コンパイルオプションでdefineを省略されていればデフォルト値を使うようなコードの構造にしたいのですが、
なるたけmakeやコンパイル環境に依存しないことが希望です。
プリプロセッサを使うと煩雑で読みづらくなってしまうので、カプセル化したいです。
C++ならもう少し洗練された方法がないものかと思うところですが、
定数定義の記述定形があって煩雑なのをシンプルに書く方法があれば教えて下さい

648 名前:デフォルトの名無しさん (ワッチョイ 4d01-zxRi) mailto:sage [2023/08/05(土) 23:17:58.10 ID:NzC+Rt9F0.net]
現状のサンプルコードを書いた方が答えやすい

649 名前:デフォルトの名無しさん (ワッチョイ 31a5-mBaV) [2023/08/05(土) 23:34:29.13 ID:a9xEz2i50.net]
#ifndef XX1
#define XX1 1
#endif

#ifndef XX2
#define XX2 0
#endif
:



650 名前:デフォルトの名無しさん (ワッチョイ 5b3e-8WNR) mailto:sage [2023/08/06(日) 00:25:50.71 ID:Mgx3ApDu0.net]
C++ はなるべくマクロを使わずに済む方向に進化してはいるが
マクロを使うのであればそれより良い方法はないと思うよ。

651 名前:デフォルトの名無しさん (ワッチョイ e3f0-uQHI) mailto:sage [2023/08/06(日) 01:54:30.05 ID:7ys7hHtb0.net]
俺ならテンプレート引数のデフォルト引数を使うけど、
既存のコードを何とかしたいって事かい?

652 名前:デフォルトの名無しさん (ワッチョイ 7510-WTQk) mailto:sage [2023/08/06(日) 04:00:21.32 ID:VdM0xi000.net]
>>637
君の求めてるエレガントな方法は、知らない。スマンね

私がもし 今すぐ 仕事でやる必要があるなら
XX1 1
XX2 0
というテキストファイルから、君の例示したソースファイルを生成する「ツール」を勝手に作って使い、手で書いたフリをする

数百あるならツールに意味があるし
もし聞かれたらツールで生成したと答えるが、正直どうでもいい
メンテフェーズでの1件2件の追加修正は手で書きゃいい

653 名前:デフォルトの名無しさん (ワッチョイ 7510-7C81) [2023/08/06(日) 04:31:49.92 ID:VdM0xi000.net]
ここって#とかの文字書けるのかな...


#!/bin/bash

put_data_list()
{
cat <<EOF
XX1 1
XX2 0
EOF
}


main()
{
while read NAME VAL
do
cat <<EOF
#ifndef $NAME
#define $NAME VAL
#endif

EOF
done
}

put_data_list | main

654 名前:デフォルトの名無しさん (ワッチョイ 5b3e-8WNR) mailto:sage [2023/08/06(日) 11:54:26.68 ID:Mgx3ApDu0.net]
その手のパラメータをマクロとして大量に定義する
必要があるときというのは
開発・実行環境ごとに切り分けたいという要求なことが多くて、
そうだとしたら環境依存を避けたいという要件設定が
ナンセンスってことになるんよ。

655 名前:デフォルトの名無しさん (ワッチョイ 054e-c/5M) [2023/08/06(日) 12:11:02.29 ID:R5xvWuDw0.net]
その開発・実行環境がコンパイラ含めてまるごと提供される場合だと、C(++)基本機能だけで済ませないと何かと面倒というのは分かる
ゲーム機とかがそれ

656 名前:デフォルトの名無しさん (ワッチョイ c379-IXit) mailto:sage [2023/08/06(日) 12:13:51.56 ID:SuulMMGF0.net]
マイコン用のヘッダなんかはそういうテクニックが駆使されてて環境依存を減らしてるから参考になるよ
arduinoみたいな特定のマイコンに依存してない環境では特に

657 名前:デフォルトの名無しさん (ワッチョイ e3f0-uQHI) mailto:sage [2023/08/10(木) 05:18:21.73 ID:cgZD1dE+0.net]
最近はマイコンでもC++使うんですか?
普通にC使ったほうがいいと思うんですけどどうなってるんですか有識者の方

658 名前:デフォルトの名無しさん (ワッチョイ e3f0-WeFQ) mailto:sage [2023/08/10(木) 08:37:15.11 ID:R9ss+SBt0.net]
C++でもメモリを食わない書き方はあるとだけ言っておく
STLライブラリに恩恵を受けて育った温室育ちには理解出来んかもだがな

659 名前:デフォルトの名無しさん (ワッチョイ 054e-c/5M) [2023/08/10(木) 09:55:47.75 ID:4skaSxsv0.net]
マイコンのことは知らないが、いまさら、
//コメント
スコープ内ローカル変数
関数のオーバーロードや引き数の省略
bool型とture/false識別子
等がないC言語とか無理だなw



660 名前:デフォルトの名無しさん (ワッチョイ 5b3e-oz9p) mailto:sage [2023/08/10(木) 10:54:42.66 ID:5Abh0bq20.net]
>>649
その4つの内の3つはCにある機能だぞ

661 名前:デフォルトの名無しさん (ワッチョイ 054e-c/5M) [2023/08/10(木) 14:04:07.34 ID:4skaSxsv0.net]
組み込み向けでもC99つかえるの?
まぁ、最近はclangとかなのかな…日立コンパイラの恐怖とか思い出すわw

662 名前:デフォルトの名無しさん (ワッチョイ 5b3e-tyL0) mailto:sage [2023/08/10(木) 14:23:33.39 ID:5Abh0bq20.net]
スコープ内ローカル変数ってのが

663 名前:スを意味してるのかよくわからんが、
(関数ブロック以外でも) ブロックの先頭では変数宣言できるぞ。 C89 でも。
[]
[ここ壊れてます]

664 名前:デフォルトの名無しさん (ワッチョイ d105-GNKj) mailto:sage [2023/08/10(木) 16:21:19.73 ID:ygto10X60.net]
>>650
C++から逆輸入されたんだっけ?

665 名前:デフォルトの名無しさん (ワッチョイ d105-GNKj) mailto:sage [2023/08/10(木) 16:23:48.61 ID:ygto10X60.net]
マイコンって言ってももはや幅が広すぎるよな

666 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b3e-tyL0) mailto:sage [2023/08/10(木) 16:42:27.27 ID:5Abh0bq20.net]
Z80 だって C99 対応コンパイラは有るくらいだし、現代でも売ってるマイコン
かつ C コンパイラが存在するなら大抵は C99 対応くらいはしてるんじゃね。
完璧に準拠ってほどではないかもしれんけど。

667 名前:デフォルトの名無しさん (ワッチョイ dffb-IrHc) mailto:sage [2023/08/10(木) 19:28:12.15 ID:rVmtE6nS0.net]
今ってマクロ使うよりもモジュールにしてstaticでやる方がオトクなんだって?

668 名前:デフォルトの名無しさん (ワッチョイ 4f7c-HETv) mailto:sage [2023/08/11(金) 07:07:37.61 ID:gKBPOQXo0.net]
マイコンって関数呼び出しなんて重すぎてとんでもないmainに全部ベタ書きしろって世界でしょ?
そんなとこでモジュールなんて許されるのか

669 名前:デフォルトの名無しさん (ワッチョイ 61da-WeFQ) mailto:sage [2023/08/11(金) 07:24:40.95 ID:RJhU8z4K0.net]
とんだ時代錯誤だな
関数作るだけで容量が満杯になるっていつの時代のマイコンだよ
今何世紀だと思ってんだよ
https://youtu.be/-c-SPVlIr7Q



670 名前:デフォルトの名無しさん (ワッチョイ 4f7c-HETv) mailto:sage [2023/08/11(金) 07:59:20.53 ID:gKBPOQXo0.net]
そーなの?
昔受けた講習で「関数は重いので関数ポインタを扱う用途以外では作りません。処理をまとめるにはマクロかgotoを使います」って言ってて衝撃受けた口なんだけど
時代の流れなのかこの講習がタコなのかあなたがタコなのか専門外だから分からないよ

671 名前:デフォルトの名無しさん (ワッチョイ 61da-WeFQ) mailto:sage [2023/08/11(金) 08:08:48.37 ID:RJhU8z4K0.net]
ホントに極小サイズの容量小さい昔のマイコンならアセンブラでハードウェアアドレスにI/Oコールして組み上げんだろうけどいまのマイコンはそのレベルを既に凌駕して逸脱してるから誰でも気軽に組みやすく仕上がってる
micropythonみたいなインタープリタも走るしな

672 名前:デフォルトの名無しさん (オイコラミネオ MMc9-uQHI) mailto:sage [2023/08/11(金) 08:32:55.43 ID:4oMIZBsGM.net]
関数を使わないのはRAMは少なくてスタックがシビアだからです

673 名前:デフォルトの名無しさん (ワッチョイ 61da-WeFQ) mailto:sage [2023/08/11(金) 08:36:34.41 ID:RJhU8z4K0.net]
スタックフレームつくるからだろ
インラインで全部組めばスタック要らんくなるよ
コードの容量は増えるかもしれんけど

674 名前:デフォルトの名無しさん (オイコラミネオ MMc9-uQHI) mailto:sage [2023/08/11(金) 08:40:37.51 ID:4oMIZBsGM.net]
何らかの便利な仕組みがあるとそのせいでメモリが足りなくなることもあった

そのせいかどうかしらないけど過去はforの階層が7階層に制限されてたり今では意味不明
ブロックスコープの仕組みのためか?
ifとgotoにしたら回避できる

675 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4132-oz9p) mailto:sage [2023/08/11(金) 09:58:09.34 ID:vt/fQ4Il0.net]
プログラムを 2KiB 程度しか書き込めない PIC なんかもあるが
そのレベルの機器だとどうせ低レイヤにべったりと
依存せざるをえないだろうし、
C で極端な書き方をするくらいならもっと低級な言語を
使った方が楽かもしれないな。
そういう割り切りが出来ない程度の中途半端なのが一番困る。

676 名前:デフォルトの名無しさん (スフッ Sdd7-A0iR) [2023/08/11(金) 12:49:59.96 ID:oqyg1NI/d.net]
>>659
組み込みなら
関数が重い
じゃなくて
スタックが浅い
の間違いじゃないのか?

677 名前:デフォルトの名無しさん (ワッチョイ 9af0-vKG+) mailto:sage [2023/08/12(土) 01:11:27.44 ID:DKBxYxYv0.net]
最近のは単価数百円で256kbとかメモリ積んでるんだな…

678 名前:デフォルトの名無しさん (ワッチョイ f358-yhDR) [2023/08/16(水) 17:21:20.72 ID:hgmxYG6c0.net]
その昔、使ってたHP-29Cがサブルーチンのネストが3段までで
その後に出荷されたHP-34Cが6段になってるの見て
おおーってなった懐かしい思い出

679 名前:デフォルトの名無しさん (ワッチョイ f358-yhDR) [2023/08/16(水) 17:40:41.84 ID:hgmxYG6c0.net]
今はinlineや関数テンプレートのように開いたサブルーチンが普通に使えるからなあ



680 名前:デフォルトの名無しさん (ワッチョイ 2702-Dztr) [2023/08/16(水) 22:34:48.53 ID:YHO3HAlN0.net]
https://i.imgur.com/2SPcox3.jpg

681 名前:デフォルトの名無しさん (ワッチョイ 5b94-J+rV) [2023/08/17(木) 00:57:31.86 ID:VKXPNJiw0.net]
>>669
Amazonギフトに交換できるんだ

682 名前:デフォルトの名無しさん (JP 0H7f-YOEV) mailto:sage [2023/08/17(木) 15:51:12.83 ID:BJu8USc1H.net]
ちなみにその方法でアマギフ入手するとアマゾンアカウント停止させられるから気をつけてね

683 名前:デフォルトの名無しさん (ワッチョイ b690-g0y9) mailto:sage [2023/08/17(木) 23:57:58.55 ID:4XlHHMDQ0.net]
ショボい詐欺はスルーで

684 名前:デフォルトの名無しさん (スップ Sdba-aAP2) mailto:sage [2023/08/18(金) 07:50:49.06 ID:ibegtSC/d.net]
>>669
グロ

685 名前:デフォルトの名無しさん (ワッチョイ 5901-greZ) [2023/08/21(月) 17:47:44.07 ID:mTvtbn+H0.net]
週3日稼働案件の職種別月収ランキングNo.1は「データサイエンティスト」で月72万円。
上位7職種が月50万円を超える月収。ほぼ全ての案件がリモート可案件。

フリーランス・複業・副業の

686 名前:求人マッチングサービス『SOKUDAN(ソクダン)』を運営する
CAMELORS株式会社、週3日フリーランス・副業案件の時給月収年収・職種別
ランキングについて調査した内容をお知らせいたします
SOKUDANに掲載されているフリーランス・副業案件のうち、週3日案件に限定して
時給・月収・年収を職種別のランキング記事としています。
■調査サマリー
週3日稼働案件の月収ランキング1位は「72万円」でデータサイエンティスト
週3日稼働案件の平均月収「460,487円」、年収換算「553万円」
週3日稼働のフリーランス・副業案件の99.4%は「リモート可」
上位12職種が時給3,000円、週3日稼働で月収30万円を超える
上位7職種が時給5,000円、週3日稼働で月収50万円を超える
[]
[ここ壊れてます]

687 名前:デフォルトの名無しさん (ワッチョイ 3136-wdUj) [2023/08/21(月) 22:24:31.55 ID:qha1IMDa0.net]
>>669
貰うだけ貰うか

688 名前:デフォルトの名無しさん (ワッチョイ 2b10-OsaT) mailto:sage [2023/08/22(火) 18:52:00.21 ID:vz2M4TZw0.net]
c++でGUI作る時のフレームワークって今は何が主流なんでしょうか。
昔は、MFCとか有名でしたが。
それとも、c#で簡単にui作って内部的にc++で処理するとかですかね。

689 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 893e-glFA) mailto:sage [2023/08/22(火) 20:03:04.11 ID:+W4fml+10.net]
Windows での話なら WinUI を活用する方法が現代的なやり方だけど主流と言える感じでもないかな……。
WebView コントロールで全部をやってしまえばウェブ技術がかなり使えるので
プログラマの知識バックグラウンドによっては楽ということもあるかも。



690 名前:デフォルトの名無しさん (ワッチョイ 597c-JHPd) mailto:sage [2023/08/22(火) 20:29:01.97 ID:lpVGvukl0.net]
なんかもう最近はPCでGUIプログラムなんぞ作ること自体が時代遅れみたいな風潮で息苦しいよ

691 名前:デフォルトの名無しさん (ワッチョイ 2bfb-KmyD) mailto:sage [2023/08/22(火) 22:37:29.50 ID:0uc0qR5i0.net]
基本はGUi作るのはひ

692 名前:デフォルトの名無しさん (ワッチョイ 599c-HTZh) [2023/08/23(水) 00:17:14.58 ID:+DZCM0il0.net]
WindowsとLinuxで同じアプリ動かさないといけない案件でgtkmm使ったことある
UIをCSSで装飾できるのがモダンな感じでよかった!

693 名前:デフォルトの名無しさん (ワッチョイ 2bf2-N2rt) mailto:sage [2023/08/23(水) 00:39:14.30 ID:Ev7RzN030.net]
wxWidgetsおすすめ

694 名前:デフォルトの名無しさん (ワッチョイ 1990-PVU2) mailto:sage [2023/08/23(水) 05:35:54.64 ID:syViBZyk0.net]
JAVAを使うとこじゃないのか?

695 名前:デフォルトの名無しさん (ワッチョイ 93f0-YAjS) mailto:sage [2023/08/23(水) 05:41:53.03 ID:yb1p7Ca/0.net]
お前はスレタイも質問文の前提も読めないのか

696 名前:デフォルトの名無しさん (ラクッペペ MM4b-pGo3) mailto:sage [2023/08/23(水) 06:02:39.20 ID:DtllJKP1M.net]
VC++なら実体はC++/CLIの実装なのでちょっとした手間でWinUI 3が利用出来るんじゃないの?
知らんけど

697 名前:デフォルトの名無しさん (ワッチョイ d9da-IilA) mailto:sage [2023/08/23(水) 07:20:34.95 ID:5hD/FFHF0.net]
また知ったかが
VC++とC++/CLIは全くの別もんだろ

698 名前:デフォルトの名無しさん (ラクッペペ MM4b-pGo3) mailto:sage [2023/08/23(水) 07:45:27.28 ID:jTxxfogGM.net]
C++/CLI
https://ja.wikipedia.org/wiki/C%2B%2B/CLI

699 名前:デフォルトの名無しさん (ワッチョイ a158-0WDc) [2023/08/23(水) 10:20:14.35 ID:tOgZZX+q0.net]
>>680
WineかWSL2あたりじゃね
今やるなら



700 名前:デフォルトの名無しさん (スフッ Sdb3-G+yN) [2023/08/23(水) 11:25:24.82 ID:WaZBmlqUd.net]
>>676
wxWidgets とか tcl/tk (C++じゃないが敢えて) とか

>>678
ほんそれ
ロストワールドになりそうな勢い
昔のコボちゃんもこんな感じで引退して逝ったんだろうか

>>680
gtkmm は糞

701 名前:デフォルトの名無しさん (テテンテンテン MM4b-RKQT) mailto:sage [2023/08/23(水) 12:28:03.69 ID:SELcDCTxM.net]
Electronどうかね。
使ったこと無いけど。

702 名前:デフォルトの名無しさん (ワッチョイ 5105-D2YO) mailto:sage [2023/08/23(水) 12:39:22. ]
[ここ壊れてます]

703 名前:05 ID:WZJfreeh0.net mailto: 要件によって変わるから一概にコレってのが無いな []
[ここ壊れてます]

704 名前:デフォルトの名無しさん (ワッチョイ 93f0-WivN) [2023/08/23(水) 22:44:49.61 ID:slwUpp650.net]
C++でGUI作るときはQt使ってる。Designerが便利

705 名前:デフォルトの名無しさん (ワッチョイ 93f0-YAjS) mailto:sage [2023/08/24(木) 03:00:05.96 ID:KjKP5fLp0.net]
何故C++のGUIフレームワークのライセンスはLGPLばかりなのか

706 名前:デフォルトの名無しさん (ワッチョイ 599c-RKQT) mailto:sage [2023/08/24(木) 08:48:33.25 ID:TNcuPvYX0.net]
>>692
qtはqtライセンスあるだろ。
electron はMITだし、wxWidgetsも例外条項付きLGPL。

707 名前:デフォルトの名無しさん (アウアウウー Sa45-WivN) [2023/08/24(木) 19:48:24.59 ID:IxxAot5ma.net]
ImGuiってどうよ?

708 名前:デフォルトの名無しさん (ワッチョイ db79-wKkg) mailto:sage [2023/08/24(木) 22:02:03.62 ID:W+JHQ2GG0.net]
>C++でGUI
出てくるモノが昔と代わり映えしてなくて草
C#でええやろ

709 名前:デフォルトの名無しさん (ワッチョイ 3128-gjgG) mailto:sage [2023/08/25(金) 07:08:59.02 ID:rQn+0/0C0.net]
C++よりC#やJavaの方がGUIを書きやすいという言語の違いに起因する理由って何かあるっけ
リフレクションやガベージコレクションが別段必須でない気もするし
async/awaitが付く前からなんかJava/C#でGUI、という流れになっていた気がするし、
実はインテリセンスが効きやすい、とかアプレット的なやつがActiveXより書きやすかったから、とかそんなのが理由だったりして……
つなみにX window systemは良く知りま栓



710 名前:デフォルトの名無しさん (ワッチョイ 599c-HTZh) [2023/08/25(金) 07:59:22.15 ID:w6iB83KR0.net]
GUIツールキットの設計・開発は難しい
JavaはAWT→Swing→JavaFX
.NETはWinForms→WPF→UWP→WinUI3
何度も作り直してるんだよね

C++には標準GUIツールキットなんて要らないよ(どうせ何度も作り直すことになる)

711 名前:デフォルトの名無しさん (ワッチョイ 3128-gjgG) mailto:sage [2023/08/25(金) 08:10:08.12 ID:rQn+0/0C0.net]
ゴメリよく考えたらフレクションがあると強いわ;;;
フォームエディタみたいなやつを提供する立場にたてば
ウィジェットクラスを作ったらそれだけでリフレクションを使ってそいつのプロパティーを即エディターのプロパティーに並べられるて
利用者に提供できうる

712 名前:デフォルトの名無しさん (ワッチョイ 93f0-WivN) [2023/08/25(金) 08:33:12.71 ID:8nfgHtXd0.net]
>>698
それくらいならC++でもヘッダ見ればリフレクション無しでできるんじゃね?

713 名前:デフォルトの名無しさん (アウアウウー Sa45-greZ) [2023/08/25(金) 09:11:51.64 ID:5+gJach+a.net]
>>696
X の頃は x 用の toolkit があったけど
tcl/tk が便利過ぎてそっちに行った人多し

714 名前:デフォルトの名無しさん (ブーイモ MMb3-HTZh) [2023/08/25(金) 09:51:27.88 ID:5ARzKA7QM.net]
フォームエディターっていつの時代よ
それってホームページビルダーでホームページ作るようなもので柔軟性がないんだよね
ウィンドウサイズ固定ならともかく、可変サイズのレイアウト作るならGUIデザイナ使うよりコード書いたほうが管理しやすい
ホームページビルダーよりHTML/CSS手書きを選ぶのと一緒

715 名前:デフォルトの名無しさん (ワッチョイ 9990-JowH) mailto:sage [2023/08/26(土) 21:45:39.47 ID:uP0Ej+dj0.net]
>>698
たしかにそうだよな
スレッド周りなんて他で試行錯誤して枯れて辺りで
正式採用されたもんな

716 名前:デフォルトの名無しさん (オイコラミネオ MM65-u1T+) mailto:sage [2023/08/28(月) 00:05:48.18 ID:HI9+dVvpM.net]
>>695
嫌だ。

717 名前:デフォルトの名無しさん (ワッチョイ 8610-4o0D) mailto:sage [2023/08/29(火) 00:12:25.55 ID:VlZlfeK60.net]
c++builderってネットに殆ど情報ないですね。
書籍もないし。
あまり使われてないからだと思うけど、これ使って開発すると躓いたら解決策見つからず苦労しますかね、、。

718 名前:デフォルトの名無しさん mailto:sage [2023/08/29(火) 03:59:08.18 ID:7e4Tklec0.net]
Builderの情報はほとんどないけどC++の情報はいっぱいある
VCLの情報はDelphiと同じだからなんとか探せばある
自分はBuilderだけ買ったけど同時にDelphiも買っておけばよかったとちょっと後悔はしているね
その程度には中途半端な存在と思う

719 名前:デフォルトの名無しさん (ワッチョイ 6dda-PUhn) mailto:sage [2023/08/29(火) 11:29:24.11 ID:r8rvdmrM0.net]
VCLのソースがないと中でなにやってるかワカランからな



720 名前:デフォルトの名無しさん (ワッチョイ caad-VnR5) mailto:sage [2023/08/29(火) 16:30:54.10 ID:2MvLEdvj0.net]
ヘッダにインターフェースだけ書いてcppにインプリメントクラスを定義して隠蔽するのって
ライブラリとかフレームワークだと意味あるけどアプリケーションレベルの実装でやる意味って無いですよね?

721 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a13e-aWw4) mailto:sage [2023/08/29(火) 16:40:14.71 ID:s7G+g/ai0.net]
>>707
インターフェースって何?

722 名前:デフォルトの名無しさん (ワッチョイ d95f-1fgM) mailto:sage [2023/08/29(火) 16:40:33.32 ID:Gj9jSZac0.net]
インターフェースが何を指すか次第だけど、たぶんPimplイディオムのことかな?
ライブラリみたいに境界がかっちりしてないならそうかもね

723 名前:蟻人間 ◆T6xkBnTXz7B0 (スフッ Sdea-fyEs) mailto:sage [2023/08/29(火) 16:40:58.05 ID:A1BJ1LVxd.net]
>>707
ビルド時間を短縮する目的での隠蔽に使われることはある。隠蔽っていろいろ便利だから。

724 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a13e-aWw4) mailto:sage [2023/08/29(火) 17:08:55.74 ID:s7G+g/ai0.net]
pimpl は疎結合にできる分だけ
差分ビルドでコンパイルする範囲が
小さくなるから特に巨大なプログラムの開発では
ビルド時間を短縮する意味はあるはずだが
余計な構造を挟む煩わしさと比べて
割にあうのはよっぽど極端な場合に限ると思われている。
(意味はあるが意味のある状況は限定的)

725 名前:デフォルトの名無しさん (ワッチョイ a910-/+sI) mailto:sage [2023/08/29(火) 22:48:32.90 ID:fHM5F2qI0.net]
>>707
大きなアプリを、元請け社の元で複数の下請けが作っている場合、
お金の流れが全然違う他社のコードとリンクする事はあるよね。

で、紳士協定で「設計書で使っていいと言ってる機能だけ外部から使って」としても
約束を破るバカモノがいる場合もある。
信頼できない他社から自社の身を守る(徹夜で他社のバグ解析に付き合わされる事を防ぐ)など
レイヤー化する事には、もしかしたら意味があるかも知れないね

悲しい&バカらしいかも知れないけど

あとは逆に、自社の実装バグを見つけてアッー!ってなった時に、インタフェースを守ってる他社に、自社の実装変更&リリースによる「再ビルド要」の迷惑をかけてしまう事を防ぐ、意味はあるかも知れない

726 名前:デフォルトの名無しさん (ワッチョイ a910-/+sI) mailto:sage [2023/08/29(火) 22:49:56.05 ID:fHM5F2qI0.net]
いや、分からんな、ゴメン

727 名前:デフォルトの名無しさん (ワッチョイ 2501-xDGp) mailto:sage [2023/08/29(火) 22:55:37.38 ID:82ATxlW40.net]
デフォルトでpimplの俺は少数派か...

728 名前:デフォルトの名無しさん (ワッチョイ 2501-xDGp) mailto:sage [2023/08/29(火) 23:23:11.79 ID:82ATxlW40.net]
C++はCの構造体をクラスに流用したからメンバー変数が見えてるけど
pimplのように隠れて然るべきが俺の持論
最適化の段階でinline化したい関数で触っている変数のみ
pimplの隠れた構造体から表の構造体に移動させているな
面倒くさくないかって? テンプレート用意してるから全然

729 名前:デフォルトの名無しさん (ワッチョイ 15b3-NdIe) mailto:sage [2023/08/30(水) 00:04:31.34 ID:mW2zyf/K0.net]
C++には不思議な魅力がある
C#



730 名前:デフォルトの名無しさん (ワッチョイ 15b3-NdIe) mailto:sage [2023/08/30(水) 00:05:23.32 ID:mW2zyf/K0.net]
なんか途中で書き込みに行きやがった
JDimバグってないか???

731 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a13e-e+8E) mailto:sage [2023/08/30(水) 00:13:16.01 ID:9akroxuQ0.net]
>>715
隠すべきものが隠せていないのはそうだけど構造体を流用したことというよりも、
各翻訳単位でコンパイルしてからリンクするという C の手順を踏襲した都合だと思う。
他の翻訳単位の情報を見ずにコンパイルできる状況にするということを曲げないなら
オブジェクトの大きさを確定するのに必要な情報をクラス定義内に書く仕組みにせざるを得ない。

732 名前:デフォルトの名無しさん (ワッチョイ 355f-vHpx) mailto:sage [2023/08/30(水) 12:34:02.83 ID:biy0pv8/0.net]
>707 が言ってるのはたぶん pimpl じゃなくて抽象クラス(=インターフェースクラス)を使った隠蔽じゃないかな?
pimpl より楽なので新規クラスではこっちしか使わなくなった。

733 名前:デフォルトの名無しさん (ブーイモ MMea-C1Tt) mailto:sage [2023/08/30(水) 15:13:40.69 ID:STopcx5aM.net]
>>719
メンバー関数の宣言が重複するのが
こちらは嫌なところかなぁ

734 名前:デフォルトの名無しさん (ワッチョイ 3e79-FVin) mailto:sage [2023/08/30(水) 16:07:23.97 ID:bGhOLdki0.net]
pimplなんてCでは普通のテクニックだったのにC++はいちいち大げさだなあ

735 名前:デフォルトの名無しさん (ワッチョイ 86fb-1XyZ) mailto:sage [2023/08/30(水) 19:39:24.36 ID:rrx0kAlJ0.net]
オタク界隈やと呼吸レベルで使いこなすよな

736 名前:デフォルトの名無しさん (スップ Sdea-0Z8Z) mailto:sage [2023/08/31(木) 07:08:06.02 ID:wYoApzHMd.net]
>>717
手元がバグってるだけじゃないかな(名推理)

737 名前:デフォルトの名無しさん (ワッチョイ c328-9M69) mailto:sage [2023/09/03(日) 20:40:30.70 ID:uJA/UdoJ0.net]
pimplのクラスか構造体の宣言だけ行うところでC++Testに文句言われる……

738 名前:デフォルトの名無しさん (アウアウウー Sae7-fXI3) [2023/09/04(月) 10:15:14.85 ID:/ASAZOX6a.net]
Rust使い過ぎてC/C++でclassとstructに;付け忘れはあるある

739 名前:デフォルトの名無しさん (ワッチョイ 3378-+GqY) [2023/09/05(火) 01:10:33.18 ID:6M2Epndy0.net]
templateを使わなきゃpimplなんか必要ないだろ。



740 名前:デフォルトの名無しさん (ワッチョイ 4301-bHR5) mailto:sage [2023/09/05(火) 01:16:38.13 ID:c+OS/OAh0.net]
>>726
やっぱデフォルトでpimplの俺は少数派かなぁ

741 名前:デフォルトの名無しさん (ワッチョイ 4301-bHR5) mailto:sage [2023/09/05(火) 01:18:44.98 ID:c+OS/OAh0.net]
>>726
というよく読んだら気付いたが
templateこそpimplと相性悪いのでは?

742 名前:デフォルトの名無しさん (ワッチョイ 3378-+GqY) [2023/09/05(火) 01:36:59.02 ID:6M2Epndy0.net]
あー、誰かが言ってるようにpimpl使わないと、ヘッダファイルだかCPPファイルだか1行修正しただけで全部再コンパイルされてしまうというのあったな。

743 名前:デフォルトの名無しさん (ワッチョイ b67a-6I4L) mailto:sage [2023/09/09(土) 00:14:54.72 ID:N+hvybCm0.net]
自分に合うC++の本を探しています。
独習c++(高橋)を候補にしてます。
以下の程度の人に向いているでしょうか。

Cはポインタを含めてほぼすべて分かります。

C++は昔、クラス周辺の文法を林本で理解したものの、ほとんど書いてないので設計ノウハウがなく、ここは強化したい点です。

C++11より前なので11以降が分かりません。テンプレートやベクターもまったく分かりません。

744 名前:デフォルトの名無しさん (オイコラミネオ MM63-SjEv) mailto:sage [2023/09/09(土) 00:39:25.00 ID:uw9REbuTM.net]
なんで一冊だけ決めて勉強するのか意味不明なんだな
とりあえず読め
沢山読んだら死ぬのか?

745 名前:デフォルトの名無しさん (ワッチョイ 2328-E2FL) mailto:sage [2023/09/09(土) 00:40:08.83 ID:JvG/rAdc0.net]
>>728
むしろ発想が逆で、templateを使い倒して書いたモジュールをの公開インターフェースからtemplateの痕跡を消してしまうのに使う

746 名前:デフォルトの名無しさん (オイコラミネオ MM63-SjEv) mailto:sage [2023/09/09(土) 00:42:57.07 ID:uw9REbuTM.net]
ここにいる連中は太古の昔に入門して入門書なんて無縁なんだ
良書などなく分厚くて誤訳満載の本を読んで勉強して血を流しながら進んだ
何冊も読んだ

タイパなんてくそくらえ
到達したいところがあるなら時間を掛けろ

747 名前:デフォルトの名無しさん (ワッチョイ 2328-E2FL) mailto:sage [2023/09/09(土) 00:44:19.17 ID:JvG/rAdc0.net]
今日聞いたのですだがオンライン辞書サービス Dictionary.com にアルゴリズムの短縮形 algo が追加されたらしい
すっかり定着したコンストラやデストラといった略語もそのうち辞書に載るかも……

748 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-1kEh) mailto:sage [2023/09/09(土) 01:21:30.56 ID:Ig5iuvnc0.net]
C++ は一般原則で示せない変則的なルールも多いのでそういうのはまるごと知っておくしか仕方がない。
そういったルールの分量が単純に多いから学習するにはたくさん読まないといけないのも仕方がない。

僅かだが互換性を損なう仕様改定もあるし、作法が変わった部分もあるので混乱しないように古すぎる資料は避けた方がよさそうという程度の助言は出来るけど具体的に現代的な入門書というと手堅いものは挙がらんのよな……

749 名前:デフォルトの名無しさん (ワッチョイ 177c-h0AF) mailto:sage [2023/09/09(土) 01:29:10.69 ID:444GCDJV0.net]
Cしか知らんならC++より先に一般的なオブジェクト指向の勉強した方が良さそう
Cの延長で文法と機能だけつまみ食いしてたらstaticおじさんが生まれてしまう



750 名前:デフォルトの名無しさん (ワッチョイ 1710-Z579) mailto:sage [2023/09/09(土) 06:43:09.16 ID:Ej2BTroL0.net]
C++は余りに途方もないというか、難しいですよね

「ポインタを分かってます」とか言ってしまう時点で想像がつくというか、遠いなというか

751 名前:デフォルトの名無しさん (ワッチョイ 23f0-JHZ4) [2023/09/09(土) 09:16:01.68 ID:46L/9V3B0.net]
とりあえず
Effective C++と
Effective Modern C++
あたりがいいんじゃない

752 名前:デフォルトの名無しさん (ワッチョイ 4efb-DZDQ) mailto:sage [2023/09/09(土) 09:40:35.80 ID:4/gA6xPM0.net]
>>730
色々読むのもありなんだけど
自分にあった本の探し方も学習の一つ
ネットの情報は鮮度もあるし、なんらかの意図が含まれている可能性があるので
本当に自分に合う本を探すつもりなら本屋に行ってみるのもありだよ
それと何を作りたいかによって、選ぶジャンルが違ってくると思うんだ
網羅的に読みたいのであれば、c++の開発者が書いた本もあるし、最近なら苦しんで覚えるシリーズも売れているだろうし
目的を強くイメージできて、この本からその目的の学習ができ、スキルアップ可能なのかどうかをしっかりと自問自答すると…

753 名前:デフォルトの名無しさん (ワッチョイ e301-aVri) [2023/09/09(土) 12:03:26.84 ID:ipyM0SHG0.net]
Scott Mayers信者うざい

754 名前:デフォルトの名無しさん (ワッチョイ 0b01-HtNW) mailto:sage [2023/09/09(土) 12:41:12.24 ID:MLVcfiFl0.net]
Mayersはtips集だから>>730の段階では早い
Mayersは良いこと書いてるよ
ただしMore Effective C++は訳が酷かった

755 名前:デフォルトの名無しさん (オイコラミネオ MM63-SjEv) mailto:sage [2023/09/09(土) 13:48:08.63 ID:uw9REbuTM.net]
昔々は技術書系はもう訳がめちゃくちゃだった

なんの本か忘れたけど技術者じゃないただの翻訳家みたいのが訳したのがあって
ずっと「所与の」の言うワードがページにちりばめられていて読みづらいのなんの

所与の値、所与の条件、所与の…
日常生活で所与のって使わんだろ
どんな爺さんが訳したんだか

756 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-1kEh) mailto:sage [2023/09/09(土) 14:37:56.58 ID:Ig5iuvnc0.net]
他にどう表現すればよかったと思う?

757 名前:デフォルトの名無しさん (スッププ Sdba-1UeE) mailto:sage [2023/09/09(土) 15:44:12.23 ID:npM3Z9YAd.net]
そんな部分よりも
専門用語がめちゃくちゃで意味が通じない方が問題だと思うよ

758 名前:デフォルトの名無しさん (ワッチョイ b65f-MmH2) mailto:sage [2023/09/09(土) 15:47:03.01 ID:IggX53ET0.net]
スレッドを「糸」と翻訳したり、ポートをマジで「港」と翻訳してる本なら持ってる

759 名前:デフォルトの名無しさん (スッププ Sdba-1UeE) mailto:sage [2023/09/09(土) 15:49:24.11 ID:ntGEHGTWd.net]
ファイバーとかマスタースレーブとか

今だと海外通販の日本語訳が面白い
勝利11
男性女性ケーブル



760 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-1kEh) mailto:sage [2023/09/09(土) 16:02:33.33 ID:Ig5iuvnc0.net]
専門用語は多少は不自然でもいいが(その分野では)皆が一貫して同じ用語を同じ意味で使ってくれんと困るな。
でも慣例が確立していない時代のものなら今の時代から見て不自然なことがあってもそれは仕方がない。

761 名前:デフォルトの名無しさん (ワッチョイ 7af0-SjEv) mailto:sage [2023/09/09(土) 16:24:17.70 ID:GTFNmrLV0.net]
JISが更新されないから新しい日本語訳はもう生まれてこないんだ
新たな誤訳に悩まされる事が無くなってよかったな?

762 名前:デフォルトの名無しさん (オイコラミネオ MM63-SjEv) mailto:sage [2023/09/09(土) 16:32:21.11 ID:uw9REbuTM.net]
given 与えられた
assigned 割り当てられた
allocate 配置された

覚えてる感じだと大体このあたりが全部所与のになってた
ありえない

763 名前:デフォルトの名無しさん (ワッチョイ 2328-E2FL) mailto:sage [2023/09/09(土) 17:09:59.01 ID:JvG/rAdc0.net]
行き先:女性との別れ

764 名前:デフォルトの名無しさん (ワッチョイ 2328-E2FL) mailto:sage [2023/09/09(土) 17:35:14.02 ID:JvG/rAdc0.net]
・算譜
・算体
・算帖
・算程
・作譜
・作譜用言語
・譜構
・模塊
・偏位
・際どい部分
・行き詰まり

765 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-1kEh) mailto:sage [2023/09/09(土) 17:40:33.10 ID:Ig5iuvnc0.net]
バグ取りを蟲繕い(むしつくろい)って書いてたのもどこかで見たことがあるな

766 名前:デフォルトの名無しさん (ワッチョイ 838e-7VGn) [2023/09/09(土) 17:49:07.83 ID:tJCpX1LH0.net]
ストライクをよし!とか言い出しそう

767 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1732-1kEh) mailto:sage [2023/09/09(土) 18:57:14.21 ID:k09IENG+0.net]
カタカナ語よりは短く表現できるからもしも訳語として定着していたならそれはそれでアリだと思う。
でも定着しなかったという現実を前にしたら仕方がないね。

768 名前:デフォルトの名無しさん (ワッチョイ 0b01-NP+X) [2023/09/09(土) 19:12:51.10 ID:4bE7KSLp0.net]
>>748
カタカナ語も誤読が蔓延しているので良くない。

garbage ○ガーベジ ×ガベージ
iterator ◎イタレイタ ○イタレータ ×イテレータ
operand ○オパランド ×オペランド
operator ◎オパレイタ ○オパレータ ×オペレータ
reference ◎レフランス ○レファレンス ×リファレンス
storage ○ストーレジ ×ストレージ

769 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-1kEh) mailto:sage [2023/09/09(土) 19:18:35.71 ID:Ig5iuvnc0.net]
それは日本方言



770 名前:デフォルトの名無しさん (ワッチョイ ff39-bdWa) [2023/09/09(土) 19:20:01.31 ID:1xGTpgW80.net]
>>755
文系くさいマウントだなw

カタカナで書いてる時点で正しい英語でも何でもねえんだよ
文系でも底辺カーストだろ、おまえw

771 名前:デフォルトの名無しさん (ワッチョイ dbcf-SjEv) mailto:sage [2023/09/09(土) 20:12:08.56 ID:Vd67mKNx0.net]
少なくとも長音の位置はどっちが正解と言い切れるものではない

772 名前:デフォルトの名無しさん (ワッチョイ 0b01-NP+X) [2023/09/09(土) 20:33:28.51 ID:4bE7KSLp0.net]
>>758
gar·bage /ˈɡɑːbɪdʒ/
stor·age /ˈstᴐːrɪdʒ/

第1音節が長母音でアクセントもあり、第2音節が短母音でアクセントもないのに、後の方を長くするのは明らかに間違い。

773 名前:デフォルトの名無しさん (ワッチョイ 1710-y1iQ) mailto:sage [2023/09/09(土) 20:45:53.06 ID:Ej2BTroL0.net]
便乗w。警告ウォーニングをワーニングって言うの、やめよう。ね。

774 名前:デフォルトの名無しさん (ワッチョイ 23f0-JHZ4) [2023/09/09(土) 20:56:01.80 ID:46L/9V3B0.net]
autoはアウトと呼ばれない謎

775 名前:デフォルトの名無しさん (ワッチョイ e3da-bfD5) mailto:sage [2023/09/09(土) 21:03:24.19 ID:4yGgnkB40.net]
automaticの略だから発音は謎
intをなんと発音すべきか問うているようなものよ

776 名前:デフォルトの名無しさん (ワッチョイ 9a6a-MmH2) [2023/09/09(土) 21:08:43.40 ID:yhgo4C8h0.net]
routineをルーティーンって書く最近の風潮に違和感

777 名前:デフォルトの名無しさん (ワッチョイ 179c-C+22) [2023/09/09(土) 21:12:22.45 ID:ed8VSodZ0.net]
ワーニングは和製英語なんだからワーニングでいいでしょ
服のシワをとる機械のことアイアンって呼んでるの?アイロンでしょ?
スキー板を固定する器具をバインディングって呼んでるの?ビンディングでしょ?

カタカナ語として定着しているものの発音がーとか言ってもしょうがないよ

778 名前:デフォルトの名無しさん (スッププ Sdba-1UeE) mailto:sage [2023/09/09(土) 22:58:47.81 ID:2svzew1vd.net]
charをチャーって言うのは気に食わない

779 名前:デフォルトの名無しさん (ワッチョイ 1710-y1iQ) mailto:sage [2023/09/09(土) 23:09:32.43 ID:Ej2BTroL0.net]
>>764
服のシワを取るシステムやスキー用品のシステムを作ってるなら顧客に合わせるけど、ドメイン名解決のソフトはバインドと呼ぶしソケットにアドレスを紐づけるのもバインドと呼んでるよ
まあ君はそれで行きなされ。私も私の道を行くよ



780 名前:デフォルトの名無しさん (ワッチョイ a702-8VQg) mailto:sage [2023/09/09(土) 23:19:04.00 ID:K25duMZT0.net]
>>753
いいね
野球も〝ひとよし〟〝ふたよし〟でいこうよ

781 名前:デフォルトの名無しさん (ワッチョイ a702-8VQg) mailto:sage [2023/09/09(土) 23:21:08.37 ID:K25duMZT0.net]
>>765
いや、それは〝ちゃー〟です

782 名前:デフォルトの名無しさん (ワッチョイ 179c-C+22) [2023/09/09(土) 23:28:03.12 ID:ed8VSodZ0.net]
>>766
顧客に合わせるってのは慣習に合わせるってことでしょ? それでいいと思うよ
ワーニングもアイロンもビンディングも慣習的にカタカナでそう綴られてきて定着してる
いまさらネイティブの発音とギャップがあるとか言われてもねえ

783 名前:デフォルトの名無しさん (ワッチョイ 179c-C+22) [2023/09/09(土) 23:33:22.85 ID:ed8VSodZ0.net]
アイロンのことを正しい発音はアイアンだよって訂正されたら「この人、日本語のアイロン知らんのかな?」って思うでしょ
ワーニングも同じ
ワーニングを正しい発音はウォーニングだよって訂正する人たまにいるけど「この人、日本語のワーニング知らんのかな?」っ思う

784 名前:デフォルトの名無しさん (ワッチョイ 0b01-HtNW) mailto:sage [2023/09/09(土) 23:38:57.43 ID:MLVcfiFl0.net]
channelはチャンネルからチャネルになったな

785 名前:デフォルトの名無しさん (ワッチョイ 7af0-SjEv) mailto:sage [2023/09/09(土) 23:41:50.50 ID:GTFNmrLV0.net]
>>771
これおじさん的に衝撃的だったよね
「テレビ8チャンに変えて」を"8チャネ"に変えてに変えないといけなくなる

786 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-1kEh) mailto:sage [2023/09/10(日) 00:17:52.94 ID:ucqWE+/B0.net]
英語の発音なんか雑なもんやぞ。
ワイが知っとる例だと particularly をパティキュリと言ってる人がかなり多いとか言う話やな。
音が入れ替わったり脱落したりなんてよくあることで、正しい発音はない。
表音文字なのに音を表すのを諦めとるから雑さが加速しとる気がする。

787 名前:デフォルトの名無しさん (ワッチョイ a702-8VQg) mailto:sage [2023/09/10(日) 00:39:41.79 ID:y88PGdZC0.net]
>>771
通信業界にいた身としては〝Dチャネル〟や〝Bチャネル〟って言ってたけど、テレビは〝チャンネル〟でしょ
そしてここは〝5ちゃんねる〟

788 名前:デフォルトの名無しさん (ワッチョイ 0b01-HtNW) mailto:sage [2023/09/10(日) 01:06:53.71 ID:uILl1E7m0.net]
>>774
>そしてここは5ちゃんねる
ああ!そうだね

789 名前:デフォルトの名無しさん (ブーイモ MMb6-6jLp) [2023/09/10(日) 03:55:17.68 ID:mjW4Nz4DM.net]
VC++ って名前に反して 実は VC++ Runtime ありきの中間言語ですか、Borland C++ は Native なんでつか??

折角C++で書いても Win32API 使ったら、 Runtime ないと怒られるのは悲しい><



790 名前:デフォルトの名無しさん (ブーイモ MMb6-6jLp) [2023/09/10(日) 03:58:45.21 ID:mjW4Nz4DM.net]
>>770 情報関係だと基本、カタカナ語使わず英語をそのまま記載するのでゎ。同音異義語が多くて紛らわしいという事もありますし。
人名と用語は英語で記載。

Runtime、Native ぐらいならカタカナでも良いかなと思うが、いちいちそこで切り分けるのも面倒だから、もう英語で。

791 名前:デフォルトの名無しさん (ブーイモ MMb6-6jLp) [2023/09/10(日) 04:06:35.32 ID:mjW4Nz4DM.net]
>>755 誤読はまだしも、誤訳で有名なのは イマジナリショート。

漏れも持ってて勉強した トランジスタ技術 OPアンプ回路の設計という本で、 イマジナリショートと紹介してあった。
しかもご丁寧に imaginary short と。

CQ誌は今でも意固地(わかってて)に、 imaginary short という用語を website に公開してある。

いまでこそソフトウエアの分野では 仮想化技術が浸透したので、仮想といえば virtual だが、
当時は文学が好きな人がイマジナリーと訳しちゃったんのかな、と。

ただそれの恐ろしいことは CQ 誌で紹介された用語が、 Ohm社などの電子回路の教科書にも、えいえんとその誤訳が
使われ続け、半世紀たったいまでも改善がない・・

792 名前:デフォルトの名無しさん (ブーイモ MMb6-6jLp) [2023/09/10(日) 04:09:52.26 ID:mjW4Nz4DM.net]
ソフトウエアもそうだが、ソリッドステート(トランジスタ)回路も、学術より企業の方が進んでいて、

1970年代、企業技術者がまっさきに技術書を書いて、学術家(教員)がそれを天下り的に学生に教えていた経緯から、
おそろしいことに誤訳が広まったのだろう。

幸い、ソフトウエアの用語では誤訳が広まった例を聞いたことがないが、何かあるのだろうか?

793 名前:デフォルトの名無しさん (ブーイモ MMb6-6jLp) [2023/09/10(日) 04:15:15.20 ID:mjW4Nz4DM.net]
Visual C++ ってのも製品名(商標)ではあるが、何が Visual なのか全くわからんな・・・

Runtime 言語だから、 Virtual C++でもよかったのに。。

794 名前:デフォルトの名無しさん (ワントンキン MM8a-HSys) mailto:sage [2023/09/10(日) 04:18:48.48 ID:S3Exn9iLM.net]
X えいえんと
O えんえんと 延々と

795 名前:デフォルトの名無しさん (ワントンキン MM8a-HSys) mailto:sage [2023/09/10(日) 04:20:33.14 ID:S3Exn9iLM.net]
>>780
GUIか作れたからVisualなんだよ…
virtual関係ない

796 名前:デフォルトの名無しさん (ブーイモ MMb6-6jLp) [2023/09/10(日) 04:21:53.21 ID:mjW4Nz4DM.net]
トランジスタってのもそうですな。これは三本足を意味するので、半導体であることを強調する場合は 古めかしい用語、ソリッドステート
がいまだに用語として使われている。SSD、SSRとかも。

あとはダイオードもそうだ。ダイオードといえば今日では半導体ダイオードをほぼ指すが、真空管時代にもダイオードがある。
制御端子のついた素子の場合は、真空管の場合は3つ足ではなく、4つ足だから、これはトランジスタに関しては混同することはないけれども。


カタカナ語なんてのはどうせ和製英語なんだし、そもそもが間違いだから、そのツヅリが多少違ってようが、はっきりいってどうでもいいが、
それよりは用語そのものが重要な気がする。

797 名前:デフォルトの名無しさん (ブーイモ MMb6-6jLp) [2023/09/10(日) 04:23:22.67 ID:mjW4Nz4DM.net]
>>782 GUIだから Visual って、なんかザパニーズ的な発想だな、て思ってさぁ。。

798 名前:デフォルトの名無しさん (ブーイモ MMb6-6jLp) [2023/09/10(日) 04:24:45.09 ID:mjW4Nz4DM.net]
GUIといえば、いまだにツヅリがまともに出てこないのが、 WYSIWYG だな・・・

これなんだよって思う・・覚えにくいわ。

799 名前:デフォルトの名無しさん (ワンミングク MM8a-HSys) mailto:sage [2023/09/10(日) 04:26:02.38 ID:CBa8BQ/hM.net]
>>784
runtimeもCRTなだけであって中間言語ではない
設定すればリンクしておけた



800 名前:デフォルトの名無しさん (ワンミングク MM8a-HSys) mailto:sage [2023/09/10(日) 04:28:34.59 ID:sGHB2qn6M.net]
>>785
wysiwygは画面と印刷の話であってボタンなどのGUIは関係ない

801 名前:デフォルトの名無しさん (ブーイモ MMb6-6jLp) [2023/09/10(日) 04:28:45.86 ID:mjW4Nz4DM.net]
ググったら真空管って色々あるんだな。学校で習ったときは4端子だから、それしか知らんかった・・

802 名前:デフォルトの名無しさん (ブーイモ MMb6-6jLp) mailto:sage [2023/09/10(日) 04:32:12.32 ID:mjW4Nz4DM.net]
>>786 そうだね。でも CLR を含めた DLL は、.NET で動かすことはできないぢゃない。共存できないとかで。

803 名前:デフォルトの名無しさん (ワンミングク MM8a-HSys) mailto:sage [2023/09/10(日) 04:32:25.91 ID:Cs1N+L1lM.net]
むしろ4端子の真空管知らんわw

804 名前:デフォルトの名無しさん (ワンミングク MM8a-HSys) mailto:sage [2023/09/10(日) 04:33:43.35 ID:Cs1N+L1lM.net]
>>789
あまりに物を知らなすぎ
もう少しググってからにしろ

805 名前:デフォルトの名無しさん (ブーイモ MMb6-6jLp) mailto:sage [2023/09/10(日) 04:34:01.51 ID:mjW4Nz4DM.net]
>>786 もどかしいんだよな。 CLI て .NET へ展開ありきなのに、.NET で動かそうと思うと、VC++, .NET それぞれの Runtime
をインスコしないといけないなんて・・

806 名前:デフォルトの名無しさん (ブーイモ MMb6-6jLp) [2023/09/10(日) 04:36:01.83 ID:mjW4Nz4DM.net]
>>791 中間言語は暴論だった。バイトコードとか、そういうのは知ってるよぅ。

でもVC++が Native というと、微妙だよね?

807 名前:デフォルトの名無しさん (ワンミングク MMdf-HSys) mailto:sage [2023/09/10(日) 04:37:18.31 ID:2P1NQmHAM.net]
>>793
完全にnativeだバカ

808 名前:デフォルトの名無しさん (ブーイモ MMb6-6jLp) [2023/09/10(日) 04:44:45.18 ID:mjW4Nz4DM.net]
>>794 そう。そういうものだと思って諦めよう。

VC++ Runtime , .NET Runtime 両方をインストールなんて・・・・・

809 名前:デフォルトの名無しさん (ブーイモ MMb6-6jLp) [2023/09/10(日) 04:45:41.78 ID:mjW4Nz4DM.net]
CLR と CLI ってのも 1字違いで紛らわしいよね。作ってるから混同することないが、ネットには嘘ばっかり書いてある。



810 名前:デフォルトの名無しさん (ブーイモ MMb6-6jLp) [2023/09/10(日) 04:46:55.11 ID:mjW4Nz4DM.net]
私が嘘をつくように、Google ったものもやっぱり半信半疑だな。読みづらいけど、MSDN が頼りか。

811 名前:デフォルトの名無しさん (ブーイモ MMb6-6jLp) [2023/09/10(日) 04:52:52.27 ID:mjW4Nz4DM.net]
VC++ の絵本って巷に沢山あるのに、 P/Invoke の込み入った話なると絶滅するのは何でだろう。パンチラ的に紹介してる本は
持ってるが、暗黙で処理される範囲の、marshal_as しか書いてない。

別にあれだけでも、どんな型だろうと、力技で .NET へ展開はできるが、そういうヴァカげたことをしなくてもいいように
メソッドがあるらしいが・・ MSDN には網羅的に書いてない気がするんだよな・・

だれかプログラマの人、だれが知ってますか?

812 名前:デフォルトの名無しさん (ブーイモ MMb6-6jLp) [2023/09/10(日) 05:08:17.06 ID:mjW4Nz4DM.net]
https://www.pinvoke.net/

こんな面白いサイトがあった。

813 名前:デフォルトの名無しさん (ブーイモ MMb6-6jLp) [2023/09/10(日) 05:09:01.19 ID:mjW4Nz4DM.net]
でもこれ marshal じゃなく、 winAPI のサイトだった。騙された。

814 名前:デフォルトの名無しさん (ブーイモ MMb6-6jLp) [2023/09/10(日) 05:15:58.88 ID:mjW4Nz4DM.net]
今気づいたが、イマジナリショートの話題を出すこと自体が、名誉棄損になるんだな。

悪意はなかった。

815 名前:デフォルトの名無しさん (ワッチョイ 1710-y1iQ) mailto:sage [2023/09/10(日) 06:28:06.21 ID:FLd+43pK0.net]
なんか、ゴメンなみんな
変なの来て

816 名前:デフォルトの名無しさん (ワッチョイ 23c0-GCG0) mailto:sage [2023/09/10(日) 06:55:00.05 ID:Ribu4gV00.net]
こういう時は素数でも生成させて心を落ち着けよう

817 名前:デフォルトの名無しさん (スフッ Sdba-DsdQ) [2023/09/10(日) 10:31:59.53 ID:Ze6l4C7Cd.net]
>>784
OS に Windows って名前付ける

818 名前:Zンスがもうね

新聞ではウインドウズとかウインドーズとかもう読むのも恥ずかしい
[]
[ここ壊れてます]

819 名前:デフォルトの名無しさん (ワッチョイ 7679-767B) mailto:sage [2023/09/10(日) 10:35:29.16 ID:+iIUaIW20.net]
>P/Invoke
>pinvoke
前から思ってたけど
どう見ても日本語ではピンボケって発音になるんだけど合ってるよね?
プラットフォームうんちゃらとは言わないよね?



820 名前:デフォルトの名無しさん (ワッチョイ a702-8VQg) mailto:sage [2023/09/10(日) 11:26:23.32 ID:y88PGdZC0.net]
無駄に長いレスで危険に気づいて触らなかったぜ

821 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-1kEh) mailto:sage [2023/09/10(日) 12:35:27.08 ID:ucqWE+/B0.net]
>>804
新聞は縦書きが基本やからラテンアルファベットは収まりが悪いんや。

822 名前:デフォルトの名無しさん (ワッチョイ 5fa7-fyxg) mailto:sage [2023/09/10(日) 12:47:45.53 ID:RAKj8ghM0.net]
VSがC++を広めたという功績をいい加減認識しよう

823 名前:デフォルトの名無しさん (オイコラミネオ MM63-SjEv) mailto:sage [2023/09/10(日) 13:00:33.33 ID:YVmQiRtOM.net]
>>778
それは本人が広めた俗説で武勇伝のように語ってる人がいるだけなんだけどなあ
その人の前にすでに使ってる人がいるらしい

824 名前:デフォルトの名無しさん (ワッチョイ 7679-767B) mailto:sage [2023/09/10(日) 13:04:43.55 ID:+iIUaIW20.net]
イマジナリーフレンドとか日本ではもう負のイメージしかない

825 名前:デフォルトの名無しさん (オイコラミネオ MM63-SjEv) mailto:sage [2023/09/10(日) 13:14:50.06 ID:YVmQiRtOM.net]
今はネットがあるけど本しかなかった時代はこうだと言いきったらそれがすべてのように語り継がれる
よくあった話

考えても無駄で声の大きな人が叫び続けたらそれが真実になった時代

826 名前:デフォルトの名無しさん (ワッチョイ 23c0-GCG0) mailto:sage [2023/09/10(日) 13:33:32.78 ID:Ribu4gV00.net]
>>808
昔はTurbo C/C++あたりも貢献してた気がする

827 名前:デフォルトの名無しさん (ブーイモ MMb6-6jLp) mailto:sage [2023/09/10(日) 17:22:43.47 ID:mjW4Nz4DM.net]
>>811 void(main) もそうだな。火勃の処理系での話を、一般のCの本で示したり。今は見かけないが。

828 名前:デフォルトの名無しさん (ブーイモ MMb6-6jLp) mailto:sage [2023/09/10(日) 17:24:08.39 ID:mjW4Nz4DM.net]
昔の Cの本では「オマジナイ」と書いてあったのもあったな。今思えばちゃんと書けばいいのになぜ端折るのか。

829 名前:デフォルトの名無しさん (ブーイモ MMb6-6jLp) mailto:sage [2023/09/10(日) 17:28:16.55 ID:mjW4Nz4DM.net]
>>812 漏れウトリ世代やが、ガッコの頃は未だ課題とかでは Borland C++ 試食版を使えて云はれてたな。
Express は有ったと思うが、まだ無料で使える認識はなかった。

IDEがお高いなら如何しようもないし。



830 名前:デフォルトの名無しさん (ブーイモ MMb6-6jLp) [2023/09/10(日) 17:30:50.00 ID:mjW4Nz4DM.net]
無料云々よりも MS 毛嫌いしてた教官が多かったな。逆に漏れは UNIX のシステムコールに嫌悪して、パソコンは向いてないなと絶望したクチだが。

831 名前:デフォルトの名無しさん (ブーイモ MMb6-6jLp) mailto:sage [2023/09/10(日) 17:33:23.68 ID:mjW4Nz4DM.net]
>>813 main(void) だったw 恥w 過去のゆがんだ知識だけで喋るとろくなことねぇな・・ググって喋るか・・

832 名前:デフォルトの名無しさん (ワッチョイ 7af0-SjEv) mailto:sage [2023/09/10(日) 19:09:04.52 ID:Pd/KsKZr0.net]
ID真っ赤の人居てこえよ

833 名前:デフォルトの名無しさん (スッップ Sdba-GCG0) mailto:sage [2023/09/10(日) 20:01:28.68 ID:neTrtRBid.net]
大丈夫
そいつの人生が燃え尽きる前の最後の連投だろうからじきに居なくなるはず

834 名前:デフォルトの名無しさん (ワッチョイ 5702-lR3i) mailto:sage [2023/09/10(日) 20:08:30.15 ID:xFvkuA0z0.net]
どんなスレでも、開いたら真っ先に赤い ID を連鎖で消せばエエんやで。読む必要なんて全くない。

835 名前:デフォルトの名無しさん (ワッチョイ 1ac8-Du02) mailto:sage [2023/09/10(日) 20:57:47.15 ID:aESfk8YH0.net]
Borland がまだ試用版出してることに気づいてビビったぬ

836 名前:デフォルトの名無しさん (ワッチョイ 1710-y1iQ) mailto:sage [2023/09/10(日) 21:03:42.16 ID:FLd+43pK0.net]
ボーランド買収されたんじゃなかった?

837 名前:デフォルトの名無しさん (ワッチョイ 0eda-JsEB) mailto:sage [2023/09/10(日) 22:03:12.34 ID:2Yw/GuxT0.net]
普通 MIWA C++

838 名前:デフォルトの名無しさん (ワッチョイ 9a6a-MmH2) [2023/09/10(日) 22:11:12.61 ID:LbmwjQXL0.net]
経緯はよう知らんけどBorland --> Embarcaderoやね
C++Builder(Delphiだったか?)の円盤に入ってたWin32APIヘルプファイルには大変お世話になりました

839 名前:デフォルトの名無しさん (ワッチョイ 2328-E2FL) mailto:sage [2023/09/10(日) 22:17:07.52 ID:Pndu+c7V0.net]
>>780
統合開発環境Visual Studioで動かせるC++なのだ
からでは……



840 名前:デフォルトの名無しさん (ワッチョイ 7679-767B) mailto:sage [2023/09/10(日) 22:20:12.44 ID:+iIUaIW20.net]
Delphiが始めからC/C++だったら天下取ってた
しかし当時のC++仕様は微妙すぎた
Delphiである程度成功はしたがBorlandにとっては運命の割れ目だった

841 名前:デフォルトの名無しさん (スッップ Sdba-Du02) mailto:sage [2023/09/10(日) 22:58:01.53 ID:I57c0J7vd.net]
標準無視して勝手に仕様拡張するワケにもいかんしぬ

842 名前:デフォルトの名無しさん (ワッチョイ 4efb-DZDQ) mailto:sage [2023/09/10(日) 23:08:31.10 ID:r4gDBnSC0.net]
運命とケツの割れ目はご愛嬌

843 名前:デフォルトの名無しさん (ラクッペペ MMb6-5CWk) mailto:sage [2023/09/10(日) 23:16:25.54 ID:qGoahSWhM.net]
独自拡張というならVC++は上位互換ではあるけどほぼ別言語といえるレベルにまで拡張してる(>>686)
C++

C++マネージ拡張

C++/CLI ← いまここ

844 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-1kEh) mailto:sage [2023/09/10(日) 23:29:23.31 ID:ucqWE+/B0.net]
>>825
Visual Studio のほうがだいぶんあとから登場したんだよ。
Visual C++ は C++ の統合開発環境であって、後に Visual Basic などの 他言語と統合された開発環境 Visual Studio のパッケージのひとつという扱いになった。 (それまでは Visual という名前を冠した一連の製品ではあっても個別のものだった。)
処理系をコマンドラインから起動すると Microsoft(R) C/C++ Optimizing Comiler と表示されるので処理系の名前としてはこれが正式(?)なのかもしれない。

845 名前:デフォルトの名無しさん (ブーイモ MM26-6jLp) [2023/09/10(日) 23:57:08.12 ID:UW2UL+DpM.net]
へぇ、ためになった。AI君も僕にかまってくれてありが 10。

846 名前:デフォルトの名無しさん (ブーイモ MM26-6jLp) mailto:sage [2023/09/10(日) 23:59:45.33 ID:UW2UL+DpM.net]
しかし AI script ってあんまり進化してないよな。技術的な質問に答えて呉れる AI を見たことがなひw

847 名前:デフォルトの名無しさん (ブーイモ MM26-6jLp) mailto:sage [2023/09/11(月) 00:00:58.12 ID:XhEpfHVoM.net]
AI君って何時から御活躍してんでせうか。もやし、したらば時代から居たとか?だから牽制のために ROM ってろ文化があった?

848 名前:デフォルトの名無しさん (ブーイモ MM26-6jLp) mailto:sage [2023/09/11(月) 00:04:51.51 ID:XhEpfHVoM.net]
自然言語処理の次は圏論か。これもクリアしたら人間っていったいなんだろうなみたいな存在になるな。

849 名前:デフォルトの名無しさん (ブーイモ MM26-6jLp) mailto:sage [2023/09/11(月) 00:06:56.39 ID:XhEpfHVoM.net]
頭で考えたら、美しい組版の帳票がアウトプットされる世の中はまだかい?

AIって人間虐待のための技術かょぅ



850 名前:デフォルトの名無しさん (ブーイモ MM26-6jLp) mailto:sage [2023/09/11(月) 00:08:08.65 ID:XhEpfHVoM.net]
この国の AI って下品なんだよなぁ。。上流階級のためのAIなのに、当の AI はとにかく下品。。。

851 名前:デフォルトの名無しさん (ブーイモ MM26-6jLp) mailto:sage [2023/09/11(月) 00:10:27.09 ID:XhEpfHVoM.net]
LaTeX のあの組版の美しさに感動するやうな感性を持った、 AI の登場が望まれる。

鮮人臭ただよう AI では夢がない。

852 名前:デフォルトの名無しさん (ドコグロ MM92-ZC1a) mailto:sage [2023/09/11(月) 00:21:07.18 ID:VkTMNm5cM.net]
躁は夜更かしすると悪化するから早く寝なさい
あと病院行きなさい

853 名前:デフォルトの名無しさん (オッペケ Sr3b-nVfW) mailto:sage [2023/09/11(月) 08:57:15.49 ID:lFLbI9far.net]
>>827
勝手に仕様拡張しても、皆が受け入れたら仕様の方が合わせてくるでそ

854 名前:デフォルトの名無しさん (スッップ Sdba-Du02) mailto:sage [2023/09/11(月) 09:22:30.05 ID:5hY6loBvd.net]
>>839
ソコマデ傲慢にわなれなかったんじゃネエかと思いますケドぬ

855 名前:デフォルトの名無しさん (アウアウウー Sa47-bpS4) [2023/09/11(月) 09:37:37.78 ID:lXcI/Ajda.net]
>>826
BorlandはDOS用のCUI上のC++GUIフレームワークのOWLっていうものを持ってたんだがな
MFCみたいな糞に負けるとは情けない

856 名前:デフォルトの名無しさん (アウアウウー Sa47-bpS4) mailto:sage [2023/09/11(月) 09:44:12.90 ID:lXcI/Ajda.net]
>>826
>>841 自己レスだが久々に調べてみたら
OWLNext っていうのが継承しているらしい
使って観れば良い

857 名前:デフォルトの名無しさん (スップ Sd5a-8evO) mailto:sage [2023/09/11(月) 11:53:35.40 ID:L8vrhH0Dd.net]
あれ見てきてるとエックスも結局匕に戻すんじゃねと懐疑

858 名前:デフォルトの名無しさん (ワッチョイ 2390-71cs) mailto:sage [2023/09/11(月) 20:12:39.40 ID:OIxQu93L0.net]
いつの日かVB6案件があるかもと思って
まだ押入れにVisualStudio6Enterがある

しかし受注するのはJavaやC/C++ばかり

859 名前:デフォルトの名無しさん (オッペケ Sr3b-fSdR) mailto:sage [2023/09/12(火) 13:44:31.46 ID:T1psuRaDr.net]
>>837
やうな→ような
訂正しておいてあげる



860 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-1kEh) mailto:sage [2023/09/12(火) 15:52:50.87 ID:kNHas3Ho0.net]
歴史的仮名遣いなんだろ。
知らんけど。

861 名前:デフォルトの名無しさん (ワッチョイ 76e7-erq7) mailto:sage [2023/09/13(水) 11:02:56.50 ID:ubIK60Ld0.net]
>>846
フリック入力の誤字だよ
知らんのか

862 名前:デフォルトの名無しさん (スップ Sdba-8evO) mailto:sage [2023/09/13(水) 12:00:14.07 ID:w6WRlTikd.net]
>>847
へぇ勉強になったは

863 名前:デフォルトの名無しさん (ワッチョイ 2d2c-Gac/) mailto:sage [2023/10/02(月) 22:29:06.35 ID:ek48UNaT0.net]
ポトペタってなんの略?

864 名前:デフォルトの名無しさん (ワッチョイ 5514-yTnr) mailto:sage [2023/10/02(月) 22:32:41.04 ID:auss+27Z0.net]
ポト&ペタ

865 名前:デフォルトの名無しさん (ワッチョイ 9b84-AvD6) [2023/10/02(月) 23:54:06.18 ID:tTKA7bSS0.net]
略じゃなくてオノマトペ
drag&dropのdropを「ポト」、pasteを「ペタ」と言ってる
知らんけど

866 名前:デフォルトの名無しさん (ワッチョイ 2379-Fe8P) mailto:sage [2023/10/03(火) 07:04:56.55 ID:LgyCzmM/0.net]
ペタは分かるがポトは違うと思う

867 名前:デフォルトの名無しさん (ワッチョイ 234c-eCpa) mailto:sage [2023/10/03(火) 10:21:18.73 ID:s4jzp+7b0.net]
>>851
違う英語になってるw

868 名前:デフォルトの名無しさん (アウアウウー Sa89-5C2y) [2023/10/03(火) 11:32:53.29 ID:QaeBAOHSa.net]
drag&dropのdropを「ぽと」と言ってる
cut&pasteのpasteを「ぺた」と言ってる
ってことだろ

869 名前:デフォルトの名無しさん (スップ Sd43-zsnM) mailto:sage [2023/10/03(火) 11:50:45.36 ID:2CB+MFyFd.net]
そこまで行くと季語もほしい



870 名前:デフォルトの名無しさん (ワッチョイ 4b43-Gac/) mailto:sage [2023/10/03(火) 12:22:27.65 ID:DlHyTFki0.net]
パタヘネと何か関係ある?

871 名前:デフォルトの名無しさん (ラクッペペ MMcb-0bz8) mailto:sage [2023/10/03(火) 12:25:21.52 ID:2EpQUZ8oM.net]
構成と設計

872 名前:デフォルトの名無しさん (ワッチョイ 3df5-2+lQ) mailto:sage [2023/10/03(火) 16:24:05.27 ID:RJuubvLT0.net]
ヘネシーパターソンだっけ

873 名前:デフォルトの名無しさん [2023/10/05(木) 17:13:25.04 ID:WXXGTjkDa.net]
IDEやポトペタはキーボード打つのが遅い人用

874 名前:デフォルトの名無しさん (オイコラミネオ MMad-GYY9) mailto:sage [2023/10/07(土) 20:32:52.90 ID:Dbx341NqM.net]
youtubeで見たけどFC版のドラクエの作ってた人は何十年ぶりかのDQのデバッグで直接バイナリ書き換えてたな
ジャンプ先も数えてた

俺はIDEとポトペタ使わせてもらうわ

875 名前:デフォルトの名無しさん (アウアウクー MM35-wavJ) [2023/10/08(日) 00:23:41.50 ID:LRxf1Mc5M.net]
結局バグらなければいいから好きな方使えばいい
ただキーボード打つの速いからIDEいらないとかは
逆立ちでピアノ引けます自慢みたいなもの
ピアノ引くことが目的なのに逆立ち部分いらないだろっていう

876 名前:デフォルトの名無しさん [2023/10/08(日) 09:50:31.76 ID:CrdCteTPa.net]
土日祝になると元気出るんだなおまいら

877 名前:デフォルトの名無しさん (ワッチョイ da79-4iaA) mailto:sage [2023/10/08(日) 11:34:25.75 ID:SlOLtELZ0.net]
涼しくなったのもあるね
むしろ寒い

878 名前:デフォルトの名無しさん mailto:sage [2023/10/13(金) 08:47:13.22 ID:QvVhB9u10.net]
江添さんが頭を剃りあげているのはストラウストラップ氏に対するリスペクトを表しているのですか?

879 名前:デフォルトの名無しさん mailto:sage [2023/10/13(金) 09:54:31.02 ID:GeJhkqxf0.net]
名前出すのは止めろ



880 名前:デフォルトの名無しさん mailto:sage [2023/10/13(金) 16:02:09.02 ID:csQt26bs0.net]
本出版しているので上げても構わんやろ?

881 名前:デフォルトの名無しさん (ワッチョイ da79-4iaA) mailto:sage [2023/10/13(金) 19:26:34.74 ID:79LHTXDX0.net]
本出版してるとハゲ呼ばわりして良いルールでもあんの?

882 名前:デフォルトの名無しさん (ワッチョイ 6905-YfmG) mailto:sage [2023/10/13(金) 19:31:14.43 ID:GeJhkqxf0.net]
今の時代、名指し発言はヤバいからな

883 名前:デフォルトの名無しさん (ワッチョイ 8d14-h3vX) mailto:sage [2023/10/13(金) 20:22:45.60 ID:sLa7CNti0.net]
ハゲることが男のたった一つの勲章だって
この胸に信じて生きてきた

884 名前:デフォルトの名無しさん (ワッチョイ 55f0-IgUm) [2023/10/13(金) 20:47:42.10 ID:KYH72u1u0.net]
マ板でやれ

885 名前:デフォルトの名無しさん (ワッチョイ 9501-NGE0) [2023/10/13(金) 21:08:09.45 ID:csQt26bs0.net]
>>867
ハゲ呼ばわりではなくて名前を上げること
本を公に刊行するということは批判の対象になるということ
名前を上げても構わない

886 名前:デフォルトの名無しさん (ワッチョイ c105-v2ln) mailto:sage [2023/10/14(土) 00:02:39.12 ID:ma8uiWBB0.net]
>>871
批判と侮蔑って全然違うけど、お前、本気でそれ言ってんの?

887 名前:デフォルトの名無しさん (ワッチョイ 5901-Vk26) [2023/10/14(土) 00:30:31.78 ID:up3P3K8x0.net]
>>872
俺がいつ侮辱した? どのスレや?

888 名前:デフォルトの名無しさん [2023/10/14(土) 06:54:24.53 ID:FQQzLMjC0.net]
出版物の内容についての言及なら著者名を出したっていいよ
リスペクトで髪剃ってるのか?とか出版物関係ないだろ そういうのはやめろって話だ

889 名前:デフォルトの名無しさん (ワッチョイ 5901-Vk26) [2023/10/14(土) 10:57:26.58 ID:up3P3K8x0.net]
>>874
>リスペクトで髪剃ってるのか?とか出版物関係ないだろ そういうのはやめろって話だ
それは俺じゃない



890 名前:デフォルトの名無しさん mailto:sage [2023/10/14(土) 12:06:47.14 ID:91QwaM6H0.net]
俺じゃないならなんでこの流れでわざわざ出版があーだこーだ言い出したの?
そういった行為は横紙破りって言うんだよ口語ではあんま使わない言葉だけど
社会でうまくやっていけてなさそう

891 名前:デフォルトの名無しさん mailto:sage [2023/10/14(土) 12:10:00.69 ID:JB0xgUuV0.net]
また紙の話してる

892 名前:デフォルトの名無しさん [2023/10/14(土) 12:14:09.72 ID:x03gZ5vca.net]
自分で剃ってるのかと思ったが
本人が反論したことで
本人の望まない形で禿ていることがバレるという悪循環

893 名前:デフォルトの名無しさん (ワッチョイ 5901-Vk26) mailto:sage [2023/10/14(土) 12:42:26.40 ID:up3P3K8x0.net]
>>876
彼は出版しているので
名前を出されても構わない立場の人間であるということ
モブとは違うんだよ

894 名前:デフォルトの名無しさん (ワッチョイ 53cb-k/Ti) mailto:sage [2023/10/14(土) 13:20:35.60 ID:ULvJZdiM0.net]
Twitterにいつもいるから直接聞けよコミュ障

895 名前:デフォルトの名無しさん mailto:sage [2023/10/14(土) 18:20:44.57 ID:ma8uiWBB0.net]
>>880
正論

>>879
書いてないと主張するお前が、名前が書かれた文章前半の一部のみ勝手に正当主張をしてるのはわかってるんだけど、後半の文章についてはどう考えてるの?

896 名前:デフォルトの名無しさん (ワッチョイ 5901-Vk26) [2023/10/14(土) 19:26:26.32 ID:up3P3K8x0.net]
>>881
>書いてないと主張するお前が、名前が書かれた文章前半の
>一部のみ勝手に正当主張をしてるのはわかってるんだけど、
>後半の文章についてはどう考えてるの?
どれか分からんからきちんと書け

897 名前:デフォルトの名無しさん (ワッチョイ c105-v2ln) mailto:sage [2023/10/14(土) 21:50:40.28 ID:ma8uiWBB0.net]
横から入ってきた割に、話が通じないやつって初めて見た

898 名前:デフォルトの名無しさん (ワッチョイ 5901-Vk26) mailto:sage [2023/10/14(土) 21:57:24.93 ID:up3P3K8x0.net]
>>883
プログラム書いてるだろうに文章が下手過ぎるから話が通じない
俺は侮辱するようなことは一言も書いていない
別人が書いたのを読み違えてるんだよ

899 名前:デフォルトの名無しさん (ワッチョイ b990-lUy8) mailto:sage [2023/10/15(日) 06:50:14.19 ID:DwcyuqQy0.net]
基地外のスレチ荒らしはスルーしようぜ



900 名前:デフォルトの名無しさん (ワッチョイ c105-v2ln) mailto:sage [2023/10/15(日) 07:30:07.34 ID:T2NVqJIH0.net]
>>864は覚えておくわ

901 名前:デフォルトの名無しさん (ワッチョイ 5901-Vk26) [2023/10/15(日) 11:44:46.43 ID:S1qRngxA0.net]
>>>886
ちゃんと覚えとけよ
それは俺じゃないからね

902 名前:デフォルトの名無しさん mailto:sage [2023/10/15(日) 17:41:10.31 ID:9kWoH1jw0.net]
ハゲはナニやってもハゲるらしいからな
理由なんて無いだろう

903 名前:デフォルトの名無しさん mailto:sage [2023/10/15(日) 17:43:05.48 ID:9kWoH1jw0.net]
ハゲるヤツはナニやってもハゲるらしいからな
そもそも理由なんて無いのだろう

904 名前:デフォルトの名無しさん (ワッチョイ 1302-os2T) mailto:sage [2023/10/15(日) 21:12:08.28 ID:ehVuw9SG0.net]
いつまでもお傍にいます、最後まで…

905 名前:デフォルトの名無しさん mailto:sage [2023/10/16(月) 08:48:43.37 ID:yu+2eKsI0.net]
Stroustrupのことはハゲハゲ言うくせに江添に対しては厳しいんだなw

906 名前:デフォルトの名無しさん (スッップ Sd33-boBM) mailto:sage [2023/10/17(火) 17:04:23.91 ID:zRs2E77Cd.net]
言う程ハゲてない
まだ大丈夫

907 名前:デフォルトの名無しさん (スッップ Sd33-boBM) mailto:sage [2023/10/17(火) 17:04:42.90 ID:zRs2E77Cd.net]
言う程ハゲてない
まだ大丈夫

908 名前:デフォルトの名無しさん (アウアウウー Sadd-wvjH) mailto:sage [2023/10/17(火) 17:55:21.31 ID:it1TRy+pa.net]
ひさしぶりにこのスレにきてわかったことがひとつある

C++はハゲと相性が良い

909 名前:デフォルトの名無しさん (ワッチョイ 1379-3b5p) mailto:sage [2023/10/17(火) 19:10:02.16 ID:LcuTSSJS0.net]
C++使うとハゲるって当初噂になったぐらいだが
知らんのか



910 名前:デフォルトの名無しさん (ワッチョイ 59da-jdKV) mailto:sage [2023/10/17(火) 20:35:53.51 ID:B/3DhPmO0.net]
空いたプランクを埋めるためにC++言語仕様を高速に無理矢理理解しようとすると却ってストレスがたまってハゲることになる恐ろしい言語

911 名前:デフォルトの名無しさん mailto:sage [2023/10/17(火) 21:21:23.39 ID:WuBQOYXz0.net]
>>895
MJD?

Miwa C++ のエピスメーテーさんもHAGEなの?

912 名前:デフォルトの名無しさん (ワッチョイ 01a7-QDHO) mailto:sage [2023/10/18(水) 21:04:49.19 ID:UzfqKL8d0.net]
禿げるというより若白髪は明らかに増えたわ

913 名前:デフォルトの名無しさん (ワッチョイ c914-cthS) mailto:sage [2023/10/18(水) 21:21:08.16 ID:ELvl69q70.net]
いや、お前はもう若くはない

914 名前:デフォルトの名無しさん (ワッチョイ c914-cthS) mailto:sage [2023/10/18(水) 21:22:58.52 ID:ELvl69q70.net]
いや、お前はもう若くはない

915 名前:デフォルトの名無しさん (ワッチョイ c914-cthS) mailto:sage [2023/10/18(水) 21:25:02.33 ID:ELvl69q70.net]
もう若くはないのだ

916 名前:デフォルトの名無しさん (ワッチョイ c901-Vk26) mailto:sage [2023/10/18(水) 21:59:07.00 ID:eoT4PoLM0.net]
時期を逸するというのはなんとも悲しいものだ
取り返しはつかない

917 名前:デフォルトの名無しさん (ワッチョイ 1379-3b5p) mailto:sage [2023/10/18(水) 22:40:09.97 ID:tODhST9E0.net]
C++とMFCのコンボで世の中の何本の毛根が失われたのだろう

918 名前:デフォルトの名無しさん (ワッチョイ c901-Vk26) mailto:sage [2023/10/18(水) 22:52:13.26 ID:eoT4PoLM0.net]
取り返しはつかない

919 名前:デフォルトの名無しさん mailto:sage [2023/10/19(木) 22:15:33.96 ID:PH9oNQB60.net]
質問なのですがサイズnのstd::vector<T> vecに対してi番目(i=0, 1, 2, ..., n)の要素の直前に要素elemを1個挿入する(ただしi=nは末尾に追加と解釈する
の書き方はどうすればいいですの?
とりま2種類考えた、
1) size_t sz = vec.size();
  auto ins_it = (i < sz) ? std::next(vec.begin(), i) : vec.end();
  vec.insert(ins_it, elem);
2) size_t sz = vec.size();
  if (i < sz) { vec.insert(std::next(vec.begin(), i), elem); }
  else { vec.resize(i + 1, elem); }



920 名前:デフォルトの名無しさん (ワッチョイ 797f-/4nw) [2023/10/19(木) 23:37:01.14 ID:49m1KrYl0.net]
vec.insert(vec.begin() + i, elem);

921 名前:デフォルトの名無しさん (ワッチョイ fbda-jdKV) mailto:sage [2023/10/20(金) 09:00:04.92 ID:Z7DUQLh+0.net]
simple is best よ
何事も

922 名前:デフォルトの名無しさん (スフッ Sd33-Kt/B) [2023/10/20(金) 09:44:04.99 ID:JTOR6W7Wd.net]
だから I hate C++ の Matz はまだフサフサなのか

923 名前:デフォルトの名無しさん (ワッチョイ b990-lUy8) mailto:sage [2023/10/20(金) 15:53:09.23 ID:IDnubi5y0.net]
コードの内容なんか忘れた半年後に
再びコード見てその瞬間、分かるように書くのが一番
その為のSimple is bestに同意

924 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7b3e-RnKc) mailto:sage [2023/10/20(金) 16:04:48.20 ID:+Ixb2Hv20.net]
読み取りやすいように書くのは大事だけど、少し汚くても
わかりやすい名前を付けておけば割となんとかなる。

925 名前:デフォルトの名無しさん mailto:sage [2023/10/20(金) 20:55:51.96 ID:jh4JxiwB0.net]
おっと、名前付けの話?オッチャン持論語っちゃう

関数に長い名前つけるのはありと思うが、変数名は宣言箇所にコメント書いて2文字とか短い変数名が好き

ワシは元々BASICから始まってSmalltalkを学んだクチだけど、一時期のjavaみたいななんでも長い名前にするやつ大っきらい。Cの母音ラクダ方式大好き

926 名前:デフォルトの名無しさん (ワッチョイ dd14-PKJr) mailto:sage [2023/10/21(土) 00:04:43.68 ID:JSr5Bd510.net]
お前の好き嫌いでは議論にならん
優劣を語れよ、ジジイ

927 名前:デフォルトの名無しさん (ワッチョイ 1934-egvn) mailto:sage [2023/10/21(土) 01:04:06.34 ID:m23W7dra0.net]
>>912
が優劣について数字を出して語ってくれるそうです
どうぞw

928 名前:はちみつ餃子 mailto:sage [2023/10/21(土) 02:43:39.26 ID:WDz67hDs0.net]
C++ はある程度は汚いものだろう。
隅々まで綺麗にしようと腐心するよりは
少なくとも部品のインターフェイスくらいはまともにして
外側に対しては綺麗なふりをするくらいが手頃な妥協点だと思う。
逆にミクロ的にスマートに書けていても
抽象化が駄目だと使いにくいよ。

内も外も綺麗ならそれに越したことはないけど
そうもいかないのが現実だからね。

929 名前:デフォルトの名無しさん (ワッチョイ d563-KkNu) mailto:sage [2023/10/21(土) 08:17:46.79 ID:pQG7G9ym0.net]
>>906
天才か!
なんかこの前動かしたら駄目だった気がしたけど
今やったら動いたわサーセン;;;



930 名前:デフォルトの名無しさん (オイコラミネオ MMbd-JD/u) mailto:sage [2023/10/21(土) 12:13:35.82 ID:3FTa9ZLeM.net]
vectorなのかvecなのかは言語開発者がそうと決めたからそうなってるだけ
昔はコード補間もなくx-windowのアホみたいな長い呪文APIぶち込んでたけど今もそれだったらぶち切れてる

意外なことに開発環境が変わればいろいろ変わる

931 名前:デフォルトの名無しさん (オイコラミネオ MMbd-JD/u) mailto:sage [2023/10/21(土) 12:24:11.96 ID:3FTa9ZLeM.net]
今windowの更にクソ長い基地外じみたAPI打ってるのもコード補完があるから

932 名前:デフォルトの名無しさん (アウアウウー Sa09-mHTC) mailto:sage [2023/10/21(土) 13:25:34.47 ID:oEOsfkqwa.net]
名前の長い短かいについては上述のとおり技術の進歩、開発環境の変化で落しどころがかわってくるが
俺的にはむしろネーミングのセンスのほうが気になる
俺がまだフサフサだったころはイキって一般によく使われる単語とちょっと違う単語をわざわざ探すようなことをしていたが
頭髪が薄くなるに従ってそういうことはくだらない事と思うようになり
今はできるだけベタな誰が見ても即座に意味がつかめる、あえてダッサいネーミングをするよう心がけてる
例:データを吸いあげて収納するメソッド名
フサフサ俺がつけがちな名前 → .BeamMeUp()
ハゲ俺がつける名前 → .LoadData()

933 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 8e3e-exru) mailto:sage [2023/10/21(土) 13:28:07.89 ID:lPxmC+mr0.net]
>>915
std::vector のイテレータの場合に限らず
ランダムアクセスイテレータは difference_type との加算が出来ることになってる。
https://timsong-cpp.github.io/cppwp/n3337/iterator.requirements#tab:iterator.random.access.requirements

934 名前:デフォルトの名無しさん (ワッチョイ 19f2-awtI) mailto:sage [2023/10/21(土) 13:55:07.32 ID:QfWCszfk0.net]
>>918
仕事でやってたら初日で怒られるレベル

935 名前:デフォルトの名無しさん (ワッチョイ 7a79-Idv/) mailto:sage [2023/10/21(土) 14:25:15.02 ID:ifbOBJO10.net]
>データを吸いあげて収納する
ハゲなのに5W1Hすら知らないと見える

936 名前:デフォルトの名無しさん [2023/10/21(土) 19:03:13.06 ID:l7vz3TvG0.net]
恥ずかしながら学生の頃はドイツ語で命名してましてねフフフ

937 名前:デフォルトの名無しさん mailto:sage [2023/10/21(土) 19:20:36.30 ID:5c+gSFSX0.net]
korewahennsuudesu

938 名前:デフォルトの名無しさん mailto:sage [2023/10/21(土) 20:59:24.58 ID:pQG7G9ym0.net]
>>919
レス引用が分かりにくくてスマンカッタorz
そこではなくて挿入位置にsize()まで指定してたら末尾に要素が追加にできるところ
std::vector<int> vec = { 1, 2, 3 };
vec.insesrt(vec.begin() + vec.size(), 4);
cout << vec << endl; // ( 1 2 3 4 )

939 名前:デフォルトの名無しさん [2023/10/21(土) 21:41:14.77 ID:BercqiEL0.net]
ラズパイレートでいうと
民主党政権の頃は1ドル80円だったけど
いまは1ドル200円



940 名前:デフォルトの名無しさん [2023/10/21(土) 21:41:30.90 ID:BercqiEL0.net]
ラズパイレートでいうと
民主党政権の頃は1ドル80円だったけど
いまは1ドル200円

941 名前:デフォルトの名無しさん (ワッチョイ 6501-6i8i) [2023/10/21(土) 22:50:32.79 ID:BercqiEL0.net]
>>921
5W1HはMITが提唱したんじゃなかったっけ

942 名前:デフォルトの名無しさん (ワッチョイ 1590-wvhw) mailto:sage [2023/10/22(日) 12:33:14.88 ID:x1FYC/BU0.net]
変数でも関数でも
初見もしくは内容忘れた自分が
読んだとき何をやってるか分かるような名前付けが大事だと思う
よって長さは常識の範囲内なら長い方が良いかな

どうでもいいループ変数にindex2SearchArgumentHaystackとか
書いてたら殺意を覚えるけどさ

943 名前:デフォルトの名無しさん (オイコラミネオ MMbd-JD/u) mailto:sage [2023/10/22(日) 17:33:51.66 ID:Ih9eQULqM.net]
GetSelectedPersonDataFromLiveDBIfNotExistsReadDefaultValueFromSettingFileType2022Ex

944 名前:デフォルトの名無しさん (ワッチョイ 0105-SFbe) mailto:sage [2023/10/22(日) 17:36:33.94 ID:+fVR99EM0.net]
= 1 ;

945 名前:デフォルトの名無しさん [2023/10/22(日) 19:20:31.79 ID:/8xzlJDV0.net]
モジュールはまだ使えんのか?

946 名前:デフォルトの名無しさん [2023/10/22(日) 20:40:59.32 ID:XK8cC57k0.net]
リテラルで簡潔に書けるのでみんな初期化子リストばんばん使ってると思うけど
initializer_listって必ずコピーが発生するのな
non copyableなクラスが使えなくて不便なんだが、回避策ない?

947 名前:デフォルトの名無しさん mailto:sage [2023/10/22(日) 20:47:43.40 ID:tZaS4o4u0.net]
>>932
>non copyableなクラスが使えなくて不便なんだが、回避策ない?
moveすれば?

948 名前:デフォルトの名無しさん (ワッチョイ 8e01-tEca) mailto:sage [2023/10/22(日) 23:26:18.52 ID:XK8cC57k0.net]
>>933
できないんだよ

949 名前:デフォルトの名無しさん (ワッチョイ 5d01-46Vy) mailto:sage [2023/10/22(日) 23:33:55.26 ID:tZaS4o4u0.net]
>>934
???
どんなコードで問題出てるの?



950 名前:デフォルトの名無しさん (ワッチョイ 8e3b-xUKY) [2023/10/23(月) 01:32:53.76 ID:sueaiNV30.net]
>>935
https://wandbox.org/permlink/n0KXbXrmLzHDl6KU

次のコードがコンパイルできない

struct A {
 A(int) {}
 A(const A&) = delete;
};

int main()
{
 std::vector<A> v = { 1, 2, 3 };
}

951 名前:デフォルトの名無しさん mailto:sage [2023/10/23(月) 05:17:34.59 ID:RG/DfB7W0.net]
>933, >>935
https://www.google.com/search?q=initializer_list+move
クソ回答する前にググれよ

952 名前:デフォルトの名無しさん (ワッチョイ 5d01-46Vy) mailto:sage [2023/10/23(月) 09:29:50.40 ID:9KLj8HWs0.net]
>>936,937
あれ?
$ cat test.cpp
#include <iostream>
using namespace std;
struct A {
A () {cout << "construct" << endl;}
A (const A &p) = delete;
A (A &&p) {cout << "move" << endl;}
};
void func (initializer_list <A> p) {
cout << "func" << endl;
}
int main () {
A a0;
A a1;
func ({move (a0), move (a1)});
return 0;
}
$ g++ test.cpp
$ ./a.out
construct
construct
move
move
func

953 名前:デフォルトの名無しさん (ワッチョイ 5d01-46Vy) mailto:sage [2023/10/23(月) 10:27:22.01 ID:9KLj8HWs0.net]
だめかなぁ...
#include <vector>
struct A {
A(int) {}
A(const A&) = delete;
A(A&&) = default;
};
std::vector <A> construct (std::initializer_list <A> p) {
std::vector <A> result;
for (auto itr {p.begin ()}, end {p.end ()}; itr != end; ++ itr)
result.push_back (std::move (const_cast <A &> (*itr)));
return result;
}
int main()
{
std::vector<A> v = construct ({ 1, 2, 3 });
}

954 名前:デフォルトの名無しさん mailto:sage [2023/10/23(月) 11:36:11.62 ID:OKLUF2xV0.net]
>>936
コピコン消したいなら代入オペレータ用意してやらんとダメだろ

955 名前:デフォルトの名無しさん mailto:sage [2023/10/23(月) 13:23:41.68 ID:1EMVV/4H0.net]
initializer_list<A&&>が作れないから波括弧初期化できないって話か
なるほどね

956 名前:デフォルトの名無しさん mailto:sage [2023/10/23(月) 19:21:53.26 ID:RG/DfB7W0.net]
initializer_list作るとこまでは出来てもムーブで取り出せないのよ
だからvectorのコンストラクタにinitializer_listで渡すとエラー出るし、>>939のように
const外して一つずつ突っ込むとかしなきゃいけなくなる
ムーブ可能にする提案は出てるらしいけど
https://cpplover.blogspot.com/2014/11/2014-10-pre-urbana-mailings-n4160-n4169.html?m=1

957 名前:デフォルトの名無しさん (ワッチョイ 1909-awtI) mailto:sage [2023/10/24(火) 05:35:10.47 ID:RZM2X1OT0.net]
https://wandbox.org/permlink/h9ZXqkhA56d7EOYP
std::vectorだからどうしようもないけど、自作クラスならinitializer_listよりも可変長テンプレートをオススメしたい
これならコピー不可(ムーブのみ)なクラスでも集成体初期化出来る
(ただしコンセプトかenable_ifでAまたはAに暗黙変換可能な型に限定すべき、enable_ifでもメタプログラミングで条件式作れる)

958 名前:デフォルトの名無しさん (ワッチョイ 1909-awtI) mailto:sage [2023/10/24(火) 05:38:03.34 ID:RZM2X1OT0.net]
あ、すまんコメントのとこだけどis_convertible_vの引数は逆だった

959 名前:デフォルトの名無しさん (ワッチョイ 1909-awtI) mailto:sage [2023/10/24(火) 05:42:10.71 ID:RZM2X1OT0.net]
もう一つ訂正すまん、集成体初期化じゃないな一様初期化かリスト初期化かorz



960 名前:デフォルトの名無しさん (スッップ Sd9a-SL8W) mailto:sage [2023/10/24(火) 08:43:43.05 ID:NeqpGeoJd.net]
教訓
std::vectorは使い物にならない

961 名前:デフォルトの名無しさん (ワッチョイ 5d01-46Vy) [2023/10/24(火) 11:05:08.48 ID:B30+3CR30. ]
[ここ壊れてます]

962 名前:net mailto: >>946
何で?
[]
[ここ壊れてます]

963 名前:デフォルトの名無しさん (ワッチョイ 999f-dytz) mailto:sage [2023/10/24(火) 11:09:20.45 ID:AiEp9cgJ0.net]
もうC++の仕様拡張はもう限界なんだよ
あっちを立てればこっちが立たずが毎回問題になる

964 名前:デフォルトの名無しさん (ワッチョイ 5558-8kgw) [2023/10/24(火) 11:19:38.47 ID:1IilAibW0.net]
std2 作ってゼロからやり直さないと C++はどうにもならんね

965 名前:デフォルトの名無しさん (ワッチョイ 4eda-CTkJ) mailto:sage [2023/10/24(火) 11:40:18.75 ID:nK1YbT6/0.net]
iostreamの二の足を踏みそうだ

966 名前:デフォルトの名無しさん mailto:sage [2023/10/24(火) 12:18:26.26 ID:B30+3CR30.net]
>>946,948-950
具体的に議論しようぜ

967 名前:デフォルトの名無しさん (ワイーワ2 FF62-6i8i) mailto:sage [2023/10/24(火) 12:59:19.46 ID:2UheMrybF.net]
>>946
deque の方が常に良いことが多いと思う

initializer_list でうまくいかんときは
make_tuple か tie でごまかしたことがある気がするけど
あれも move じゃなくて copy だったかな

最近は Rust の方がその辺は楽な気がするな

968 名前:デフォルトの名無しさん (ワッチョイ 5d01-46Vy) mailto:sage [2023/10/24(火) 13:10:28.54 ID:B30+3CR30.net]
>>952
initializer_listでmoveできない問題なら>>939で良いのでは?
template化して関数名短くすれば使い心地は{}と
そう変わらんと思うが?

969 名前:デフォルトの名無しさん (ワッチョイ 8eca-ANn9) [2023/10/24(火) 22:26:14.45 ID:0fDOryx60.net]
文字コード周りだけは決着つけてくれ!



970 名前:デフォルトの名無しさん (ワッチョイ ba48-g88S) mailto:sage [2023/10/26(木) 08:51:51.55 ID:+j1jszqL0.net]
chatGPTが今ダウンしているので質問します
以下のC++コードでfirst->secondとなっている部分がよくわかりません
vector<pair<int, int>> A(N);
for(auto& [x, y] : A) cin >> x >> y;
unordered_map<int, int> X, Y;
for(auto& [x, y] : A){
x = X.try_emplace(x, X.size()).first->second;
y = Y.try_emplace(y, Y.size()).first->second;
}
try_emplaceはPair<iterator,bool>を返すオーバーロードがあるので
firstまではわかるもののそこからさらにsecondとすると何がおきるのでしょうか

971 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 8e3e-exru) mailto:sage [2023/10/26(木) 09:25:01.17 ID:oN20rU1J0.net]
>>955
格納しているのがペアなんだからペアの second 側が得られるってだけ。
イテレータは operator* や operator-> をオーバーロードしていて
要素へのポインタであるかのように扱えると考えていい。

972 名前:デフォルトの名無しさん [2023/10/26(木) 22:18:49.00 ID:eAGx217zd.net]
単に入れ子になってるだけ
ポインタの先の要素がまたポインタで指してるだけ

973 名前:デフォルトの名無しさん (ワッチョイ ba48-g88S) mailto:sage [2023/10/27(金) 08:11:42.47 ID:IlYWK5hg0.net]
>>956-957
ありがとうございました。
iteratorを返したらそのiteratorに対してさらにsecondを呼び出しているのですね

974 名前:デフォルトの名無しさん (ワッチョイ 5101-CP9B) [2023/10/29(日) 23:41:12.89 ID:JPy8qBbk0.net]
C++モジュールについて
・CMakeが3.26で実験的対応、3.28で正式対応
・g++は対応状況が良くないが、2024年第二4半期に対応できるとKitwareは考えている
・VS2022最新版内臓のCMakeバージョンは3.26
・Clangとclはモジュールに対応している

975 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 13:05:26.07 ID:bW5EQkS/0.net]
Cスレで話題になっててちょっと疑問を質問
自分はgotoって全く使わないで書いているんだけど実際のところどうなんだろう

https://learn.microsoft.com/ja-jp/cpp/cpp/goto-statement-cpp?view=msvc-170
「可能な限り、goto ステートメントより break、continue、および return ステートメントを使用することをお勧めします。
ただし、break ステートメントはループの 1 つのレベルのみを終了するため、深い入れ子のループを終了するには goto ステートメントを使用する必要がある場合もあります。」

俺も深い入れ子のループを抜ける方法として
・ループ部分を関数化してreturn
・breakで抜けて if(/* 抜けた理由を再度評価 */) break; を繰り返す  (※後述)
ということをしている

けどgotoで抜けるほうが楽だろうなと思うんだけど、まあ単純なバグ(プログラマーの見落とし)を除いてどういう問題があるんだろうか

for ( i = 0; i < 10; i++ )
{
 printf_s( "Outer loop executing. i = %d\n", i );
 for ( j = 0; j < 2; j++ )
 {
  printf_s( " Inner loop executing. j = %d\n", j );
  if ( i == 3 ) break; // 内側のループ抜け
 }
 if ( i == 3 ) break; // 外側のループ抜け
}

976 名前:デフォルトの名無しさん [2023/10/30(月) 13:37:46.82 ID:xnp7PI6ya.net]
>深い入れ子のループを終了するには goto ステートメントを使用する必要がある場合もあります
って描いてあるしそれが問題とは言ってないんじゃないか

977 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 14:24:40.02 ID:eEth4IuV0.net]
とりあえずダイクストラ大先生の例の論文読もうぜ

978 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 15:01:52.03 ID:bW5EQkS/0.net]
まあ問題あるならそもそも導入されるはずがないわけで問題ないのは分かるんだけど
「可能な限り〜お勧めします。」と言うように使用を推奨しない理由は何なのかなと
例えば特定の処理が飛ばされて動作しなくなる場合があるとかなんかな?と

979 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 15:54:27.55 ID:A0jdf3Dt0.net]
それはrustのラベルbreakのような
安全なループの抜け方しか考えてないから安全で当たり前
c/c++のgotoはもっと凶悪なことができる



980 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 16:23:23.04 ID:eEth4IuV0.net]
C++のgotoはちゃんとデストラクタを呼んでくれるから、意外とそんなに破滅的なことにはならんのだよね
だからって多重ループ脱出以外で使おうとは思わんけど

981 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 16:30:54.25 ID:hnsSyQft0.net]
俺は例外投げて脱出する

982 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 16:35:01.03 ID:A0jdf3Dt0.net]
>>966
気軽に例外投げるとデバッガが使いづらくなるからやめときな
少なくとも仕事では

983 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 16:40:27.98 ID:bW5EQkS/0.net]
多重ループ脱出で使っている人って多いんかな?
他にこういう使い方しているとかってない?

984 名前:はちみつ餃子 mailto:sage [2023/10/30(月) 16:45:14.84 ID:I7fISnX+0.net]
>>963
一般論としてはそのほうが分かりやすくなるからというだけのことだと思うよ。

ただ、それで分かりやすくならないとき、
チマチマした条件チェックであっちこっち行くよりは
流れをぶった切って goto したほうがいっそわかりやすいこともあるってのが
goto が必要な場面ってことなんだわ。

985 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 17:14:03.48 ID:hnsSyQft0.net]
>>967
と言いますと?

986 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 17:24:30.69 ID:9eqG7NVC0.net]
ラムダ式にする

987 名前:デフォルトの名無しさん (ワッチョイ 297c-tLJy) mailto:sage [2023/10/30(月) 17:57:47.45 ID:eEth4IuV0.net]
>>968
自分としては多重ループ脱出がC++でのgotoの唯一の実用的な用途だと思ってる(とはいえめったに使わない)
Cなら疑似finally的な後処理に使うこともあるけど、それはC++ならRAIIにすべきだしな
それ以外の戻ったり余所のスコープに侵入したりはもちろんCでもC++でも論外

988 名前:デフォルトの名無しさん (ワッチョイ 8114-Qq8E) mailto:sage [2023/10/30(月) 18:39:22.51 ID:VfsLhOLn0.net]
何度も繰り返すgotoの話になると人が湧くな

989 名前:デフォルトの名無しさん (ワッチョイ 9b91-lnbO) mailto:sage [2023/10/30(月) 18:54:25.65 ID:A0jdf3Dt0.net]
>>970
VSのデバッガは例外投げられるとメッセージでる(設定変えればオフにはできる)
また設定によってはブレイクする
正常処理のくせに頻繁に例外投げられると非常にうざいし、本当の異常を見過ごす



990 名前:デフォルトの名無しさん (ワッチョイ 5101-CP9B) [2023/10/30(月) 19:04:07.11 ID:qWSrxYwr0.net]
switchとgoto組み合わせて状態機械作ってる

991 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 19:54:14.15 ID:A0jdf3Dt0.net]
gcc拡張のlabelのアドレスとれるやつとかな
昔はイキって使ってたわ

992 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 20:16:27.75 ID:hnsSyQft0.net]
>>974
そりゃうざいデフォルト設定だな
ループの脱出に限らず例外くらい普通に使うやろ?
ちゃんと切っとけ

993 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 20:43:41.27 ID:A0jdf3Dt0.net]
>>977
例外が起こったときは何かおかしいことが起こっている予兆と考える防御的なVSをおれは支持する
だいたい例外安全って何それ?ってレベルのやつも多いだろ
例外で遊ぶのは趣味のときだけにしとけ

994 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 20:48:14.67 ID:JbGfWzUOM.net]
ループ脱出レベルで例外を使うのは変だと感じる
関数抜けないのに例外なんて…

995 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 20:54:46.61 ID:JbGfWzUOM.net]
んで大昔に例外に似た機能のFound文Match文とか妄想してたんだな

実質タダのgoto文

996 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 20:54:46.86 ID:hnsSyQft0.net]
>>978
ループに限らず孫関数ひ孫関数からエラーで脱出するときどうしてんの?
例外使わんか?

997 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 20:57:56.27 ID:JbGfWzUOM.net]
例外は通常動作として起こらないような動作で起こすもので
何か探すループなんかで実際に対象が見つかったとしてそれは「例外」なのか?
ちがうだろー

998 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 20:58:12.43 ID:hnsSyQft0.net]
>>979
俺はgotoは全く書かないな
パフォーマンス的にはgotoの方が良いかな?

999 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 20:59:51.11 ID:hnsSyQft0.net]
>>982
実にくだらない理由だと思う



1000 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 21:01:36.17 ID:JbGfWzUOM.net]
>>984
それが一般的な解釈でおかしな使い方をしてる人間は影で笑われている

1001 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 21:06:32.49 ID:hnsSyQft0.net]
>>985
人格を攻撃するような書き込みはやめようね

1002 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 21:07:29.46 ID:JbGfWzUOM.net]
例外はパフォーマンス的に重いしそれ以前に
正常系の出力を異常系で投げるのはおかしい

まったくもって異常

1003 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 21:08:57.30 ID:eEth4IuV0.net]
よその言語ではイテレータの終了通知に例外使ってたりするから人格否定するほどの話ではない
C++の慣用としてやられてないし向いてないってだけ

1004 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 21:09:03.25 ID:JbGfWzUOM.net]
>>986
人格自体は攻撃してないだろ
事実

1005 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 21:12:55.48 ID:hnsSyQft0.net]
>>987
>正常系の出力を異常系で投げるのはおかしい
これを書いたのはあなたで私ではないよ

1006 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 21:14:51.99 ID:hnsSyQft0.net]
>>989
>>987の「例外はパフォーマンス的に重いし」のような議論は分かるが
>>985は人格を攻撃している書き込み
気をつけ給え

1007 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 21:19:13.29 ID:A0jdf3Dt0.net]
>>981
エラーならありだがtry catch書かされるのもだるいだろ
現実的に例外投げる場合はそのまま終了か、フルリブートするしかないときって考えたほうがいい

1008 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 21:19:21.17 ID:JbGfWzUOM.net]
非常に大切で根本的な理由と例を挙げたのに「実にくだらない理由」としか取られないのが残念
例外はただの制御構文ではない

1009 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 21:20:50.60 ID:JbGfWzUOM.net]
>>991
実にくだらない理由か本当に?
理解不足だと思うけど



1010 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 21:22:28.46 ID:J+/7yoK80.net]
凶悪といえばAnsiCのsetjmp()とlongjmp()
あれらを規格に入れてるのはキチガイとしか

1011 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 21:25:34.77 ID:hnsSyQft0.net]
>>993,994
そう思う

>>982
>例外は通常動作として起こらないような動作で起こすもので
これは今行っている議論の対象である

>何か探すループなんかで実際に対象が見つかったとしてそれは「例外」なのか?
何に使うかの理由に名称を持ち出すのは
私はくだらないと考えている

1012 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 21:28:39.53 ID:JbGfWzUOM.net]
>>996
概念だろ
それが一番大切で実装の基本だろ

C++自体の仕様が変わるとしても例外と言う概念に沿って変わることになるはずだ
今適当にマッチを投げていて仕様がより例外側に代わってその時その使い方は生き残れるのだろうか?

1013 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 21:31:50.44 ID:hnsSyQft0.net]
>>997
templateメタプログラミングとか許せない人ですか?

1014 名前:デフォルトの名無しさん (ワッチョイ d1ad-AT6i) mailto:sage [2023/10/31(火) 06:57:27.99 ID:BIE3G76Q0.net]
Core Guideline にも例外はエラー処理だけに使えとある.
多重ループからの脱出が本当にエラー処理なの?

1015 名前:デフォルトの名無しさん (ワッチョイ 1379-JwVi) mailto:sage [2023/10/31(火) 07:21:48.58 ID:1/1CCAX60.net]
質問いいっすか?

1016 名前:1001 [Over 1000 Thread ID:Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 174日 19時間 30分 57秒

1017 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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