◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

C++相談室 part164 YouTube動画>1本 ->画像>5枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1683600652/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

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

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

※前スレ
C++相談室 part163
http://2chb.net/r/tech/1672409791/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2デフォルトの名無しさん (スプッッ Sd97-Itme)
2023/05/09(火) 17:29:42.12ID:fBzPCnLFd
>>1
3デフォルトの名無しさん (ワッチョイ df01-ouLR)
2023/05/10(水) 05:46:16.13ID:v0BqkWXe0
>>2
よく見たらそれ乙じゃなくてポニーテールやん
4デフォルトの名無しさん (スプッッ Sd97-Itme)
2023/05/10(水) 07:28:21.43ID:htltMOsRd
どゆこと?
5デフォルトの名無しさん (テテンテンテン MMde-qVtI)
2023/05/12(金) 20:00:57.96ID:mYlAeNCAM
class template みたいなノリで、namespace templateとかできないかね。
ユーザーカスタマイズくらいしかメリット無いけど。
6デフォルトの名無しさん (ワッチョイ 6f9a-syTp)
2023/05/13(土) 07:51:55.71ID:JxNjXH3v0
ある整数のペアが既に出てきたかどうかを管理したいのですが、
安直に unordered_set(pair<int, int>> としたら、これはハッシュ関数を定義してあげないと
使えないんですね。
ネット上で見かけた良さげなハッシュ関数の例をコピーする手もあるのですが、
これ以外で楽なやり方(データ型)ってありますかね?
7デフォルトの名無しさん (テテンテンテン MM7f-hs0w)
2023/05/13(土) 08:05:00.58ID:qcT1eyp6M
職業プログラマに聞きたいんだけど
自分でソフト屋なんて言ってるけど、ほぼ全てを外注に投げて自分ではろくに書けないなんての普通のことなの?

今年から社会人になったんだけど、先輩たちのレベルが低すぎて失笑してる日々です。

c言語、クラスという単語をドヤ顔で宣ってる先輩達。
classを解釈できるcコンパイラがあるのかな
8デフォルトの名無しさん (ワッチョイ cf34-+/XS)
2023/05/13(土) 08:10:28.77ID:Er9DBy9d0
俺は自分がそうだったら恥ずかしくてプログラマなんて名乗れないけど
世の中には色んな人がいるからね
まあ俺の価値観では普通じゃない

クラス、つまりオブジェクト指向は何言語を使うかじゃなく頭の中の考え方だから
++じゃないCでも使っていい用語だよ
9デフォルトの名無しさん (ワッチョイ 6f9a-syTp)
2023/05/13(土) 08:20:18.41ID:JxNjXH3v0
>>6
ちなみにPythonだと辞書や集合にタプルをデフォで入れられるんですよね...
C++も同様のサポートをして欲しかった気が
10デフォルトの名無しさん (ワッチョイ 3302-Cej3)
2023/05/13(土) 08:32:20.51ID:/V+1J/0r0
>>7
板違い。マ板へ行け
あと5chは不満のはけ口じゃない。そういうのはママにでも慰めてもらえ
11デフォルトの名無しさん (スップ Sd1f-ammQ)
2023/05/13(土) 09:16:37.00ID:uFhfbSODd
>>6
単に vector とかのコンテナに入れて find とかで既出判定すればいいんじゃないかな。
12はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-Phjm)
2023/05/13(土) 09:44:38.89ID:vqN1nVlv0
>>11
数が特に少ないときならそれでもいいけど
普通に考えたら実行コストが大きすぎるだろう。
13デフォルトの名無しさん (ワッチョイ cf34-+/XS)
2023/05/13(土) 09:49:39.77ID:Er9DBy9d0
ハッシュ関数を定義してあげないと使えないって
定義すれば使えるだろ

何が問題なんだ?
14デフォルトの名無しさん (アウアウエー Sadf-OfPZ)
2023/05/13(土) 10:30:48.84ID:W/YCRtGia
単にset<int, int>じゃダメなの?
場合によっちゃあmap<int, set<int>>のほうが容量ケチれそうだけど?
https://ideone.com/YB4CIY
{
std::set<std::pair<int, int>> s;
s.emplace(1, 1);
s.emplace(1, 2);
auto f = [&s](int a, int b) {
return s.find(std::pair<int, int>(a, b)) != s.end();
//return s.contains(std::pair<int, int>(a, b));
};
std::cout << f(1, 1) << f(1, 2) << f(0, 1) << std::endl;
}
{
std::map<int, std::set<int>> m;
m[1].insert(1);
m[1].insert(2);
auto f = [&m](int a, int b) {
return m.find(a) != m.end() && m[a].find(b) != m[a].end();
//return m.contains(a) && m[a].contains(b);
};
std::cout << f(1, 1) << f(1, 2) << f(0, 1) << std::endl;
}
15デフォルトの名無しさん (ワッチョイ f37c-rSo2)
2023/05/13(土) 11:16:03.77ID:giA7vv3r0
後者だったらstd::multimapでよくね
unorderedでもいいけど
16デフォルトの名無しさん (アウアウウー Sa67-ayqt)
2023/05/13(土) 13:46:15.98ID:0/cn7SoCa
>>7
WNDCLASS
RegisterClass
UnregisterClass
WNDCLASSEX
RegisterClassEx
GetClassName
GetClassLong
SetClassLong
GetWindowClass
17デフォルトの名無しさん (テテンテンテン MM7f-hs0w)
2023/05/13(土) 19:14:51.96ID:23Ow1LiAM
>>16
君もc++を学習しなおせ
18デフォルトの名無しさん (スップ Sd1f-MiYm)
2023/05/13(土) 19:17:32.52ID:acArdvJWd
>>7
ソフト屋という大きなカテゴリの中でコーダーとは役割が違うだけでコーディングスキルだけを見て優劣を考えるのは短絡的な判断だよ
必要なスキルなんて立ち位置次第で全く異なるんだから
19デフォルトの名無しさん (スプッッ Sd1f-zj+H)
2023/05/13(土) 19:23:38.16ID:lAh8QD2cd
コード書けないリーダーは事務方に徹してくれるなら別にいいんだよ
そうじゃないやつが迷惑ってだけ
コーダーをバカにするやつはすべてこれ
20デフォルトの名無しさん (ワッチョイ 6f9a-syTp)
2023/05/13(土) 19:32:33.50ID:JxNjXH3v0
>>13
よく使うものはシステム側でハッシュ関数を用意してくれると助かるな、的な
あともしショボいハッシュ関数を使ったら性能が落ちますし、ってそれも自己責任かw

>>14
setは悪くないですね。ただパフォーマンスにシビアになる場合はunordered_の方を
使いたいかなと。こちらもちゃんとしたハッシュが前提になりますが
21デフォルトの名無しさん (オイコラミネオ MMc7-ZkZz)
2023/05/13(土) 21:58:43.54ID:TFo/sDKRM
int int → long
何にでも突っ込め
22デフォルトの名無しさん (ワッチョイ 73da-M4GN)
2023/05/13(土) 22:42:01.19ID:2eXxQqWR0
long long int
23デフォルトの名無しさん (ワッチョイ 6f9a-syTp)
2023/05/13(土) 23:57:15.63ID:JxNjXH3v0
>>21 >>22
片方の値をシフトして足すということですよね? 確かにアイデアですね
似たような感じでint -> intのマップをソートするというのを見たことが
24デフォルトの名無しさん (ワッチョイ 335f-GJof)
2023/05/14(日) 00:07:36.91ID:QmAlZPFj0
何も考えないでboost::combine_hash使っとけばいい
25デフォルトの名無しさん (ワッチョイ f37c-rSo2)
2023/05/14(日) 00:50:39.86ID:uyb9YL620
どうせ整数のハッシュなんて値そのものだし
26デフォルトの名無しさん (ワッチョイ 73da-M4GN)
2023/05/14(日) 00:58:25.21ID:hOK4knnB0
よくあるサンプルが (x * 12345)%n
27デフォルトの名無しさん (ワッチョイ 73da-M4GN)
2023/05/14(日) 01:15:07.44ID:hOK4knnB0
いや、適当杉田わ
long int v=0;
for(auto c : int_array)
v += v*12345 + c ;
return v%hash_size;
28デフォルトの名無しさん (ワッチョイ 73da-M4GN)
2023/05/14(日) 01:16:46.06ID:hOK4knnB0
いや、こうか
long int v=0;
for(auto c : int_array)
v*=12345, v+=c ;
return v%hash_size;
29デフォルトの名無しさん (ワッチョイ cf34-TSnC)
2023/05/14(日) 06:44:54.29ID:YUNKAbGY0
template <>
struct std::hash<std::pair<int, int>>
{
static constexpr std::size_t size = sizeof(int) * 2;
using result_type = std::bitset<size * CHAR_BIT>;

result_type operator()(const std::pair<int, int>& val) const
{
result_type ret;
ret |= result_type(get<0>(val));
ret |= result_type(get<1>(val));
return ret;
}
};
30デフォルトの名無しさん (ワッチョイ cf34-TSnC)
2023/05/14(日) 06:47:52.52ID:YUNKAbGY0
もとい
ret |= result_type(get<0>(val));
ret <<= sizeof(int) * CHAR_BIT; //fix
ret |= result_type(get<1>(val));
31デフォルトの名無しさん (ワッチョイ 6f9a-syTp)
2023/05/14(日) 10:45:03.83ID:28vpFfrh0
シフト演算が必要なのは、負の整数の場合が
あと、問題のサイズによってはハッシュの速度も気になるなあと
32デフォルトの名無しさん (オイコラミネオ MMc7-ZkZz)
2023/05/14(日) 13:45:27.63ID:pb1Dbmn7M
この流れ…

小学生の頃の自分はもちろんc知らなかったけど
このスレでああだこうだ言ってる人間達よりは使える人間だったのかなと
33デフォルトの名無しさん (ワッチョイ 7f28-HoHV)
2023/05/14(日) 13:47:15.07ID:mysDM4PT0
負の整数を論理演算と組み合わせるときはオフセットして非負の範囲にしてから符号無し型にして唐論理演算したら安心、
取り出すときは(論理演算して切り出した後)逆オフセットで元に戻る
全ての過程で符号つき整数の右シフトが陽に現れずに済む
34デフォルトの名無しさん (ワッチョイ 7f28-HoHV)
2023/05/14(日) 13:52:34.35ID:mysDM4PT0
しつれい
>オフセットして非負の範囲にしてから符号無し型
この処理順序で良いのは {扱う整数|<std::numeric_limits<オフセットするときの整数型>::max()のときはこれで良いが、
=の場合は符号無しにしてからオフセットする
全てが調和する、
35デフォルトの名無しさん (オイコラミネオ MMc7-ZkZz)
2023/05/14(日) 13:53:38.30ID:pb1Dbmn7M
こんなの秒で解決するだろ
ごちゃごちゃ言うようなものなの?
36デフォルトの名無しさん (ワッチョイ 835f-Phjm)
2023/05/14(日) 17:24:37.15ID:oi9EHG/70
こんなの秒でスルーするだろ
ごちゃごちゃ言うようなものなの?
37デフォルトの名無しさん (スップー Sd1f-HMPm)
2023/05/14(日) 18:28:37.27ID:f2qVMn0Gd
スルー出来てない人に言われましても
38デフォルトの名無しさん (ワッチョイ cf34-TSnC)
2023/05/14(日) 21:34:32.36ID:YUNKAbGY0
ヒントじゃあかんのね
100%完全なコードを提供しないとクレームつくわけか

# 若旦はん、やってて恥ずかしおまへんか?
39デフォルトの名無しさん (ワッチョイ 0310-QNcS)
2023/05/16(火) 15:18:28.27ID:cdgpde7Q0
教えてもらえないでしょうか
c++で
クラスを作って関数を書いています。
大きくなり、可読性が悪いので、
同じクラス内のcppを別ファイルに分けたいのですが、
可能なのでしょうか

継承を使って、10個ぐらい数珠つなぎにして、一番最後の継承クラスに関数呼び出し元の関数を書いて、
途中の継承クラスに分けたい関数を書いたら、
と考えたりしています。
40デフォルトの名無しさん (アウアウウー Sa67-+/XS)
2023/05/16(火) 15:58:56.29ID:mGp2Y9l5a
>>19
めっちゃわかります
41デフォルトの名無しさん (アウアウウー Sa67-+/XS)
2023/05/16(火) 16:03:17.10ID:mGp2Y9l5a
>>39
可能
ヘッダのクラス定義はまとめないとだめだけど
cppのソースは分かれてても最後にリンクで辻褄が合えばOK
42デフォルトの名無しさん (アウアウウー Sa67-MLJk)
2023/05/16(火) 16:24:39.60ID:hKNAv4Vda
>>39
後半で言っていることがちょっと難しいかな
多重継承の数珠繋ぎを言ってる?

よく分からんけど多分そんな変なことしなくていいよ
43デフォルトの名無しさん (ワッチョイ 0310-QNcS)
2023/05/16(火) 17:34:39.57ID:cdgpde7Q0
>>41
>>42
助かります。ありがとうございます。
勉強してみます。
44デフォルトの名無しさん (スッップ Sd1f-paFp)
2023/05/16(火) 21:35:23.62ID:+NXdN5Npd
可読性が悪いものは
ファイルを分けても良くはならんぞ
45デフォルトの名無しさん (ワッチョイ 6fad-ZkZz)
2023/05/16(火) 21:55:30.94ID:RFVtGrOF0
>>39
1つのクラスに機能を詰め込み過ぎなんじゃない?
昔、4万行のcppファイルを見たことはあるけどw
46デフォルトの名無しさん (ワッチョイ 73da-M4GN)
2023/05/16(火) 22:05:53.03ID:oY5Fe8SB0
殆どコピペなんだろうな
クラスの継承知らないヤツがよくやる荒業
47はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-ZkZz)
2023/05/16(火) 22:27:10.76ID:tGbGLk1R0
そういえば C# でクラス定義を分ける機能 (パーシャルクラス) があると聞いたことがあるけど
本来的に分けるべきクラスを見かけだけ分割するような悪い設計を誘発しそうな印象がある。
C# について全然知らんので印象だけだけど。
48デフォルトの名無しさん (ワッチョイ 335f-GJof)
2023/05/16(火) 22:54:23.62ID:A1rs+At80
partialはXAMLから生成された.csと手書きする.csをマージするための機能なので
49デフォルトの名無しさん (スプッッ Sd1f-zj+H)
2023/05/17(水) 07:00:26.09ID:s9zxu+xkd
>>47
多重継承っぽいやつ?
50デフォルトの名無しさん (スップ Sd1f-kcYJ)
2023/05/17(水) 08:36:31.92ID:9mruUvtDd
分割されたそれぞれの断片をコンパイラの後工程で1クラスにまとめ上げる感じ。
なのでこんな感じの相互参照も許される。

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

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

まあ当然コードの見通しが悪くなるので、
コンパイラ生成が絡むとこだけをpartialにして1ファイル1クラスにしておくのが鉄則
51デフォルトの名無しさん (スッププ Sd1f-paFp)
2023/05/17(水) 12:04:20.17ID:nFfh+5gid
「1ファイル1クラスにしておくのが鉄則」

10行のクラスも10000行のクラスも何も考えずに1ファイル
思考停止君のやること
52デフォルトの名無しさん (オイコラミネオ MMc7-ZkZz)
2023/05/17(水) 12:36:42.78ID:F24a8wLtM
C#のpartialは基本的に自動生成されたファイルとの分離が主目的

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

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

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

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

特定の機能をまとめたファイルを一つ作ってそこに関連クラスを全部入れるとかもできるけど無しだろうな
特定のタイミングでプリンターに出力するメソッドを追加してファイルのアリ無しで切り替えるとかは出来そう
53デフォルトの名無しさん (アウアウウー Sa67-MLJk)
2023/05/17(水) 12:57:39.48ID:TlHThGt8a
おんなじ意味合いの関数なんだけどSFINAEしまくってて1000行くらいあるやつはよく見かける
54デフォルトの名無しさん (ワッチョイ 3302-Cej3)
2023/05/17(水) 13:32:11.85ID:6s1sKbMg0
時代はパーシャル
55デフォルトの名無しさん (スプッッ Sd07-zj+H)
2023/05/17(水) 16:10:19.20ID:ZA2j/mjnd
触られたくないコードって危険を孕んで内科医?
業務の情報が1人の社員に独占されていると
そいつが急死したら詰むだろ
56デフォルトの名無しさん (オイコラミネオ MMc7-Np+b)
2023/05/17(水) 22:50:57.85ID:F24a8wLtM
彼も若いころは文脈も理解できてまともにコーディングできたのかもしれない

皆いつか老化して意味が取れなくなるんだから
いつか行く道と言うことで…
57デフォルトの名無しさん (ワッチョイ 7f28-sx1H)
2023/05/18(木) 08:16:22.48ID:rquLbZPK0
互いに依存しないことを明確にするためにファイルを分けることはまれによくある……
static int g_foo;

class A { ... };

class B {
 void bar() { baz(g_foo); A x; } // Bがg_fooやAへの依存が無いことはBをファイルを分けたらワカル分けなかったらわからん
};
58デフォルトの名無しさん (ワッチョイ 7f28-sx1H)
2023/05/18(木) 08:21:13.77ID:rquLbZPK0
もっともファイルを分けたからといってもメモリのエイリアシング的な形で依存した場合は知らん
some_func()が表記上はg_fooを含まないのに実は中でg_fooのアドレスを知っていて以下略
59デフォルトの名無しさん (オイコラミネオ MMc7-Np+b)
2023/05/18(木) 22:15:33.79ID:mLb7AMe5M
さすがに冷たい対応だったかなと

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

それで自動生成された部分を人が不意に触れないないようにそこだけを別ファイルに出す目的でpartial classが出来た
partial methodも作られたけど他人が使ってるのを見たことがない
60デフォルトの名無しさん (ワッチョイ ff79-ScEU)
2023/05/19(金) 02:03:23.75ID:iSJAQTOS0
日本でパーシャルと言えばパーシャル冷蔵庫
微妙に凍結させた状態にして保存するというアレ
まさにC#のpartialの事である
61デフォルトの名無しさん (スプッッ Sd1f-zj+H)
2023/05/19(金) 14:04:53.67ID:Y7veEz1vd
偏微分
62デフォルトの名無しさん (ラクッペペ MM7f-fulC)
2023/05/19(金) 14:20:06.94ID:s84ipUzkM
グラッド ダイバージェンス ローテーション
63デフォルトの名無しさん (アウアウウー Sa2f-SwK+)
2023/05/20(土) 13:24:28.97ID:QfLlK72xa
Φ(E)
∇・E
∇×E
64デフォルトの名無しさん (JP 0H2b-QEN2)
2023/05/20(土) 14:24:46.00ID:duXb8gf0H
ナブラッ
65デフォルトの名無しさん (ワッチョイ 03cf-owa4)
2023/05/20(土) 14:35:25.50ID:mmZhl8HV0
チロワッ
66デフォルトの名無しさん (オイコラミネオ MMeb-owa4)
2023/05/20(土) 15:53:45.99ID:KTPYLvU6M
APLを思い出した
さすがに使ったことはないけど
67デフォルトの名無しさん (アウアウウー Sa2f-IRVr)
2023/05/20(土) 16:00:42.45ID:eGW3N412a
for(auto &v: createVector()) なんか処理

みたいな書き方してもcreateVectorは一回しかよばれず大丈夫ってことでいい?
68はちみつ餃子 ◆8X2XSCHEME (ワッチョイ cb3e-FIIW)
2023/05/20(土) 16:21:49.91ID:dyAKGBP20
>>67
せやで。
その関数が呼ばれるのは一度だけという解釈で正しい。
69デフォルトの名無しさん (ワッチョイ b301-HmrL)
2023/05/20(土) 16:23:49.47ID:am3G09Kz0
>>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デフォルトの名無しさん (ワッチョイ fff0-IRVr)
2023/05/20(土) 18:59:35.46ID:VcGb9zmJ0
>>69
自分の環境だと通るのは知ってるけど、実は未定義でアウトみたいな場合あるから5chの有識者の意見が聞きたかった
71デフォルトの名無しさん (オイコラミネオ MMeb-owa4)
2023/05/20(土) 19:26:09.53ID:KTPYLvU6M
かなり昔範囲forはプリプロセッサで展開されると聞いたことがあったなあ
そういうのから誤解なんじゃないかな

実際展開してみたけどプリプロセッサでは展開されないです
72デフォルトの名無しさん (ワッチョイ 5f7c-aV//)
2023/05/20(土) 20:10:50.85ID:pdI1pmlS0
>>70
これのこと?

std::vector<int> createVector();

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

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

for(auto &v: createResult().v) // UB
73はちみつ餃子 ◆8X2XSCHEME (ワッチョイ cb3e-FIIW)
2023/05/21(日) 00:13:09.51ID:tvaGSf6W0
>>71
range-based for は等価なコードを示す形で意味論が規定されてる。
https://timsong-cpp.github.io/cppwp/n3337/stmt.ranged
「こう書いた場合の挙動と等しい」という説明が「このように展開される」と誤解されたんだろう。
コンパイラの内部で実際に展開しても構わないんだが
プリプロセッサはフェイズの整合性がとれなくなるのでこの展開をプリプロセッサでは実現できない。
74はちみつ餃子 ◆8X2XSCHEME (ワッチョイ cb3e-FIIW)
2023/05/21(日) 00:41:25.84ID:tvaGSf6W0
一時オブジェクトの寿命は個々の具体例を網羅的に覚えるというわけにもいかんので
ちゃんと原則を理解しないといかんというのは警告しておく。

>>72 で提示された内容を解説すると、このとき createResult の結果である Result は一時オブジェクトなので
完結式の終わりには解体される。 (>>73 で提示した展開形を参照のこと。)
右辺値は参照で受けた場合に限りその参照の寿命と同じ分だけ寿命が延長されるというルールがあるので
その原則に従えば Result::v の寿命は延長されるのだが v を内包する Result が解体されるときにメンバも解体してしまうので
Result::v も無効になってしまう。
当然だがすでに解体されたオブジェクトはそのイテレータも全部が無効。
75デフォルトの名無しさん (スップ Sd8a-Cz+X)
2023/05/21(日) 10:05:34.04ID:bUoMcGVnd
単純な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 を指定されたら無理)
76デフォルトの名無しさん (オイコラミネオ MMeb-owa4)
2023/05/21(日) 13:16:13.24ID:gNV32dtiM
そうそう
プリプロセッサは重複の無い任意の変数名を持ってこれない
固定でもスコープの問題もあるからプリプロセッサ論は馬鹿げてるなと思った
77デフォルトの名無しさん (ワッチョイ 5f7c-aV//)
2023/05/21(日) 14:57:20.57ID:TLn2V+5X0
>>74
ちなみにこれはC++23からは解決する(P2644)
for文の中身のあらゆる一時オブジェクトは(謎の力によって)ループ終了まで生存するようになる
まあ現時点ではやらない方がいいし、気にしなくて良くなるまで10年はかかるだろうけど
78デフォルトの名無しさん (ワッチョイ b301-HmrL)
2023/05/21(日) 15:50:41.28ID:hDRagkvp0
>>77
えええ!
どんな需要を満たそうとしてそんな変更するんかね?
79デフォルトの名無しさん (ワッチョイ aa28-ff77)
2023/05/21(日) 19:09:41.96ID:9sSc2LHl0
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;
}

とかになったらどうなってしまウンダー/(;≧Д≦)\
80デフォルトの名無しさん (ワッチョイ 5f7c-aV//)
2023/05/21(日) 20:47:43.16ID:TLn2V+5X0
for (auto&& x: <<ここだけだよ>>)
81デフォルトの名無しさん (ワッチョイ 6f5f-u1DA)
2023/05/21(日) 21:41:43.50ID:Wy9ZySN20
std::for_eachと死ぬタイミング合わせようとしてるのかな
82デフォルトの名無しさん (スププ Sdea-3V1s)
2023/05/22(月) 11:38:14.26ID:da9WNPSud
do{}while(ここにblock内で宣言した変数使えるのマダ?);
83デフォルトの名無しさん (ラクッペペ MM86-F7IQ)
2023/05/23(火) 08:13:25.35ID:Zuh94crlM
Main でインスタンス化した、ファイル操作
クラスの設定を、別のクラスutilityの
インスタンスで使いたい時ってどうしたら
いいですか?

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

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

差し支えなければ現状のクラス定義を貼ってほしいが
85デフォルトの名無しさん (ラクッペペ MM86-F7IQ)
2023/05/23(火) 09:15:28.22ID:Zuh94crlM
>>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そのまま。。


}

こんな感じですが、伝わりますか?
86デフォルトの名無しさん (アウアウウー Sa2f-SwK+)
2023/05/23(火) 10:39:56.04ID:X1m2WkvHa
Utility util(dbg);
87デフォルトの名無しさん (ワッチョイ defb-a+t/)
2023/05/23(火) 12:30:30.59ID:gLCisDzi0
関数の命名センスが短絡的やな
扇子を磨け
88デフォルトの名無しさん (スップ Sd8a-Cz+X)
2023/05/23(火) 12:40:55.81ID:2zdXEqSEd
std::ostreamはコピーを禁止してるから参照渡し(or ポインタ渡し)で受け取るのがいいかな

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

int main(){
...
Utility utl(dbg);
}
89デフォルトの名無しさん (アウアウウー Sa2f-k5Su)
2023/05/23(火) 13:00:20.12ID:zQ9auONPa
Debugをシングルトン化しておけばいいのでは。
そうすれば、utilityもMainもDebugの定義を読むだけで、お互いに無関心でいられる。
90デフォルトの名無しさん (スップ Sdea-9ehv)
2023/05/23(火) 13:07:36.09ID:Gn7U56ehd
staticおじさんになるんだよ
91デフォルトの名無しさん (ワッチョイ ffda-dfFb)
2023/05/23(火) 13:19:59.30ID:4jUsmOvf0
禁じ手
グローバルおじさん
92デフォルトの名無しさん (ワッチョイ 635f-cbOI)
2023/05/23(火) 14:52:04.84ID:HWUzxVfV0
#ifdef NDEBUG
#define DEBUG_PUTLN(line)
#else
#define DEBUG_PUTLN(line) dbg.writefile(line)
#endif
93デフォルトの名無しさん (ワッチョイ 5f7c-aV//)
2023/05/23(火) 20:11:47.19ID:QG1lXeie0
シングルトンって実質はグローバル変数そのものなんだけどな
94デフォルトの名無しさん (ワッチョイ dbd4-3DEL)
2023/05/23(火) 20:33:02.99ID:H3Kl0Etq0
クラス定義がそもそもグローバルだからな
95デフォルトの名無しさん (ワッチョイ ffda-dfFb)
2023/05/23(火) 23:59:19.62ID:4jUsmOvf0
int i をグローバル変数にしてたおじさん居たな
理由聞いたら書くの面倒だからとか
96デフォルトの名無しさん (アウアウウー Sa2f-pkzb)
2023/05/24(水) 01:56:30.90ID:EzFDCa2Ya
全部シングルトンおじさんとglobalおじさんは一人でもいると周りがめっちゃ迷惑やな
97デフォルトの名無しさん (ワンミングク MM3a-F7IQ)
2023/05/24(水) 14:31:10.50ID:VF8oVK+zM
ありがとう。
やっばり、Utility の中にも色々書く必要あり
ですね。
デバッグのためだけにUtility2 3 4全部直すのも
と思ってたけど、諦めて頑張ります。
98デフォルトの名無しさん (ワンミングク MM3a-F7IQ)
2023/05/24(水) 14:34:53.03ID:VF8oVK+zM
external でインスタンス渡して、
global.h さんだけincludeしてできないかなと、
甘く考えてた時もありました。
99デフォルトの名無しさん (ワッチョイ 0705-vBUL)
2023/05/24(水) 23:58:03.92ID:lCJuR93r0
世界で1つのint iをブンブン回してるのクソワロタ
100デフォルトの名無しさん (アウアウエー Sac2-cyLm)
2023/05/25(木) 00:06:30.18ID:1obgfOJTa
ループ内でサブルーチンとか呼んだときどうするんだろう・・・
101デフォルトの名無しさん (ワッチョイ 1b02-XPFS)
2023/05/25(木) 00:18:52.33ID:8bGOXla20
std::u16string_view stringView (string);
stringView = {stringView.data () + 1, stringView.size () - 1};

これの2行目はどういう意味なんでしょうか?何かの文法のような気がするのですが、調べ切れていません・・・。
102デフォルトの名無しさん (ワッチョイ aa28-ff77)
2023/05/25(木) 00:55:03.39ID:NKFrr9+j0
グローバルなオブジェクトのコンストラクタの中からprintf()とかのC言語の標準ライブラリ機能が呼べるのはワカルが
coutとかのC++の標準ライブラリ機能は安全に呼べることは保証されるの?
103デフォルトの名無しさん (ワッチョイ 5f7c-aV//)
2023/05/25(木) 01:41:17.05ID:WiPfB6bJ0
される
規格上はstdに含まれる値(オブジェクト)はユーザーコードで参照されたら(特別の規定がない限り)常に有効でなければならない
104デフォルトの名無しさん (ワッチョイ 4aa5-owa4)
2023/05/25(木) 08:37:46.24ID:2LyQ/gAw0
>>101
rangesのviewだろ
105はちみつ餃子 ◆8X2XSCHEME (ワッチョイ cb3e-FIIW)
2023/05/25(木) 09:32:15.13ID:G3dlC7U30
>>101
> stringView = {stringView.data () + 1, stringView.size () - 1};

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

stringView = std::u16string_view(stringView.data () + 1, stringView.size () - 1);
106デフォルトの名無しさん (スップ Sdea-9ehv)
2023/05/25(木) 11:13:48.89ID:vvIauVZOd
>>105
一見意味不明何だけど何て記法?
107デフォルトの名無しさん (ワッチョイ 0705-vBUL)
2023/05/25(木) 11:49:30.93ID:tfjCiJA40
勉強中なんだけど、クラスの相互参照って気持ち悪い
108デフォルトの名無しさん (ワッチョイ 0705-vBUL)
2023/05/25(木) 12:04:14.41ID:tfjCiJA40
もう、慣れた
109はちみつ餃子 ◆8X2XSCHEME (ワッチョイ cb3e-FIIW)
2023/05/25(木) 12:08:58.16ID:G3dlC7U30
>>106
たぶん直接的に表す用語は定義されてないと思う。

型の情報がないときは波括弧で表されたリストは initializer_list に推論されるけど
代入のときは代入演算子のオーバーロード解決時候補に関数シグネチャとして T& operator=(T&,T); が加わるので
結果としてこのとき生成される一時オブジェクトの初期化子という解釈になる。
110デフォルトの名無しさん (ブーイモ MMea-UgiX)
2023/05/25(木) 13:19:23.21ID:E3OVdEtKM
Uniform initialization 一様初期化とか統一初期化?
https://cpprefjp.github.io/lang/cpp11/uniform_initialization.html

std::initializer_listも含んだ文法だね
std::initializer_listの方か他のコンストラクタの方になるかはけっこうルールがややこし
111デフォルトの名無しさん (オイコラミネオ MMeb-owa4)
2023/05/25(木) 19:45:10.69ID:bX845kvIM
c++はその{}の中に書くとclassの中に書いた変数が順番に初期化される
いろいろ問題があるから他の言語で採用されていない

c++は実用面で利点があると判断されたのかそのまんま
112デフォルトの名無しさん (オイコラミネオ MMeb-owa4)
2023/05/25(木) 19:47:55.97ID:bX845kvIM
Brace initialization
https://learn.microsoft.com/en-us/cpp/cpp/initializing-classes-and-structs-without-constructors-cpp?view=msvc-170
113デフォルトの名無しさん (ワッチョイ 1b02-XPFS)
2023/05/26(金) 06:48:21.55ID:kRDoXd150
>>105
ありがとうございます。
DTMのプラグイン(VST3)を作ってみたくて、それにはC++をある程度分かってないといけないそうなので、
参考書読んだりしているのですが、これれまでC++に全く触れてこなかったので、かなり面食らってます・・・。
サンプルのソースを見ても、いろいろな応用が含まれていて、前提となる知識がそれなりにないと分からないのかなと・・・。
114はちみつ餃子 ◆8X2XSCHEME (ワッチョイ cb3e-FIIW)
2023/05/26(金) 10:03:10.85ID:qewSmBpu0
>>113
C++ の仕様には未定義がたくさんあるので実際に動作させた結果から学ぶべきではないという事情がある。
ある程度は理屈で理解しておかないと簡単に破綻するよ。
実例を見ながら雰囲気で使うってのは出来ない言語だと思う。
115デフォルトの名無しさん (ワッチョイ 67c9-HmrL)
2023/05/26(金) 10:55:39.45ID:Yaiov3bU0
しらない間に未定義踏んでて、コンパイラ変わったりしたときに挙動が変わるやつ
116デフォルトの名無しさん (ササクッテロラ Sp03-OHH9)
2023/05/26(金) 11:28:17.59ID:VVS6yE6rp
>ある程度は理屈で理解しておかないと
に対しての
>実際に動作させた結果から学ぶべきではない

極端じゃね?
117デフォルトの名無しさん (ワッチョイ 5f9c-uVPi)
2023/05/26(金) 11:37:41.87ID:jtoHc2Cr0
>>113
chatgptにサンプルコードを解説させたら?
118はちみつ餃子 ◆8X2XSCHEME (ワッチョイ cb3e-FIIW)
2023/05/26(金) 13:02:36.82ID:qewSmBpu0
>>116
「ちゃんとした資料を読まずに動作から何かを読み取ろうとするな」という話なので、
資料を読んだうえで手を動かして確認することまで否定してるわけじゃないよ。
少なくとも初手は入門書くらい読まんといかんという程度のことを言ってる。
119デフォルトの名無しさん (スッップ Sdea-Q5bc)
2023/05/26(金) 21:10:27.73ID:u5i01UPgd
解脱させたらに見えたし
120デフォルトの名無しさん (ワッチョイ 5f7c-aV//)
2023/05/26(金) 21:19:24.77ID:cuJor+ml0
「ワイのコードではこう動いてるからいいの!」「ワイが試したらこう動いたからこうなの!」
で突っ走った結果大爆発する事例が後を絶たない
121デフォルトの名無しさん (スプッッ Sd13-Cz+X)
2023/05/26(金) 21:27:57.62ID:TE50P/kBd
未定義まで行かなくても処理系依存とか未規定動作もあるからほんとにややこしい
知らず知らずのうちにコンパイラの拡張機能使ってたりもあるし

「動けばいいんだよ!」としか考えてないとどこで足元掬われるかわからん
122デフォルトの名無しさん (アウアウウー Sa2f-+waq)
2023/05/26(金) 22:54:23.75ID:C+URTl/Qa
んちんちんちんちんちんち
123デフォルトの名無しさん (ワッチョイ cb01-OHH9)
2023/05/26(金) 23:25:57.70ID:Rw5xxtFh0
>>120-121
そんな低レベルな奴見たことないけどな
居るには居るんだろうけど

あと逆にそういうのを「手を動かさない」「実用コードで試しもせずに机上の空論でマウント取る」ことの言い訳にしてる奴を最近よく見かけるのでな
124デフォルトの名無しさん (オイコラミネオ MMeb-owa4)
2023/05/26(金) 23:42:19.49ID:mzi7SNrwM
実際VS2005ぐらいに演算の順番が決まってなくて実装依存だった
それでコードを書いてた
それがVS2007には演算順序が2005と変わってた
GCCでも別の順で計算された

どうしたらいいかわからんから多分ここに聞きにきたら未定義動作だからどうしようもない
実装依存で仕方がないと返答あり
125デフォルトの名無しさん (ワッチョイ 4b01-nxBO)
2023/05/27(土) 00:10:57.47ID:U8Vd2x100
自分もVCから別環境のclangに数万行のコード移したら未定義踏んでた部分あるけど、試さずにそれを最初から予知出来てたかというと無理がある
どちらかのコンパイラのバグで通らなかったりおかしな動作する場合もあるんだし(特にテンプレート周りは多い)
書いてる最中でも疑問に思ったらすぐ調べる癖がついてりゃいいんじゃないかな
126デフォルトの名無しさん (ワッチョイ 6b5f-S+HU)
2023/05/27(土) 00:12:11.79ID:ne0x12BC0
>>124 いや、文を分けて順序付けするなり、やりようはあっただろ。
127デフォルトの名無しさん (オイコラミネオ MM4f-/RYi)
2023/05/27(土) 00:24:40.55ID:bsq21T/IM
>>126
上にも書かれてるけど既存のコードのどこで問題が発生してるか全てを特定できないんだよ
128蟻人間 ◆T6xkBnTXz7B0 (スフッ Sdbf-JQ4Y)
2023/05/27(土) 00:41:28.44ID:LEdjjvJrd
最近のVisual C++なら「コード分析」機能でコードの改良点を教えてくれるかも知れない。
129デフォルトの名無しさん (ワッチョイ 3bda-DntA)
2023/05/27(土) 00:45:08.14ID:JrAUAXG20
AIが他人が書いたクソコードのリファクタリングやってくれると助かるな
130デフォルトの名無しさん (アウアウウー Sa8f-BLq/)
2023/05/27(土) 01:23:22.98ID:D5N3c6HOa
超すごい!人間を越えた!とかワイワイさわがしいAIだが
実際にそういう感じの「マジに困ってる、やってくれたら本気で助かる」
ような事案は結局できない、という地獄
131デフォルトの名無しさん (ワッチョイ 0bb5-jMfM)
2023/05/27(土) 04:58:22.78ID:wRHxWgs90
言われたとおりやるだけ、なやつの極端な例だからな
132デフォルトの名無しさん (ワッチョイ 3bf0-TYVD)
2023/05/27(土) 08:03:41.82ID:hUTpNjv00
AIが人間並みの知性を持てば人間並みにエンバグしてくれるはず
133デフォルトの名無しさん (アウアウウー Sa8f-BLq/)
2023/05/27(土) 08:08:34.97ID:ap1zYrbma
すごい!まさに人間そのもののAIじゃないか!
134デフォルトの名無しさん (ワッチョイ 6b5f-r/x3)
2023/05/29(月) 16:30:05.50ID:AteM0zCG0
責任転嫁するようになるまで人間に並んだとは認めない
135デフォルトの名無しさん (ワッチョイ 0b6e-jMfM)
2023/05/29(月) 17:54:13.71ID:I9NccWA+0
会社で嫌われるイヤな奴の特徴を全てプログラミングされたAIとか?
136デフォルトの名無しさん (ワッチョイ 4bc0-3xLk)
2023/05/29(月) 18:33:58.19ID:IrTtCTAo0
AIに相談したせいで鬱になって辞める社員が続出しそうだな
AIポイゾニングは新手のリモート攻撃として流行るかもね
137デフォルトの名無しさん (ワッチョイ 0b6e-jMfM)
2023/05/29(月) 20:15:39.44ID:I9NccWA+0
ヘイテトリスみたいな社員AI
138デフォルトの名無しさん (ワッチョイ 0128-w4Nq)
2023/06/04(日) 08:29:54.68ID:5jvZ+YKl0
質問ですが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++;
}
139デフォルトの名無しさん (ワッチョイ 61f0-7HAn)
2023/06/04(日) 08:38:19.14ID:Wo5LOckB0
>>138 まず、こちらへ
0からの、超初心者C++相談室
http://2chb.net/r/tech/1542002113/
140デフォルトの名無しさん (ワッチョイ 0128-w4Nq)
2023/06/04(日) 09:23:46.19ID:5jvZ+YKl0
誘導されたので誘導先に建てたはサーセン、
141デフォルトの名無しさん (オイコラミネオ MMe9-N/Lw)
2023/06/04(日) 11:01:36.99ID:/SPLhkOjM
文字列(char配列)とstringの仕組みはダサいけど他も大体これ
さらにspanもいれる
どこも大体同じ
142デフォルトの名無しさん (ワッチョイ edf0-+LPJ)
2023/06/04(日) 18:06:29.89ID:HhL1J/ge0
しかしstodの「文字列が数値で始まる場合、数値化不可能な文字があっても例外は投げずに数値化出来るところまでの部分で数値化する」ってむしろ不便だよな。
143デフォルトの名無しさん (ワッチョイ eefb-dBHf)
2023/06/04(日) 18:43:24.19ID:XolxJINE0
charに変換して文字コード比較して範囲内外で変換分ける処理がシンプルじゃね
144デフォルトの名無しさん (ワッチョイ eefb-dBHf)
2023/06/04(日) 18:44:47.92ID:XolxJINE0
速度気になるなら二分探索の処理に追加してやればいいし
145デフォルトの名無しさん (ワッチョイ eefb-dBHf)
2023/06/04(日) 18:45:10.55ID:XolxJINE0
再帰処理でやってもいいかな
146デフォルトの名無しさん (ワッチョイ eefb-dBHf)
2023/06/04(日) 18:45:59.18ID:XolxJINE0
順序保証したいならリンクリストもありか
147デフォルトの名無しさん (ワッチョイ eefb-dBHf)
2023/06/04(日) 18:46:48.29ID:XolxJINE0
ちんこ痒い
148デフォルトの名無しさん (ワッチョイ a101-tVFH)
2023/06/04(日) 18:58:47.70ID:ym4W3arT0
リンクトリストな
149デフォルトの名無しさん (ワッチョイ eefb-dBHf)
2023/06/04(日) 19:08:45.19ID:XolxJINE0
内挿探索でも良さそう
150デフォルトの名無しさん (ワッチョイ a236-OEcF)
2023/06/04(日) 20:01:40.57ID:0KyMklrL0
STLへの多重配列クラス追加まだ?
151はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c23e-N/Lw)
2023/06/04(日) 22:37:10.94ID:MHoxWKtY0
>>142
トークナイズするときに便利。
文字列が数値表現だけになっている状態を扱うことってそんなになくない?
なんらかの文字列から取り出す操作になることは多いし、
それを前提として考えたら自然な設計だと思う。
152デフォルトの名無しさん (ワッチョイ 0128-w4Nq)
2023/06/04(日) 22:54:17.16ID:5jvZ+YKl0
>>151
>なんらかの文字列から取り出す操作になることは多いし、
まさにそれやが
std::stod()ではどこまで読んだのかわからないから取り出せない……
153はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c23e-N/Lw)
2023/06/04(日) 23:07:59.65ID:MHoxWKtY0
>>152
わかるが。
154デフォルトの名無しさん (ワッチョイ 8d7c-vcK2)
2023/06/04(日) 23:16:49.21ID:bxWaSYac0
仕様も確認できない奴が仕様に文句付けるとかお笑いだわ
155デフォルトの名無しさん (ワッチョイ b901-1DxI)
2023/06/04(日) 23:21:12.95ID:QWRuQk/m0
勉強になるなぁ
boost::lexical_cast
ばっか使ってきた
156デフォルトの名無しさん (ワッチョイ 0128-w4Nq)
2023/06/05(月) 01:56:30.15ID:yTJt/rkc0
>>154
仕様を確認して文句つけているのだから無問題
157デフォルトの名無しさん (ワッチョイ 0128-w4Nq)
2023/06/05(月) 02:01:37.37ID:yTJt/rkc0
つか自分のスキルに合わせて仕様を変えてしまう香具師よりはマシ
158デフォルトの名無しさん (ワッチョイ 0128-w4Nq)
2023/06/05(月) 02:39:23.25ID:yTJt/rkc0
つか初心者スレで今教えてもらったわサーセン;;;
std::stod()の第2引数でどこまで読んだのかわかるのかそうか、、、
159デフォルトの名無しさん (アウアウウー Sac5-Rr/m)
2023/06/05(月) 09:40:21.73ID:ejs/048Ga
1e-3
0.4E+5

どうせ . とか + とか - とか e とか E が数字の後ろに来たらエラーにする糞オレオレ関数の出来上がり
160デフォルトの名無しさん (アウアウウー Sac5-+LPJ)
2023/06/05(月) 18:46:42.35ID:QlKvcf+ua
fortran爺が1e-3を1-3と書いて送ってくるの辛い
161デフォルトの名無しさん (ワッチョイ 0128-w4Nq)
2023/06/05(月) 22:24:29.81ID:yTJt/rkc0
charやwchar_tのうちは文字数くれたら別段間違うことは無いはず……
162デフォルトの名無しさん (ワッチョイ 916e-UlWg)
2023/06/06(火) 05:24:35.89ID:sRXlIYgz0
0xe5a3ec05p-10
163デフォルトの名無しさん (ラクッペペ MMe6-aBKW)
2023/06/07(水) 18:16:46.44ID:yJ6NJbScM
regex 使って、全角半角タブはreplace
しつつも、正規表現で、数字だけ残して
ってしたらいいのでは
164デフォルトの名無しさん (ワッチョイ 7d02-lxw5)
2023/06/07(水) 19:51:43.45ID:Y1IkEaDo0
ファイル名で並び替えるとき数字を文字列じゃなく数として判断して並び替えるの便利だよね。StrCmpLogicalWみたいなの
165デフォルトの名無しさん (ワッチョイ eefb-dBHf)
2023/06/07(水) 20:17:49.58ID:Wtu+kJ5G0
digitntegerみたいな関数なかったっけ
javaと混同してるかもしれん
166デフォルトの名無しさん (ワッチョイ eed6-hc5i)
2023/06/07(水) 20:48:56.87ID:DVJV7mYE0
大文字小文字とか小数とか半角全角とか漢数字とかあるから闇が深い
167デフォルトの名無しさん (ワッチョイ e54e-sceX)
2023/06/07(水) 21:25:16.49ID:nzVrXgF60
アンダーバーの位置関係も結構罠だよね
文字コード的には 大文字<アンダーバー<小文字 だから
168デフォルトの名無しさん (オイコラミネオ MMe9-sceX)
2023/06/07(水) 23:13:43.57ID:ZHL7BfYmM
言語+コンパイラの仕様が拡張してるのにライブラリは貧弱なまま
自己流に実装してしょうもないバグが紛れ込む

関係ないけどstd::stodはC言語版と微妙に仕様が違うのだろうけどそんなの調べてない
169デフォルトの名無しさん (ワッチョイ 469a-D/IE)
2023/06/08(木) 00:14:20.61ID:mm4FKY9+0
例えばstodが解釈できる数値表現を正規表現でも解釈したいと思ったらどうしたら
170デフォルトの名無しさん (アウアウウー Sac5-tVFH)
2023/06/08(木) 11:09:51.53ID:rxjbLVG0a
仕様の不備は運用でカバー
171デフォルトの名無しさん (ワッチョイ b901-1DxI)
2023/06/09(金) 00:34:29.94ID:Y9bb1A2p0
std::sort (std::execution::par, v.begin(), v.end());
上記で並列ソートできるとのことですが何並列なんでしょうか?
もし環境に合わせて良きに計らってくれるのなら
その良き並列数を取得する関数などありますか?
172はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e53e-N/Lw)
2023/06/09(金) 01:32:53.73ID:vjFKJkM00
>>171
詳細は言語仕様では規定されていない。
リソースが不足していれば並列化されないこともあり得る。
並列化は大抵の場合に OS のサポートが必要だし
どういうサポートがあるかわからんので言語として明瞭な規定を決められない。

並列化される保証はないのにデータ競合が発生しないように実装するのは
プログラマの責任なので若干の理不尽さを感じなくもないが
C++ ってのはそういうもんなので……。
173デフォルトの名無しさん (ワッチョイ 6293-1rII)
2023/06/09(金) 07:16:14.12ID:bBOCrSG+0
週末のレイトレーシングで1-17あたりをマルチスレッドにしてみたんだけど、ubuntu上でg++やインテルコンパイラだとスレッド数を増やすと逆におそくなるんです。windows上でvisualstudioでコンパイルすると、望み通りスレッド数を増やすほど速くなりました。何でなんでしょう?
174デフォルトの名無しさん (ワッチョイ eef2-2RXP)
2023/06/09(金) 08:07:59.94ID:e2G6/2re0
>>173
>週末のレイトレーシングで1-17
全く意味がわからないんだが?
>何でなんでしょう?
お前のコーティングのせいじゃないか?
175デフォルトの名無しさん (ワッチョイ 916e-aXLw)
2023/06/09(金) 08:18:32.57ID:m5f79nsG0
gccはね・・・どうも平行/並列処理には本気じゃないところがある
たとえばstd::execution::parなんか真面目にやらんかこらって言いたくなる
176デフォルトの名無しさん (ワッチョイ 916e-aXLw)
2023/06/09(金) 08:19:05.88ID:m5f79nsG0
無料なので強く出られないけどね
177デフォルトの名無しさん (ワッチョイ b901-1DxI)
2023/06/09(金) 11:49:37.37ID:Y9bb1A2p0
皆さんレスを有り難うござます
うちは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.
178デフォルトの名無しさん (ワッチョイ b901-mwg1)
2023/06/09(金) 22:45:32.96ID:uysUozYZ0
なるほどなあ
179デフォルトの名無しさん (ワッチョイ 13ad-2rqm)
2023/06/10(土) 02:07:59.33ID:oiDhCbH60
EASTLが久しぶりにバージョンアップしたね
180デフォルトの名無しさん (ワッチョイ c901-7YjN)
2023/06/10(土) 07:02:46.03ID:kaZ6v5kb0
ほう!いいね
181デフォルトの名無しさん (ワッチョイ b16b-q0yD)
2023/06/14(水) 07:54:14.73ID:/jeWb7sY0
time コマンドで調べたメモリの使用量 (max resident set size) が理論値よりも多くて、原因を特定するためにコード内の各箇所でその時点でのメモリ使用量を出力できたら良いなと思います。
実行環境は Linux なのですが、どのようにするべきでしょうか?
182デフォルトの名無しさん (ワッチョイ b16b-q0yD)
2023/06/14(水) 08:43:22.06ID:/jeWb7sY0
あとメモリに関連した質問で、例えばめちゃデカい std::vector を要素数 1 に resize しても capacity はめちゃデカいままですよね?
STL コンテナ以外にも、大きいメモリが割り当てられてるオブジェクトを使用後に破棄したいというケースがよくあります。
最も簡単なやり方は関数とか局所的なスコープとして切り出すことかと思いますが、他に、オブジェクトに割り当てられているメモリを手動で解放する方法があったら教えてください。
183デフォルトの名無しさん (スプッッ Sd33-5Oyn)
2023/06/14(水) 08:49:33.85ID:Xd2fVcpxd
/proc/self/stat というファイルを覗きに行くか、
getrusage というシステムコールで取得することになるかな
184はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c13e-2rqm)
2023/06/14(水) 09:19:31.16ID:O3itrano0
>>182
そのために shrink_to_fit がある。
詳細は実装依存なので何もしない関数であっても仕様に反しないけど
常識的には各実行環境で効率的に動くように実装されるので
まずは試してみても損はないと思う。

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

本当にどうしても標準ライブラリの挙動の詳細が不満なら
自分で同等のものを実装する (または望ましいものをどこかから見つける) しかないよ。
185デフォルトの名無しさん (アウアウウー Sadd-g1CP)
2023/06/14(水) 10:15:22.04ID:iWYHYN4ra
>>182
new で造って delete (または delete []) で解放
186デフォルトの名無しさん (ワッチョイ 8bfb-Xx8j)
2023/06/14(水) 12:28:17.37ID:XWt8afSz0
更にいうと、deleteはgccでは推奨されないのでptrを使うよりはstaticもしくはvirtualを使いましょうね。
187デフォルトの名無しさん (テテンテンテン MMeb-jufV)
2023/06/14(水) 12:29:45.65ID:XEzvAdInM
>>182
>>185とほとんど同じだけどunique ptrで管理。
ヒープの確保時間が問題になるならアロケーター使ってヒープを予約する。
188デフォルトの名無しさん (ワッチョイ d9f0-EP1b)
2023/06/14(水) 13:12:37.90ID:9CAXVpD30
>>182
vector<空にしたいオブジェの要素の型>().swap(空にしたいオブジェ)
189デフォルトの名無しさん (アウアウウー Sadd-g1CP)
2023/06/14(水) 13:33:02.07ID:iWYHYN4ra
>>188
vector<空にしたいオブジェの要素の型> hoge;
が既にあったとしたら
vector<空にしたいオブジェの要素の型>(hoge).swap(hoge);
で良いらしいけど副作用の心配無い?
190デフォルトの名無しさん (ワッチョイ 219b-q0yD)
2023/06/14(水) 14:03:16.39ID:0kIiqVrM0
>>183
ありがとうございます
> getrusage
を試してみようと思います

>>185-187
STL コンテナを使うとしても自作クラスを使うとしても、オブジェクトを unique_ptr で持つことにして要らなくなったら reset() すれば確保していた分のメモリを捨てられるということでしょうか
依存関係が絡み合っていて簡単に小さいスコープに分割できないときは試してみようと思います
191デフォルトの名無しさん (アウアウウー Sadd-g1CP)
2023/06/14(水) 14:16:54.18ID:iWYHYN4ra
reset()は違うと思う
192デフォルトの名無しさん (ワッチョイ 01da-EP1b)
2023/06/14(水) 14:26:34.51ID:HNZbb8Sq0
>>189
その場合はメモリアクセス領域が変わるのでswapする前に取得済みだったイテレータは再取得する必要あり
193デフォルトの名無しさん (ワッチョイ e95f-2rqm)
2023/06/14(水) 15:52:59.34ID:K9MvWtl90
>186 が何を言ってるのか意味不明でこわい。
194デフォルトの名無しさん (ワッチョイ e95f-2rqm)
2023/06/14(水) 15:54:13.97ID:K9MvWtl90
>>191
「reset() すれば確保していた分のメモリを捨てられる」で間違いないでしょ。
195デフォルトの名無しさん (テテンテンテン MMeb-jufV)
2023/06/14(水) 18:26:24.05ID:9LyNOs9uM
>>190
resetする必要は無いよ。

コンテナから普通に要素を削除すれば、後はコンテナクラスがよろしくやってくれる。効率は実装次第だけど。
196デフォルトの名無しさん (ワッチョイ 219b-q0yD)
2023/06/14(水) 18:51:34.14ID:0kIiqVrM0
>>195
コンテナクラスがよろしくやってくれるのに任せるのであれば、スマートポインタで持たずに単にコンテナとして持つのと変わらないように思うのですが、違うのでしょうか。
ちゃんと理解していなかったら申し訳ありません。
197デフォルトの名無しさん (ワッチョイ d17c-sLM4)
2023/06/14(水) 18:58:01.98ID:vjajEcDc0
vectorを信頼するなら単にclear()してshrink_to_fit()すればいい
信用できないならスマポで持っといていらなくなったら手動でブチ消せばいい
それすら信用できないならイチから自分で作れ
お前がどれだけ心配消化による
198デフォルトの名無しさん (テテンテンテン MMeb-jufV)
2023/06/14(水) 19:18:20.42ID:YeSwNDrrM
>>196
どのコンテナを使うかによる。

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

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

いずれにしても、そこまで気にするならまずベンチマークを取って実態を調査すべきだし、そもそも巨大なメモリを頻繁に確保・解放するのは設計に問題があることが多いから、メモリを解放しないで済む方法を検討してみる。
199デフォルトの名無しさん (ワッチョイ 219b-q0yD)
2023/06/15(木) 03:20:48.20ID:J1cG0ikp0
>>198
そもそもvectorのスマートポインタ (あるいはより一般的にサイズが動的なクラスのスマートポインタ) を作り、そのvectorやクラスのサイズを変えたときって確保されてる領域のサイズも変わるんでしたっけ?
手動で変えなきゃいけないと思っていました
(また、vectorのポインタとvectorの先頭要素のポインタは意味が違うのでよりわけが分からなくなりました)
200デフォルトの名無しさん (ワッチョイ d17c-sLM4)
2023/06/15(木) 06:50:20.05ID:usfnoco+0
std::vectorはshrink_to_fit()呼ばない限り勝手にcapacity縮めたりしないはずだけど
201デフォルトの名無しさん (ワッチョイ d19c-jufV)
2023/06/15(木) 08:48:34.83ID:hMmgKiSo0
>>199
コンテナ内のポインタの予約は避けられないよ。

ただ、ポインタのサイズを気にするようなシビアな状況なら、そもそもc++じゃなくてcで実装することを検討すべき。
202デフォルトの名無しさん (ワッチョイ b96e-ofsu)
2023/06/15(木) 09:00:49.34ID:K4jCDX8M0
シビアな状況でC++が使えないやつがCならOKなはずはない
203デフォルトの名無しさん (アウアウウー Sadd-g1CP)
2023/06/15(木) 10:11:47.24ID:dLjlwX4ma
>>199
何が判ってないのかが判ってないパターンだな
まともな解答もらってても何が正しいのか(なぜ正しいのか)
すら判断出来なさそうなレベル
解答者に失礼
204デフォルトの名無しさん (ワイーワ2 FF63-pDI4)
2023/06/15(木) 10:56:55.78ID:kyFBXozFF
他所スレで同じ様な流れが

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

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

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


>>203-204

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


>>183-185,194,197,200様
ご丁寧な回答をくださりどうもありがとうございました。
勉強になります。
206デフォルトの名無しさん (テテンテンテン MMeb-jufV)
2023/06/15(木) 12:29:34.24ID:QcI//Xn+M
>>205
コンテナのsmart ptrの扱いは調べた?
コンテナの要素とポインタの参照先の違いについて根本的な誤解がありそう。

vectorはまだ構築していないインスタンス用のメモリ領域を予約するけど、smart ptrはそんなことしないよ。
vector<smart ptr>もsmart ptr の予約はするけど、smart ptrの参照先インスタンスの予約はしない。
207デフォルトの名無しさん (ワッチョイ 219b-q0yD)
2023/06/15(木) 13:15:56.80ID:J1cG0ikp0
>>206
だから、結局任意のコンテナ、クラスに対してスコープ内でメモリを解放する方法は?
new で生ポを持って delete するか、スマポを持って reset するかだろ?


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


> vector<smart ptr>も……
論外。
誰もスマポのvectorの話なんてしてねえ。
208デフォルトの名無しさん (ワッチョイ 8bfb-Xx8j)
2023/06/15(木) 14:56:16.78ID:M9bt3STi0
186でも言ってるがstaticもしくはvirtualでデストラクタ使えよ
それがシンプルで高速で1行も無駄のない設計な
209デフォルトの名無しさん (ワッチョイ 01c9-6bUV)
2023/06/15(木) 15:01:28.21ID:B8g22vaD0
182の
>最も簡単なやり方は関数とか局所的なスコープとして切り出すことかと思いますが
がコンストラクタで確保してデストラクタで消す話というのはわかってる上で

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

そんなものは無いっていう答えもあるにはあるけどサ
210デフォルトの名無しさん (ワッチョイ 13f0-8sUu)
2023/06/15(木) 18:41:07.51ID:QIwD56Ju0
最近IPP触り始めたんですが全部飽和演算で面食らってます
Modulo関数は無いんですか?
211デフォルトの名無しさん (ワッチョイ fb8c-jufV)
2023/06/15(木) 21:00:11.51ID:W1C5TI4i0
>>207
ああ、ごめん。めっちゃデカイインスタンスのvectorじゃなくて、めっちゃデカイvectorね。
それなら実装依存だけど>184か、>192とか参照無効化の制限とかコピーコストとかあるけど>189。189はsmart ptrにしとけば実用上問題ないかね。vectorのイテレーターは保存するものじゃないし。
212デフォルトの名無しさん (ワッチョイ c14e-8sUu)
2023/06/15(木) 21:28:08.23ID:3cvhbwG+0
実際の所、vectorならclear()→shrink_to_fit()でメモリが開放されないこってありうるの?
213デフォルトの名無しさん (ワッチョイ d17c-sLM4)
2023/06/15(木) 22:10:40.95ID:usfnoco+0
規格上はshrink_to_fit()にメモリ解放する義務はないし、実装定義で何やっても自由(capacityを増やすような真似だけは禁止)
shrink_to_fit()がなんにもしない実装でも一応規格準拠になる
そんな糞みたいな実装が実在するかは知らない
214デフォルトの名無しさん (US 0H0b-q0yD)
2023/06/16(金) 02:13:28.00ID:PZdB0bgSH
>>211
はい結局一人だけ違う話してた
ハァァ~~~~~(クソデカため息)
215はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c13e-2rqm)
2023/06/16(金) 11:31:25.61ID:QEmhRLek0
>>212
基本的には効率的に実装されるものだと信じて良いと思うが
どういう実装が効率的であるかは実行環境の事情による。

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

常に何もしないというような実装はあまりないと思うけど
解放するほうが非効率だと考えられる状況では
shrink_to_fit を呼んでも解放しなかったり部分的にだけ解放する
ということはそれなりにあり得そうだと思うよ。
216デフォルトの名無しさん (ワッチョイ 01c9-6bUV)
2023/06/16(金) 12:08:14.46ID:nWXjt7Za0
capacityと OS側からみた空きメモリはまた別かもしれんわけで
アロケーターがOSからじかに要求してる場合もあれば
OSへの要求回数を減らして内部でプールしてやりくりしてるのもあるし
制御したいレイヤーによっては全部自前でやるしかない という落ちにも
217デフォルトの名無しさん (ワッチョイ c14e-8sUu)
2023/06/16(金) 12:26:43.83ID:B2wRJ7jC0
>>215
まぁ、細かい単位のメモリだったら、実際に開放されているかどうかなんて、ほとんど動作に影響しないとも言えるしね
(未初期化変数の不具合が発覚しづらい、くらいか)
とりあえずshrink_to_fitを呼んでおいて、細かいことは気にしないのが一番かもしれないw
218デフォルトの名無しさん (ワッチョイ 934f-q0yD)
2023/06/16(金) 12:46:08.57ID:H6XPX5qB0
「STLコンテナ以外にも」という文言が読めてない文盲さんたちがvectorの話ばっかしててワロ
219デフォルトの名無しさん (ワッチョイ d969-2rqm)
2023/06/16(金) 15:41:25.79ID:KX+TErXo0
「STLコンテナ以外にも」はSTLコンテナも含むということ
STLコンテナの話をしても何もおかしくない
220デフォルトの名無しさん (アウアウウー Sadd-g1CP)
2023/06/16(金) 15:43:23.81ID:ly+Q1cW8a
いつものことだが
ほんの最初の数レスで終わってるのに
どうでも良い脱線ほど盛り上がってgdgdレスでスレが延びる
221デフォルトの名無しさん (アウアウウー Sadd-Xx8j)
2023/06/16(金) 15:46:42.75ID:/DJegtL/a
ほんそれ
回答終了してんのにちんこかゆい
222デフォルトの名無しさん (スフッ Sd33-pDI4)
2023/06/16(金) 15:49:19.69ID:YNpYq5+wd
>>182 良く読むと
>STL コンテナ以外にも、大きいメモリが割り当てられてるオブジェクトを使用後に破棄したいというケースがよくあります。
>最も簡単なやり方は関数とか局所的なスコープとして切り出すことかと思いますが

いやいやそもそも「関数とか局所的なスコープ(つまりautoだろ?stackだろ?)で大きいメモリ確保しようなんて思うな」って話なんだよな
223デフォルトの名無しさん (ワッチョイ e95f-2rqm)
2023/06/16(金) 16:09:01.10ID:qgM8i0iT0
ローカルなvectorを置けばヒープ確保されるので「つまりautoだろ?stackだろ?」は
また何か誤解してる人が来たなとしか。
224デフォルトの名無しさん (ワッチョイ 219b-q0yD)
2023/06/16(金) 16:49:22.15ID:ybGonaVE0
reset要らないとか言ってる奴らは結局何なん
225デフォルトの名無しさん (テテンテンテン MMeb-jufV)
2023/06/16(金) 19:32:47.80ID:yx9ngvFiM
>>224
結論は>211にまとめといた。
resetは要らん。
226デフォルトの名無しさん (ワッチョイ 92dc-gfWY)
2023/06/17(土) 08:56:51.34ID:3MnK6eEg0
>>223
「STLコンテナ以外にも」という文言が読めてない文盲さんたちがvectorの話ばっかしててωωω
227デフォルトの名無しさん (テテンテンテン MM96-Axrn)
2023/06/17(土) 10:36:04.78ID:koF9X0k9M
>>226
「大きいメモリが割り当てられてるオブジェクトを使用後に破棄したい」なら
>185か>187。
>187はunique ptrの置き場所と解放タイミングによって解放の仕方が違って、自動変数にして関数やスコープから抜けるタイミングで解放するなら手動操作不要、vectorなどのヒープに置くとかスコープの終わり前に解放したいとかならreset()とかvectorの要素削除とかで手動解放。

いずれにしても、自動変数に巨大インスタンスを考え無しに置くのは悪手で、そのオブジェクトがスタックに巨大データを置かない(ヒープ等に置く)ことを確認してからにしたほうがいい。
228デフォルトの名無しさん (ワッチョイ 6128-l8k0)
2023/06/17(土) 15:30:36.02ID:S+64vkUJ0
>>216
vectorのcapacityはそのvectorが氏ぬかcapacity縮小アクションが生じない限りvector固有に占有されるから
capacity(のうちsize()を超える分)と OS側からみた空きメモリはまた別でケテーイ……
一方malloc()がOSからゲットしたメモリをOSに返さずにいるのはOS側からみた空きメモリではないにしろ
同一プロセス内の他のオブジェクトの構築に使えるのだから空きメモリのうち
これすらもOSに返したいということならこの流れの中で現状答えがでていないキモヌ
229デフォルトの名無しさん (ワッチョイ 6128-l8k0)
2023/06/17(土) 15:31:34.82ID:S+64vkUJ0
まあしいて言えばプロセスを一旦exitして再立ち上げ?
230デフォルトの名無しさん (ワッチョイ 6128-l8k0)
2023/06/17(土) 15:45:09.56ID:S+64vkUJ0
普通に作ったら(コードで明示的に直接OSのAPIでメモリを分捕って解放とかしない限りは
プロセスのprivate bytesはプロセスが氏ぬまで増えることはあっても減ることは無いという印象、
231デフォルトの名無しさん (ワッチョイ 7d9b-trtU)
2023/06/17(土) 16:27:35.20ID:5e+acAEX0
>>225
スマンまじで理解できないのだけど、なぜvectorに限った話をしてるの?
232デフォルトの名無しさん (テテンテンテン MM96-Axrn)
2023/06/17(土) 19:22:00.09ID:mYwWSuEFM
>>231
巨大インスタンスは>227
233デフォルトの名無しさん (ワッチョイ d9ab-trtU)
2023/06/17(土) 19:29:36.10ID:HtrmHz3i0
回答者のレベル低いな~~~
こんだけダラダラ続けて、結局質問者>>182>>190で早々に結論づけてることをリピートしてるだけw
234デフォルトの名無しさん (ワッチョイ 69f0-J7ro)
2023/06/17(土) 19:54:50.95ID:9hSxsWrs0
アロケータ気に入らないなら自作くらいしろよポンコツ
なにもかもSTLに頼りやがってそれでPGやってるつもりになるなよ
235デフォルトの名無しさん (ワッチョイ 6128-l8k0)
2023/06/17(土) 20:19:47.36ID:S+64vkUJ0
人類には早すぎた話題また……
236デフォルトの名無しさん (オイコラミネオ MM91-L1I+)
2023/06/17(土) 23:14:07.63ID:H9lc23A5M
次世代の人は便利に使いこなしてるかより簡素になった仕組みを使うのだろう
237デフォルトの名無しさん (ワッチョイ 655f-rdTE)
2023/06/18(日) 03:00:55.26ID:GIMFAM+a0
>>231
コンテナの種類を問わない一般的な方法なんてものはないからじゃないですかね
238デフォルトの名無しさん (ワッチョイ 8101-1tDD)
2023/06/18(日) 21:04:45.70ID:VwYqKwPk0
以下のコードで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;
}
239デフォルトの名無しさん (ワッチョイ 515f-C6j3)
2023/06/18(日) 21:45:44.90ID:UCXMUPHB0
>>238 エラーメッセージ見ればたぶん分かる。
240デフォルトの名無しさん (ワッチョイ 8101-1tDD)
2023/06/18(日) 21:48:16.43ID:VwYqKwPk0
>>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;
241デフォルトの名無しさん (ワッチョイ 9e81-L1I+)
2023/06/18(日) 23:15:51.41ID:w3/xAOT+0
ADLでoperator+が見つからないからかな?
struct Vector : std::array <double, 3> {};
みたいに定義したらいけるのでは
242デフォルトの名無しさん (ワッチョイ 8101-1tDD)
2023/06/18(日) 23:20:13.62ID:VwYqKwPk0
>>241
>struct Vector : std::array <double, 3> {};
>みたいに定義したらいけるのでは
通りますね
どういうこと?
243デフォルトの名無しさん (ワッチョイ 32fb-9xvA)
2023/06/18(日) 23:24:52.33ID:bX3uBTIT0
std::accumulateが14行目で定義したoperator+を見つけれてないのが原因っぽい。

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

14行目のoperator+をstd名前空間に入れてやれば動くにゃ動くけど色々マズいので(調査する分にはいいけど)最終的な解答にはならないかな
244デフォルトの名無しさん (ワッチョイ 32fb-9xvA)
2023/06/18(日) 23:29:04.68ID:bX3uBTIT0
>>242
たぶんC++コンパイラはoperator+の候補を検索するときに
Vector( = std::array<double, 3>)と同じ名前空間にあるものしか検索しない

Vectorのクラス定義そのものがグローバル名前空間にあるなら14行目のoperator+を見つけられるけど、
今はVectorの正体はstd::array<...>なのでstd名前空間しか検索しないんだと思う
245デフォルトの名無しさん (ワッチョイ 8101-1tDD)
2023/06/18(日) 23:39:19.50ID:VwYqKwPk0
>>243,244
なるほど解説頂きまして有難うございます
グローバルスコープはどっからでも見えて良さそうなものの
何でグローバルスコープの関数を探さないですかね?
246デフォルトの名無しさん (ワッチョイ a901-UvLK)
2023/06/18(日) 23:48:03.44ID:EGGkT3O00
独自のメンバ変数を持たないのなら継承してしまうのも手ではある(ただしコンストラクタやarrayを受け取るキャスト用コンストラクタとか書く必要が出ると思うけど)
ただ、そもそもカスタマイズしたり自分の用途に本当に使いやすいものを作りたいなら、ちゃんと自分で全部書いた方がいいと思うよ
247デフォルトの名無しさん (ワッチョイ b110-lSMs)
2023/06/19(月) 00:42:02.49ID:2lgIrH6A0
>>245
std::accumlateの定義内からだと、その下の方(ユーザーコード)で定義されてるoperator+は見えてないので、グローバル名前空間の探索では見つからない
248デフォルトの名無しさん (ワッチョイ 8101-1tDD)
2023/06/19(月) 00:52:39.28ID:Q4g6N6uX0
>>247
std::accumlateが定義されているnumericをincludeする前に
以下のようにグローバルスコープにプロトタイプを置いても
同じようにoperator+が見えてないとエラーが出ます
using Vector = std::array <double, 3>;
Vector operator + (const Vector &lhs, const Vector &rhs);
#include <numeric>
249デフォルトの名無しさん (ワッチョイ a901-UvLK)
2023/06/19(月) 03:40:46.00ID:RYn53SnN0
accumlateは関数テンプレートだから実体化される時点でoperator+が見えてりゃOKのはず
言われてる通りADLで対象外なのが問題
250デフォルトの名無しさん (ワッチョイ 256b-trtU)
2023/06/19(月) 05:38:23.58ID:JAsvvATP0
>>237
(スマート)ポインタで持って要らなくなったら明示的にリリースする方法はあらゆるコンテナに対して使えるよね?笑
251デフォルトの名無しさん (ワッチョイ f59c-Axrn)
2023/06/19(月) 08:48:03.43ID:KLBRX38t0
>>250
>>223
252デフォルトの名無しさん (ワッチョイ 8101-1tDD)
2023/06/19(月) 09:20:16.57ID:Q4g6N6uX0
>>249
有難うございます
グローバルスコープに定義した関数が見えないのは
どうしてなんでしょうかね?
それでは全然グローバルじゃないような気がするのですが
規格を決めるときに何か意図があったのでしょうかね?
253デフォルトの名無しさん (ワッチョイ a901-UvLK)
2023/06/19(月) 10:39:37.41ID:RYn53SnN0
そもそもが名前空間内(よその演算子と混ざらないように)にある演算子オーバーロードを、外部からでも引数が合えば使えるように(std::operator+(a, b)とか書かないでいいように)するためのルールらしいから
外部の演算子見に行くのは目的に合わんのじゃね

std名前空間内のarrayに外部から勝手に動作を追加しようとしてるんだから、あまりよろしくないやり方しようとしてると考えた方がいい
(だから>>246のように書いた、継承したら一応arrayではなくちゃんとVectorクラスに対する演算子だから通る)
254デフォルトの名無しさん (ワッチョイ 8101-1tDD)
2023/06/19(月) 11:53:54.08ID:Q4g6N6uX0
>>253
>std名前空間内のarrayに外部から勝手に動作を追加しようとしてるんだから、
>あまりよろしくないやり方しようとしてると考えた方がいい
なるほど
たぶんこういう考え方なんでしょうね
255デフォルトの名無しさん (ワッチョイ 5efb-+wmN)
2023/06/19(月) 12:20:34.90ID:4PINPeBN0
つまりvector<int>を使いなさいということ
256デフォルトの名無しさん (ワッチョイ 7d9b-trtU)
2023/06/19(月) 12:21:25.69ID:wGtx/iKL0
>>251
安価ミス
257デフォルトの名無しさん (アウアウウー Sacd-9XmN)
2023/06/20(火) 00:04:57.81ID:YSi65ASja
実引数依存の名前探索、Argument-Dependent Lookup (ADL)は、
Koenig lookup とも言う

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

ADLを知っているなら、かなりのプロと言える
258デフォルトの名無しさん (ワッチョイ 8101-1tDD)
2023/06/20(火) 00:18:46.72ID:vGfe0Eju0
勉強になります
259デフォルトの名無しさん (アウアウウー Sacd-9XmN)
2023/06/20(火) 02:12:24.83ID:1vctBLGTa
演算子のオーバーロードなら、フレンド関数とか?

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

https://programming-place.net/ppp/contents/cpp/language/035.html
260はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3)
2023/06/20(火) 10:05:39.77ID:IIzrqfbq0
状況を簡略化するとこう。

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 の (というかそれに限らず既存のライブラリの) 宣言の順序をどうこうするわけにもいかないので無理にカスタムしようとするのは筋が悪いということになる。
261デフォルトの名無しさん (ワッチョイ 8101-1tDD)
2023/06/20(火) 10:53:08.18ID:vGfe0Eju0
>>260
>だから順序を変えれば通る。
最近手元のg++を更新しまして10.2.1 -> 12.2.0になったんですが
前者のケースが通らなくなりまして疑問に思っていたところでした
10.2.1は寛容で両方とも通るけどC++的には後者のみ通るのが正しい?
262はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3)
2023/06/20(火) 11:41:30.21ID:IIzrqfbq0
>>261
前者はたぶん未定義かつ診断不要な状況なのでエラーを検出せずに通すのも正しい挙動で
プログラマがそういう状況を作ってしまうのが仕様に反する (というか結果が保証されない) という解釈になると思う。
263デフォルトの名無しさん (ワッチョイ 8101-1tDD)
2023/06/20(火) 13:36:04.44ID:vGfe0Eju0
なるほどー
有難うございます
264デフォルトの名無しさん (JP 0H91-FhUT)
2023/06/20(火) 21:39:35.82ID:Pk8V/jejH
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をコンパイル時に呼び分けたいんですけど
どのように記述すればよいか教えていただけませんか?
265デフォルトの名無しさん (ワッチョイ 515f-9XmN)
2023/06/20(火) 22:18:37.18ID:Cuq1USIJ0
is_invocableでおk
266はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3)
2023/06/20(火) 22:21:49.81ID:IIzrqfbq0
>>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);
}
267デフォルトの名無しさん (ワッチョイ 8101-1tDD)
2023/06/20(火) 22:27:55.14ID:vGfe0Eju0
>>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);}
268デフォルトの名無しさん (ワッチョイ 8101-1tDD)
2023/06/20(火) 22:29:12.98ID:vGfe0Eju0
templateが意味ないね
269デフォルトの名無しさん (ワッチョイ 127f-L1I+)
2023/06/20(火) 22:39:00.27ID:ui/rWsWf0
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);
}
}
270デフォルトの名無しさん (ワッチョイ 8101-1tDD)
2023/06/20(火) 22:41:37.75ID:vGfe0Eju0
>>269
これって関係ないif節はコンパイル時に消えるの?
271はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3)
2023/06/20(火) 22:43:20.79ID:IIzrqfbq0
>>270
消えるよ。
272デフォルトの名無しさん (JP 0H91-FhUT)
2023/06/20(火) 22:44:14.18ID:Pk8V/jejH
>>269
ありがとうございます。
gcc 13.1.0 でc++17でうまくいきました。

後出しで申し訳ありませんが、C++14でかけませんか?
273デフォルトの名無しさん (ワッチョイ 8101-1tDD)
2023/06/20(火) 22:47:27.45ID:vGfe0Eju0
>>269,271
これは知らんかった
勉強になるなぁ
274デフォルトの名無しさん (JP 0H91-FhUT)
2023/06/20(火) 22:48:18.64ID:Pk8V/jejH
>>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);
}

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

is_invocable に相当するものは自分で書こうと思えば書けるが
if constexpr は言語のコアの機能だからどうにもならんし……。
276デフォルトの名無しさん (JP 0H91-FhUT)
2023/06/20(火) 23:14:31.48ID:Pk8V/jejH
>>275
情報ありがとうございます

ご掲示いただいたコードで勉強になりました。
277デフォルトの名無しさん (ワッチョイ 69f0-J7ro)
2023/06/20(火) 23:42:05.71ID:zCL4VLm70
>>273
ザッツcostexprマジック
278デフォルトの名無しさん (ワッチョイ 69f0-J7ro)
2023/06/20(火) 23:43:57.61ID:zCL4VLm70
n抜けてたwコストがかかる演算なのは確かだけどw
constexprマジック!マジック!
279デフォルトの名無しさん (ワッチョイ 32fb-dYQK)
2023/06/21(水) 00:07:10.76ID:2lh42auf0
C++11のSFIANE地獄へようこそ
https://wandbox.org/permlink/2sfUVeEBrErqvI2R

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

ただ見ての通り相当面倒なことを書かなきゃならない。
280デフォルトの名無しさん (ワッチョイ 8101-1tDD)
2023/06/21(水) 00:28:02.40ID:CWKUsltc0
>>279
>>266と本質的に何が違うのか分からない
解説よろしく
(templateでやってることは無駄なのでは?)
281はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3)
2023/06/21(水) 00:41:42.51ID:3HBFHOpK0
>>280
いや、 >>279 のほうがちょっと柔軟で使いやすい。
たとえば

void f3(long int, long int) {}

みたいなのを渡したとき >>266 ではエラーになる。
引数として int を渡せる (int から暗黙に変換可能な仮引数を持っている) というのと
厳密に int そのものでなければならないというのとでは制約の厳しさが違う。
282デフォルトの名無しさん (ワッチョイ 515f-9XmN)
2023/06/21(水) 00:42:09.27ID:LxMKpynY0
templateでやるのは質問者の与えた要件だな
宿題なんじゃね、しらんけど
283デフォルトの名無しさん (ワッチョイ 32fb-9xvA)
2023/06/21(水) 00:52:13.25ID:2lh42auf0
C++14にはif constexprが存在しないから
template使ったオーバーロードしか手段がない

質問者がC++14環境でって言ってたからこんなクソ面倒くさいことやれば一応できるっていう例示
284デフォルトの名無しさん (ワッチョイ 8101-1tDD)
2023/06/21(水) 01:17:47.52ID:CWKUsltc0
>>281,283
ありがとう
>引数として int を渡せる (int から暗黙に変換可能な仮引数を持っている) というのと
>厳密に int そのものでなければならないというのとでは制約の厳しさが違う。
こういうことね
285デフォルトの名無しさん (ワッチョイ a901-UvLK)
2023/06/21(水) 04:29:46.61ID:IDPPhD2V0
>>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<>()); }

すでに名前空間内に同名の関数があった場合はダメっぽい
286デフォルトの名無しさん (ワッチョイ a901-UvLK)
2023/06/21(水) 09:44:10.00ID:IDPPhD2V0
あ、すまんfooがクラステンプレートになってるの直し忘れた(直しても同じだが)
287はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3)
2023/06/21(水) 10:22:19.76ID:3HBFHOpK0
>>285
名前探索 (name lookup) は狭い名前空間から探索していって
合致する名前があればそれより外側に同名の関数があっても
オーバーロード解決に参加しない。

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

void foo(void) {}

struct bar {
void baz(void) {
// この foo は bar::foo のこと
// 名前が見つかった時点でそれより外の名前空間は見に行かないので
// 引数が合わなくても他の候補は試みられずエラーになる。
foo(1);
}
void foo(void) {}
};
288はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3)
2023/06/21(水) 10:34:08.97ID:3HBFHOpK0
例をちょっと間違えたのでやりなおし。

void foo(int) {}

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

こうすると非メンバ関数の foo は候補にすらならないという話。
289デフォルトの名無しさん (ワッチョイ 8101-1tDD)
2023/06/21(水) 11:00:59.24ID:CWKUsltc0
g++更新にともない
自前ライブラリのビルドでエラーが出るようになって
悩んでたところを解説してくれてる
マジで凄い人達だな
290デフォルトの名無しさん (ワッチョイ a901-UvLK)
2023/06/21(水) 11:31:26.94ID:IDPPhD2V0
>メンバ関数内にひとつでも候補が見つかった時点で非メンバ関数は一切考慮に入らなくなる。
thx。確かにこれ経験したことあるわ・・・ややこしいし名前変えて対処したけど
291はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3)
2023/06/21(水) 12:13:25.08ID:3HBFHOpK0
>>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 している事例は見たことがあると思う。
292デフォルトの名無しさん (ワッチョイ ad10-fL0y)
2023/06/21(水) 12:20:53.22ID:s1sJDdcu0
C++って、こういう悪夢みたいなテクニックで溢れかえってるよなあ
RustやらPythonだのに人気が移るわけですよ
293デフォルトの名無しさん (テテンテンテン MM96-Axrn)
2023/06/21(水) 12:23:49.28ID:xjKiS8Z6M
記法でいうならNimがいいよ。
294はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3)
2023/06/21(水) 16:00:35.62ID:3HBFHOpK0
カスタマイズされた関数が呼ばれるようにする綺麗な方法として customization point object という概念が近頃は導入されてる。
綺麗な方法というか汚い部分はライブラリに隠すってだけなんだけど。
真似してみてもいいかもね。

より綺麗な方法が導入されるのはいいんだけど、
過去の方法が消えてなくなるわけでもないし完全に置き換えられるわけでもないからなぁ。
個々には良くなっても全体としては余計に複雑になるだけってのもよくある話。
https://m.xkcd.com/927/
295デフォルトの名無しさん (ワッチョイ c997-trtU)
2023/06/22(木) 09:50:22.29ID:+UOgHQ6A0
max RSS (メモリ総量) の取得ってWindowsとLinuxでポータブルな方法ないの?
296デフォルトの名無しさん (スプッッ Sd12-9xvA)
2023/06/22(木) 10:07:05.02ID:T+/An9G4d
C++標準ライブラリには無い

外部ライブラリに頼るか自分で実装するかになるけど、結局のところ#ifdefでOS依存の機能を呼び分けるしかない
297デフォルトの名無しさん (ワッチョイ 196e-ljvc)
2023/06/22(木) 10:35:39.47ID:myrOOi5M0
std::uintptr_t get_available_memory();
とプロトタイプだけ用意して、定義を環境別に作るだな

内容的に割と単純な処理のはずで
環境別に用意といってもたいした工数にはなるめえよ
298デフォルトの名無しさん (アウアウウー Sacd-Hkv7)
2023/06/22(木) 17:54:50.46ID:Sn58Ngpoa
Nim いいよね
C++ 嫌になったら Nim においでおいで
299デフォルトの名無しさん (ワッチョイ c997-trtU)
2023/06/23(金) 06:00:18.48ID:AFPisFIg0
なんかのオブジェクトをポインタじゃなく実体として持ってるとして、それを delete するやり方ってないの?
たとえば std::vector A に対して
delete &A;
みたいな
300デフォルトの名無しさん (ワッチョイ 92ad-DGQF)
2023/06/23(金) 06:14:43.58ID:Dz+tkRpF0
「実体を持っている」と言うが「誰が」持っているかにもよる
グローバル変数として宣言しているなら予めメモリ上に確保されているから破棄は無理(強引に再利用はできる)
スコープ内で変数として宣言したのなら必要なメモリはスタック上にあるからスタックを弄るしかない
別のオブジェクトのメンバ変数として宣言されているならそのオブジェクトを破棄する
301デフォルトの名無しさん (ワッチョイ 92ad-DGQF)
2023/06/23(金) 06:17:44.59ID:Dz+tkRpF0
スコープ内でってのはローカル変数の意味で言ったの
302デフォルトの名無しさん (ワッチョイ 3602-Ul6j)
2023/06/23(金) 07:14:23.97ID:GEB8UNzF0
A.~vector<>();でいいんじゃないの?
メモリ解放が必要ならdelete(void*)&A;とかして。
303デフォルトの名無しさん (ワッチョイ 196e-ljvc)
2023/06/23(金) 07:18:45.05ID:v++V1HM40
>>299
deleteはdynamic storage durationのオブジェクトにのみ許される
std::vector<int> A;はautomatic storage durationの場合はその定義を囲むブレースから逸脱すれば破棄される
static storage durationの場合はプログラムの実行終了時に破棄される
thread storage durationの場合はスレッド終了時に破棄される
304デフォルトの名無しさん (テテンテンテン MM96-Axrn)
2023/06/23(金) 07:19:36.07ID:pmKt7pYtM
極論すれば、c++の変数は自動変数しか無いから、変数で定義しているものはコンパイラに任せるしか無い。
305デフォルトの名無しさん (ワッチョイ 196e-ljvc)
2023/06/23(金) 07:23:15.08ID:v++V1HM40
> c++の変数は自動変数しか無い

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

std::vector* pA = new std::vector();
std::vector& A = *pA;
 :
 Aで操作
 :
delete pA;
この後 Aに対して操作すると鼻から悪魔
307デフォルトの名無しさん (ワッチョイ 196e-ljvc)
2023/06/23(金) 08:36:05.01ID:v++V1HM40
auto&& A { *new std::vector<int>(0) };
delete &A;
これで「実体」のように偽装はできるけど
こんなコード書くやついたらグーパンだよ
308デフォルトの名無しさん (ワッチョイ 92f0-L1I+)
2023/06/23(金) 08:38:29.90ID:OoWAXDqh0
このスレ読んでると目の裏がチカチカしてくるなw
309デフォルトの名無しさん (ワッチョイ f59c-Axrn)
2023/06/23(金) 08:46:52.36ID:z+mnuoLR0
>>305
極論すれば、と言っているだろ。
せめて反例ぐらい出せよ。
310デフォルトの名無しさん (ワッチョイ 196e-ljvc)
2023/06/23(金) 09:45:42.49ID:v++V1HM40
反例っておまえ・・・

静的変数
311デフォルトの名無しさん (ワッチョイ 0d4e-L1I+)
2023/06/23(金) 10:11:58.67ID:Zb3L9Wmq0
>>299
deleteで何をしたいかによるな
deleteは
・デストラクタを呼び出して
・メモリを開放する
という2つの動作が含まれるが、「メモリを開放する」に関しては、確保されてもいないメモリはもちろん開放できないが、
デストラクタは実体としてはただの関数なので、普通に呼び出すことは可能
ただし、メモリが開放される(deleteされる)時にもデストラクタはもちろん呼び出されるので、2重に呼び出しても大丈夫なように設計されたクラスである必要はある
312デフォルトの名無しさん (ワッチョイ 8101-1tDD)
2023/06/23(金) 11:56:54.20ID:jOpqVfQE0
>>299
スコープを終わらせれば消える
313デフォルトの名無しさん (テテンテンテン MM96-UmNC)
2023/06/23(金) 13:49:52.85ID:RsoTpuHzM
Windows11でc++の開発したいんですけど開発環境何を選べばいいですか?
ちなみに趣味でおもちゃ言語のコンパイラを書こうと思います
314デフォルトの名無しさん (スッップ Sdb2-Ul6j)
2023/06/23(金) 14:29:49.42ID:P5Uu3Ce/d
wslのclangでいいんじゃないの
315デフォルトの名無しさん (ワッチョイ 515f-C6j3)
2023/06/23(金) 14:40:39.89ID:79pDbKtj0
>>311
> 2重に呼び出しても大丈夫なように設計されたクラスである必要はある
trivial destructor 以外は(空の ~T() {} 含め)どうがんばっても大丈夫にはならず未定義動作となる模様。
https://timsong-cpp.github.io/cppwp/n4868/basic.life#9.sentence-1
316デフォルトの名無しさん (テテンテンテン MM96-UmNC)
2023/06/23(金) 14:42:57.84ID:XaN8/xk5M
>>314
visual studioでできませんか?
visual studioに依存しないような形で
317はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3)
2023/06/23(金) 14:49:06.12ID:Xemzxb7u0
>>316
依存するかしないかはプログラマが気を付けることだろ
318デフォルトの名無しさん (ワッチョイ 196e-ljvc)
2023/06/23(金) 14:58:36.88ID:v++V1HM40
>>316
つーか俺はVisual Studioを推奨する
コンパイラ本体が昔からしっかりしてるし
デバッガは無数の信者を抱えるクオリティ
319はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3)
2023/06/23(金) 15:11:25.32ID:Xemzxb7u0
俺はコンパイラは複数を利用するのが好ましいと思う。
気を付けてても処理系に依存している (または未定義を踏んでいる) こともある。
いくつかのコンパイラで試してみれば問題点を発見しやすい。

発現した問題についてはデバッガなりなんなりで追えばいいんだが、
問題が潜伏したまま表面に現れないってのは後になってじわじわ効いてきたりするし……。
320デフォルトの名無しさん (アウアウウー Sacd-Hkv7)
2023/06/23(金) 16:11:46.79ID:lCxAQSJFa
>>299
デストラクタに直接リソース解放させるより
リソース解放用の dispose() みたいな関数を造っておいて
デストラクタから dispose() 呼ぶのと同時に
delete しないで dispose() だけ外から呼ぶ設計もあるよ
321デフォルトの名無しさん (アウアウウー Sacd-Hkv7)
2023/06/23(金) 16:14:47.39ID:lCxAQSJFa
>>313
Code::Blocks (+ mingw)
322デフォルトの名無しさん (ワッチョイ 69f0-J7ro)
2023/06/23(金) 18:47:00.64ID:5tcqgCxE0
コンパイラの本なにがいいのかオススメ聞いたらオッサンに聞いたら怪獣が書いてある本って云われて本屋行って買ったらあとで付録のFDD誰かにかっぱわられていタコとに気付いたけどその本一冊ではなんの役にも立たないクソみたいな本だったわ
そのあとオライリーのyacc&lexの本と早乙女氏のBison&Flex本で学び直したわ
323デフォルトの名無しさん (ワッチョイ 69f0-J7ro)
2023/06/23(金) 19:05:06.07ID:5tcqgCxE0
良く見たら全然違ったわw
C++相談室 part164 YouTube動画>1本 ->画像>5枚
yacc&lexが早乙女氏でBison&Flexが五月女氏でオライリーに似てるけどASCII出版やったわ
324デフォルトの名無しさん (テテンテンテン MM96-Axrn)
2023/06/23(金) 19:51:54.58ID:s3XGk2XtM
>>316
まず動くものを作ることに注力したほうがいい。
どうせ最初のコードは(問題領域の学習後に)捨てることになるから、プロトタイプと割り切るべき。あんまり頑張ると進捗悪くて挫折するし、うまく行ってもコンコルド効果で酷い目にあう。

>>310
確かに静的変数は自動だけど別物だな……よくやった。悔しいが褒めてやろう。
325はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3)
2023/06/23(金) 22:40:53.53ID:Xemzxb7u0
>>324
???
storage duration は四種類の内の「ひとつ」であることは直接的に明記されていて解釈の余地がない。
https://timsong-cpp.github.io/cppwp/n4861/basic.stc#1
兼ねる場合は存在しない。
326デフォルトの名無しさん (ワッチョイ 6501-2DXs)
2023/06/24(土) 08:29:33.32ID:31MSzc3x0
>まず動くものを作ることに注力したほうがいい。
+1票

>いくつかのコンパイラで試してみれば問題点を発見しやすい。
これはその通りだけど、もっともっと先の話
327デフォルトの名無しさん (ワッチョイ 856e-gmRT)
2023/06/24(土) 09:51:19.10ID:xNNc2oEW0
動くといってもHello worldじゃあまりにもモチベーションに乏しいから
何でもいいから目的目標を持ったプログラムを書いたほうがいい
328はちみつ餃子 ◆8X2XSCHEME (ワッチョイ dd3e-F8yx)
2023/06/24(土) 12:57:29.18ID:rXisqo0O0
>>327
この話題の大元である >>313 でコンパイラを書くと書いてあるよ。
329デフォルトの名無しさん (ワッチョイ 6501-wYA+)
2023/06/24(土) 20:48:58.11ID:rm+SB6K20
ドラゴンブックでは?
誤植を指摘できるくらい読み込めば古典は理解できてると思う
330デフォルトの名無しさん (アウアウウー Sa69-F3wx)
2023/06/27(火) 14:41:09.50ID:DdZG5nY/a
いつまでも初心者を抜け出せない人は初心者本を読み過ぎ
331デフォルトの名無しさん (ワッチョイ 856e-gmRT)
2023/06/27(火) 17:36:09.51ID:59BI4JPS0
初心者本は【ど】初心者のうちだけにしとけ
謙虚なことはいいことだが、ここだけは背伸びしたほうがいい

初心者本で何か知ったら、それで禿本がどのくらい読めるようになったかやってみれ
禿本が普通に読めるようになったら次はISOの規格票
332デフォルトの名無しさん (ワッチョイ 856e-gmRT)
2023/06/27(火) 17:38:22.91ID:59BI4JPS0
逆もしかり
ISOの規格票であえなくギブしたら禿本
禿本でギブのとき初心者本に戻る感じな
333デフォルトの名無しさん (ワッチョイ 8d7c-BujW)
2023/06/27(火) 18:00:18.69ID:h1cnuIf90
特にC++は下手な参考書より規格の方が分かりやすかったりするからな…
334デフォルトの名無しさん (ワッチョイ dd4e-OfpS)
2023/06/27(火) 18:15:38.33ID:D2orubkn0
初心者へのアドバイスに禿本とかいう隠語をつかうのはどうかと思う
335デフォルトの名無しさん (ワッチョイ d5b3-q57E)
2023/06/27(火) 18:27:04.42ID:KKkR5HKI0
今独学でC++学んでいるんですが、たまたま見つけたサイトでint32_tとありましたが
int変数を宣言するのにint32_tなんて使いませんよね?
intでokですよね?
336デフォルトの名無しさん (ワッチョイ ad5f-VF0j)
2023/06/27(火) 18:34:12.56ID:3myjDgNL0
何に使うか次第
337デフォルトの名無しさん (ワッチョイ ad02-ES2+)
2023/06/27(火) 18:46:35.68ID:gpD88JT50
>>335
32ビット長である必要があるときだけint32_tを使えばいいよ
338デフォルトの名無しさん (ワッチョイ d5b3-q57E)
2023/06/27(火) 19:26:51.01ID:KKkR5HKI0
サンクス
339はちみつ餃子 ◆8X2XSCHEME (ワッチョイ dd3e-F8yx)
2023/06/27(火) 19:30:48.55ID:wxXBe/Gr0
>>335
int は言語仕様では少なくとも -32767 から 32767 を表現可能な幅 (つまり 16 ビット) を持つことが規定されている。
具体的な大きさは処理系定義であって、最低限である 16 ビットかもしれないしもっと大きいかもしれない。
扱おうとする値の範囲が 32 ビット分の幅が必要であると見積もったなら int32_t が適切なこともある。

ただ…… int32_t は「条件に合致する整数型を処理系が持っているなら必ず提供しなければならない」ということになっているので、逆に言えば 32 ビット幅の整数型を持たない処理系では int32_t が存在しないことが許される。
C++ は処理系定義ということにしている項目がたくさんあって移植性を考慮しようとするとすごく大変なんだが (プログラマが想定してさえいれば) ある程度に広く対応可能な仕組みとしてこういう回りくどいものがある。
初心者の内はとりあえず自分の環境で動くものを作れるようになるというので十分だと思うよ。
340デフォルトの名無しさん (ワッチョイ 856e-gmRT)
2023/06/28(水) 05:36:22.40ID:p/gJzJ+n0
>>334
知らなきゃ聞くだろ
341デフォルトの名無しさん (スッップ Sd43-KhjG)
2023/06/28(水) 05:40:48.88ID:PRZu9/2Od
>>340
禿本って誰ですか?
342デフォルトの名無しさん (ワッチョイ 856e-gmRT)
2023/06/28(水) 07:54:48.30ID:p/gJzJ+n0
Bjarne Stroustrup著 The C++ Programming Language
ISBN-10 4797375957
343デフォルトの名無しさん (ワッチョイ 856e-gmRT)
2023/06/28(水) 07:55:45.79ID:p/gJzJ+n0
禿のブログ
https://www.stroustrup.com/
344デフォルトの名無しさん (ワッチョイ dd4e-OfpS)
2023/06/28(水) 11:12:40.66ID:MFKAAcNx0
>>340
誰も知らないから隠語なんだよ
たまにいるよな、相手の知らないであろう単語を使ってマウントを取った気分になるやつ
345デフォルトの名無しさん (テテンテンテン MM4b-HUf/)
2023/06/28(水) 12:11:22.15ID:gg0vhlU/M
>>340
検索すると別人の本が出てくるから駄目だろ。
346デフォルトの名無しさん (ワッチョイ 23f0-OfpS)
2023/06/29(木) 00:03:54.47ID:XHjEw6wR0
C++でintと書けない理由はほぼほぼwindowsのintが32ビットと定義されているからで、
逆に言えば100% windowsで動かさないとあらかじめ分かっているならint使って書くよ
347デフォルトの名無しさん (ワッチョイ 4be5-O9q2)
2023/06/29(木) 07:49:46.01ID:0UnKiO4J0
せいぜい数十までの整数でも、いちいちint8_tになんかしねえな
348はちみつ餃子 ◆8X2XSCHEME (ワッチョイ dd3e-F8yx)
2023/06/29(木) 08:15:54.28ID:l+ZsGqGg0
巨大な配列なら話は別だが単発の整数がレジスタより小さくても得なことが無いからな。
349デフォルトの名無しさん (ワッチョイ 9dc9-3ptY)
2023/06/29(木) 08:19:17.75ID:beCjxg/z0
通信関連でペイロードに ビット長指定されてるのなんかは int○_t 使っときたい
350デフォルトの名無しさん (ワッチョイ 8590-bmws)
2023/06/29(木) 11:02:12.05ID:prJHgW/t0
intでもshortでもCPUの計算速度は同じ
351はちみつ餃子 ◆8X2XSCHEME (ワッチョイ dd3e-F8yx)
2023/06/29(木) 11:11:38.45ID:l+ZsGqGg0
四則演算では int より小さい整数は int に拡張する変換が入ることになってるし、
int を受け取る関数でも当然に変換されるので
変換する処理の分だけ素朴なコンパイラだと short のほうがコスト高になる可能性もある。
352デフォルトの名無しさん (ワッチョイ 8590-bmws)
2023/06/29(木) 11:21:22.19ID:prJHgW/t0
言葉足らずだったな
初学者向けに正確にいえば
ビット数の低い数値の型にしたからといって
計算速度が速くなるワケじゃない

理由はハチミツ氏の記述通り
353デフォルトの名無しさん (ワッチョイ 23f0-OfpS)
2023/06/29(木) 17:52:26.59ID:XHjEw6wR0
型のサイズが大きいほどキャッシュミスの確率が上がるし
ベクトル化の効率も関わってくるから話はそう簡単でもないけどな
354はちみつ餃子 ◆8X2XSCHEME (ワッチョイ dd3e-F8yx)
2023/06/29(木) 18:01:09.64ID:l+ZsGqGg0
チューニングが必要になったら実測しろってのはそういうことよな。
やってみるまでわからん。
355デフォルトの名無しさん (ワッチョイ 23ad-F8yx)
2023/06/30(金) 13:08:37.59ID:fR+nHOGQ0
やはり64bitCPUなら64bit整数が一番計算が速かったりするのかな
356デフォルトの名無しさん (ワッチョイ 05a7-7pYU)
2023/06/30(金) 13:38:31.87ID:x+ZjTlP+0
>>348
al、ah、axと小さなレジスタでやりくりすることによりスタックすらも使わずに複数の変数を操作することは可能になる
まあ汎用レジスタ数の多い64bitアプリではあんまりメリットにならんが
357デフォルトの名無しさん (ワッチョイ 4bf2-kZxR)
2023/06/30(金) 13:40:34.61ID:GCvfqGNe0
普通、intは32bitじゃないの?
普通の計算に64bitなんて使ったらキャッシュ効率悪すぎでしょ
358デフォルトの名無しさん (ワッチョイ dd4e-OfpS)
2023/06/30(金) 15:06:59.18ID:4d5Im9Ce0
多少のCPU内の計算速度差より、メモリアクセスのペナルティの方が遙かに影響でかいんだよね
昔、同じテキスト処理をsjisとutf16で速度比べたら、処理が複雑なはずのsjisの方がわずかに速かったこともあった
359デフォルトの名無しさん (ワッチョイ ad02-ES2+)
2023/06/30(金) 16:50:22.94ID:4gqYGJxm0
じゃあ16ビット整数使おうぜ!
360デフォルトの名無しさん (スッップ Sd43-+46M)
2023/06/30(金) 18:10:36.60ID:diu+eantd
ILP32
LLP64 windows: int32 long32 long long 64
LP64 unix: int32 long64 long long 64
ILP64 実装例なし
361デフォルトの名無しさん (スプッッ Sd03-+QuN)
2023/06/30(金) 18:16:08.64ID:rpfOZ2Y1d
>>358
自作エディタの内部文字コードに悩んでるけどもしかしてUTF8がええのかな
362デフォルトの名無しさん (ワッチョイ dd4e-OfpS)
2023/06/30(金) 18:31:33.16ID:4d5Im9Ce0
>>361
utf8は日本語3バイトになるし、冗長コードの問題もあるし、処理がより煩雑になるから内部処理コードには一番向かないと思う
エディタなら素直にutf32(もしくは16)で持つのが良いような気がする
363デフォルトの名無しさん (ワッチョイ 8d9c-HUf/)
2023/06/30(金) 18:50:30.08ID:JeB1mWDr0
>>362
utf16はサロゲートペアがあるから避けたほうがいい。
簡単に実装するならutf32、メモリを節約するならutf8。だけど、utf8が覇権だからutf8にしたら?
364デフォルトの名無しさん (ワッチョイ 8d7c-BujW)
2023/06/30(金) 18:53:22.37ID:ccKyFSM70
今から新規にエディタ作るなら内部はUTF32一択でしょ
それ以外を使う理由がない
365デフォルトの名無しさん (ワッチョイ dd4e-OfpS)
2023/06/30(金) 20:01:34.61ID:4d5Im9Ce0
>>363
サロゲートペアの判定は簡単だし、utf32でも厳密には1文字=1要素にはならないし、
メモリアクセス量との兼ね合いでより高速に動作しそうな気がするが…避ける理由がよく分からない
366デフォルトの名無しさん (ワッチョイ 9d10-56Vs)
2023/06/30(金) 20:23:00.32ID:fhTbp4mH0
今どきは絵文字とかも絡んでくるから「簡単に実装」なんてそうそう言えないと思うんだよね
性別やら肌の色で修飾みたいな複雑仕様を網羅する必要があるから
367デフォルトの名無しさん (ワッチョイ 8d7c-BujW)
2023/06/30(金) 21:27:23.31ID:ccKyFSM70
Unicodeの処理なんてただでさえ魔境なんだから減らせる複雑性は減らしといた方が良いよ
悪いこと言わないからUTF32にしとけ
368デフォルトの名無しさん (ワッチョイ e2ad-hRAP)
2023/07/01(土) 10:11:11.88ID:6RngsvF70
テキストエディタを自作すると一文字一文字の描画位置の計算を毎回しなければならず、結局全テキストをデータutf32形式で保持するのが楽という結論になりそう
369デフォルトの名無しさん (ラクッペペ MM8e-J/Sn)
2023/07/01(土) 10:21:22.63ID:zjPNSumQM
そこまでやるとワープロやDTPの範疇では?
370デフォルトの名無しさん (ササクッテロラ Sp5f-kcaK)
2023/07/01(土) 10:38:59.61ID:oFUv7PIMp
>>351
変換する処理ったって、普通static_castにコスト発生せんやろ
371デフォルトの名無しさん (ササクッテロラ Sp5f-kcaK)
2023/07/01(土) 10:41:23.25ID:oFUv7PIMp
static_castというよりstatic_cast相当というべきか
もちろん浮動小数点数と整数だと命令いるけど
372デフォルトの名無しさん (オイコラミネオ MMe7-+Mc8)
2023/07/01(土) 10:43:45.44ID:hNdT1t6QM
レジスタの拡張命令が必要になる
それはゼロコストではない
373デフォルトの名無しさん (オイコラミネオ MMe7-+Mc8)
2023/07/01(土) 10:45:55.45ID:hNdT1t6QM
8bit,16bitの値を同サイズのレジスタに読む
それを32bitへ拡張する
374デフォルトの名無しさん (ササクッテロラ Sp5f-kcaK)
2023/07/01(土) 10:49:09.01ID:UYNjOrxwp
そうなのか、知らんかった・・・
375デフォルトの名無しさん (オイコラミネオ MMe7-+Mc8)
2023/07/01(土) 10:55:28.60ID:hNdT1t6QM
8bitしかないのに32bitで読むと当然ごみが入るので何かしないといけない
逆に8bitだけ読んで何もしないとこちらもレジスタにゴミが残ってる
何もしないで使える場合なにかしらの仕組みがある

そんなことするよりレジスタ拡張命令使った方がいい
通常の命令だけでなくてsimdにも用意されている
376はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 433e-hRAP)
2023/07/01(土) 10:57:02.19ID:7zrd4+jP0
俺も >>367 の意見に賛成。
UTF-32 の採用で何もかも良くなるわけではないが
少なくともコードポイント単位での扱いは楽になる。
377はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 433e-hRAP)
2023/07/01(土) 10:58:34.38ID:7zrd4+jP0
ちょうど Unicode 関連の本を読んでたんだが
右から左へ書く言語だとか
それが入れ子になってる場合だとか、
そういうのにちゃんと配慮したソフトウェアが世の中にあるのは
めちゃくちゃ頑張った人がいるんだなぁと有難みを感じてる。
378デフォルトの名無しさん (スププ Sd02-+VJx)
2023/07/01(土) 12:18:01.21ID:W7avfgkdd
日本語も右から左に書く言語だ
正確には上から下と右から左ニダ
379デフォルトの名無しさん (ワッチョイ 17f0-mXgB)
2023/07/01(土) 12:20:52.99ID:86MprtLh0
BiDiモード
380デフォルトの名無しさん (ラクッペペ MM8e-J/Sn)
2023/07/01(土) 12:42:13.26ID:ZV4XYgX9M
世界でも珍しい縦書き文化
381デフォルトの名無しさん (ワッチョイ 0e79-p0MK)
2023/07/01(土) 15:53:40.98ID:GgZZqhZy0
UTF32派の人ってWin32でW系API通す時に毎回変換するってこと?
382はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 433e-hRAP)
2023/07/01(土) 16:08:08.30ID:7zrd4+jP0
>>381
そうだよ。
作るアプリケーションがエディタ (またはシーケンシャルではない
テキスト操作をする何か) であるという前提を置いているときなら
という条件付きな話だが。
383デフォルトの名無しさん (ワッチョイ e2ad-hRAP)
2023/07/01(土) 17:26:11.76ID:6RngsvF70
そもそもWin32でA系APIにutf8渡せないし
384デフォルトの名無しさん (ワッチョイ 7b9c-44el)
2023/07/01(土) 17:29:40.49ID:ceIwatEY0
A系にはutf8渡せるんじゃないの?
385デフォルトの名無しさん (ワッチョイ e2ad-hRAP)
2023/07/01(土) 17:36:11.93ID:6RngsvF70
渡せるという表現がまずかったかな
結果を気にしなければ、なんでも渡せるよ
386デフォルトの名無しさん (ワッチョイ 06f2-fGW2)
2023/07/01(土) 17:43:00.61ID:XU86fDmw0
>>384
Windows バージョン 1903 (2019 年 5 月の更新プログラム) 以降、ActiveCodePage プロパティを使って、プロセスのコード ページとして UTF-8 を使うように強制できるようになりました。
387デフォルトの名無しさん (ラクッペペ MM8e-J/Sn)
2023/07/01(土) 19:58:04.79ID:Z2fZL/QQM
A系はASCIIなのでunicode由来のutfもshift-jis などのMBCSも扱えない
388デフォルトの名無しさん (ワッチョイ 06f2-HE4y)
2023/07/01(土) 20:10:31.66ID:XU86fDmw0
>>387
最近までは、-A API がレガシと見なされていました。
これは、何十年もの間、Windows が "Unicode" -W バリアントを推進していたためです。
しかし、最近のリリースの Windows では、ANSI コード ページと -A API を活用し、
新しい SKU で UTF-8 サポートを導入しています。 ANSI コード ページが
UTF-8 に対して構成されている場合、-A API は UTF-8 で動作します。
389蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd02-Ojup)
2023/07/01(土) 20:13:40.75ID:6ckc7dLGd
>>387
以前からCP_ACPは日本語環境でシフトJISを扱えたはず。CP_ACPの解釈をCP_UTF8にすることができる設定と見なせる。
390デフォルトの名無しさん (ブーイモ MM8e-44el)
2023/07/01(土) 20:43:32.48ID:B2exONcuM
ASCIIしか考えてないアメリカ人の作ったプログラムでもUTF-8ならそれなりに動くよね
strlenが正確な文字数を返してくれるわけではないけども
391蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd02-Ojup)
2023/07/01(土) 20:55:13.36ID:6ckc7dLGd
WideCharToMultiByteとMultiByteToWideCharの第一引数に明示的にシフトJISのコードページ932を指定すればUTF-8な環境でも動く。
392デフォルトの名無しさん (ワッチョイ 7f28-iz2R)
2023/07/01(土) 23:06:29.67ID:5I1AeY3j0
そうなの?
ただ単に変換APIの第一引数に明示的にシフトJISのコードページ932を指定しただけだと
とりわけWideCharToMultiByte()の場合、文字コードの自動判別が介在する余地もなく、
ウィンドーズ内部表現のUTF-16がシフトJISのコードページ932に(指定通りに)変換されるだけなんじゃないの……

M$のページ見たら
>マニフェストの ActiveCodePage プロパティを使って、プロセスのコード ページとして UTF-8 を使うように強制できるようになりました。
>マニフェストの ActiveCodePage プロパティを使って
と書いてあった
マニフェストファイル変えたら中で何がどう切り替わるのかわ皆目わからんが、
ただ単に変換APIの第一引数に明示的にシフトJISのコードページ932を指定したら万事OKというよりは得心が行く
393デフォルトの名無しさん (ワッチョイ 06f2-HE4y)
2023/07/02(日) 00:11:45.31ID:26TSX02F0
そういう話じゃない
〜A系のAPIの文字列引数にUTF8が使えるようになったという話だ
394デフォルトの名無しさん (ワッチョイ ce9a-EKe4)
2023/07/02(日) 00:28:14.28ID:MfIRncIE0
>>390
>strlenが正確な文字数を返してくれるわけではないけども
そもそも正確な文字数が必要な局面って?
そもそもUnicodeにおける「文字」って
395デフォルトの名無しさん (ラクッペペ MM8e-J/Sn)
2023/07/02(日) 00:43:33.66ID:B6PMzb/YM
A系ならstrlen、W系ならlstrlen使えば済む話では?
396デフォルトの名無しさん (ワッチョイ ce9a-EKe4)
2023/07/02(日) 01:40:17.87ID:MfIRncIE0
>>377
Unicode自体と同様、文句もあるけど世界中が規格化標準化されるのはやはり
有益な面があるなあと思ったり
言語を完全に知らなくてもそういう規則に従えばまあまあのものが出来る
そうやって自分もRTLなテキストを処理するコードを書いたことがあるし
日本語を(も)扱うコードだってどこかの外人が書いてるわけで

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

そういえば、テキストだけじゃなくてUIのレイアウトも変わるし、テキストのスクロール
方向とかも変わるし、注意が必要だったり
397デフォルトの名無しさん (ワッチョイ cb02-ctHD)
2023/07/02(日) 04:10:12.63ID:3Rb9PhMu0
Visual C++してもいいでしょうか?
特定の既定のライブラリの無視に「LIBCMT.lib」を設定して
マルチスレッド使っても大丈夫でしょうか?
もちろんランタイムライブラリの設定はマルチスレッドにしてます。
これでマルチスレッド使っても大丈夫でしょうか?
3980397 (ワッチョイ cb02-ctHD)
2023/07/02(日) 04:46:51.92ID:3Rb9PhMu0
ごめんなさい。自己解決しました。
399デフォルトの名無しさん (ワッチョイ 7f28-iz2R)
2023/07/02(日) 08:22:56.48ID:cqAPSm8d0
>>393
何言ってるかわからんkwsk
過去にCreateFile(L"漢字.txt", ...)で作ったファイルを、
WideCharToMultiByteとMultiByteToWideCharの第一引数に明示的にシフトJISのコードページ932を指定するだけで
CreateFileA(u8"漢字.txt", ...)で開けるようになったとしたら論理鉄器におかしい希ガス
400デフォルトの名無しさん (ワッチョイ c2fb-PY2F)
2023/07/02(日) 10:08:44.31ID:idCQJgQa0
環境依存の文字コードを取り扱うA系の関数でコードページ65001(UTF8)をサポートしたという話か?

「最近のリリースのWindows」とやらが何年ごろの話か知らんが
401デフォルトの名無しさん (オイコラミネオ MMe7-hRAP)
2023/07/02(日) 10:21:10.68ID:FpcWXL3uM
親切な人がいて上の方に書いてある
402デフォルトの名無しさん (ワッチョイ 7f28-iz2R)
2023/07/02(日) 11:09:45.90ID:cqAPSm8d0
書いて無くね↑?
403デフォルトの名無しさん (スププ Sd02-+VJx)
2023/07/02(日) 11:52:22.93ID:R6FnNIs/d
>>396
英文モールスや和文モールス信号(符号)は戦前からあるから参考になるよ

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

CreateFile と WideCharToMultiByte/MultiByteToWideChar には何の関係も無いぞ
どちらかといえば setlocale/systemlocale とかの話してるなら判らんでもないが
405デフォルトの名無しさん (ワッチョイ 7f28-iz2R)
2023/07/02(日) 12:09:58.45ID:cqAPSm8d0
>>404
>>391
406デフォルトの名無しさん (ワッチョイ 7f28-iz2R)
2023/07/02(日) 12:12:15.47ID:cqAPSm8d0
んまーもちついて>>391を読めば
>UTF-8な環境でも
というのがActiveCodePage プロパティを使って、プロセスのコード ページとして UTF-8 を使うように強制できるようになりました環境(>>386
の意味なら分からなくも無いorz
407デフォルトの名無しさん (ワッチョイ ce9a-EKe4)
2023/07/02(日) 14:25:34.89ID:MfIRncIE0
>>403
>>396はエンコーディングの仕方の話ではないんですよね

疑問の答えはここにあった(と思う)
C++相談室 part164 YouTube動画>1本 ->画像>5枚
408デフォルトの名無しさん (アウアウウー Sabb-hiKC)
2023/07/02(日) 15:11:19.95ID:BV1CApnra
和氣清麻呂好き
409デフォルトの名無しさん (ササクッテロラ Sp5f-UEHP)
2023/07/03(月) 18:00:48.84ID:+/doOPQlp
組み込みの設計技法を学びたいんだけど、静的構造と動的構造の設計を学べるいい書物あったら教えてください
410デフォルトの名無しさん (テテンテンテン MM8e-CxeC)
2023/07/05(水) 19:37:47.51ID:UfO9dhEIM
>>409
古い人間だから、デザインパターン本ぐらいしか知らん。

C++テンプレート設計の良本てあったっけ?
411デフォルトの名無しさん (ワイーワ2 FFfa-QrII)
2023/07/05(水) 19:46:37.42ID:98uidMYlF
>>410
Modern C++ Designとか?
412デフォルトの名無しさん (ワッチョイ 7b7c-9nZq)
2023/07/05(水) 19:52:44.79ID:tRsu2qbd0
あれは魔術書過ぎてちょっと…C++03時代の本だから古いし
413デフォルトの名無しさん (オイコラミネオ MMe7-hRAP)
2023/07/05(水) 20:15:53.22ID:XE8fk1ziM
横からだけど組み込みは手続き型なのかイベントドリブンなのかも知らないので知りたいなw
414デフォルトの名無しさん (ワッチョイ c67c-mdfO)
2023/07/06(木) 03:34:48.12ID:s5S2CoPB0
組み込みだから手続き型とか
組み込みだからイベントドリブンとか
そういうのはないよ
415デフォルトの名無しさん (ワッチョイ 433e-hRAP)
2023/07/06(木) 09:09:22.20ID:a8qSLwwI0
>>413
組み込まれていれば組み込みなんだよ。
扱う技術には何も違いは無い。

組み込みなら何らかの制御対象はあるだろうから
その制御対象の性質には影響を受けると思うが。
416デフォルトの名無しさん (ワッチョイ 06f2-HE4y)
2023/07/06(木) 09:59:15.82ID:ZkyJU/6U0
手続き型かどうかとイベントドリブンかどうかは関係ない概念
417デフォルトの名無しさん (ワッチョイ d701-kcaK)
2023/07/06(木) 14:16:15.16ID:ALXC3HlV0
>>412
横からだが魔術書とか、アンサイクロペディアの内容真に受けてるのか流行ってるのか知らんけど良くない
凝ったメタプログラミングとかしなくても、わりと実用的な知識が書いてあるよ
オブジェクト指向だけだとユーザーに制約を押し付けてしまいがちな部分を、もう少し自由度高く、直交する概念を組み合わせて小さなパーツに分けるのにテンプレートが便利だよとかいう話が書いてある
418デフォルトの名無しさん (ワッチョイ df01-Jyjt)
2023/07/06(木) 14:28:39.97ID:a0X6jP530
出版当時の衝撃は魔術と評されるに値したなぁ
今もって難解の書ではある
正座して読むべし
419デフォルトの名無しさん (ワッチョイ c67c-mdfO)
2023/07/06(木) 15:07:08.13ID:s5S2CoPB0
足が痺れて集中できない
420デフォルトの名無しさん (ワッチョイ 7b7c-9nZq)
2023/07/06(木) 20:08:43.89ID:3MFY2fBc0
>>417
いや読んだし持ってるし、面白くて良いことも色々書いてるのは知ってるよ
でも「設計技法の本だよ!」ってC++詳しくない人に薦めるような本ではない
421はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 433e-hRAP)
2023/07/06(木) 21:07:53.32ID:a8qSLwwI0
C++03 と C++11 の間で大きな溝があるからなぁ。
言語を詳しく知った上でなら C++03 を前提として書かれた本でも
役に立つところを拾って読むということも出来るけど、
不慣れな内には薦められないというのはわかる。
422デフォルトの名無しさん (ワッチョイ c67c-mdfO)
2023/07/06(木) 21:11:56.86ID:s5S2CoPB0
メジャーチェンジの上って何て言うんだろう
グレートチェンジ?
423デフォルトの名無しさん (ワッチョイ d701-kcaK)
2023/07/06(木) 21:51:28.48ID:ALXC3HlV0
>>420
ああ質問者と勘違いしてた
ただ魔術書とか痛いし不正確な表現はよろしくない(実際Qiitaとかで価値の無い出典も示さないクソ記事書いてる奴がよく使ってる)と言いたいだけ
あと>>409が初心者かどうかはわからんぞ
424デフォルトの名無しさん (ワッチョイ d701-kcaK)
2023/07/06(木) 21:53:09.37ID:ALXC3HlV0
もちろん組み込み学ぶのに適した本だとは思わんけど
425デフォルトの名無しさん (アウアウウー Sabb-hiKC)
2023/07/06(木) 23:37:01.42ID:YLJUKdW5a
>>422
新装開店と言いつつ中身は実質閉店詐欺sale
426デフォルトの名無しさん (ワッチョイ 7f28-iz2R)
2023/07/07(金) 00:10:58.87ID:EP1fLvq90
>>412
ほんそれ
積読のままになってる……
427デフォルトの名無しさん (ワッチョイ 06f2-2tOT)
2023/07/07(金) 00:21:21.09ID:AhT1sfN50
C++なんてもう20年くらいまともに使ってないんだけど大きく変わってるの?
普段使いするような部分で変わったのってどんなのあるの?
428デフォルトの名無しさん (オイコラミネオ MMe7-+Mc8)
2023/07/07(金) 00:32:21.86ID:7ps2WMbUM
new deleteしない
生のポインタを使わない
moveの意識
429デフォルトの名無しさん (ワッチョイ df01-Jyjt)
2023/07/07(金) 00:36:54.14ID:2SE8uAkh0
>>427
moveが一番大きいかな?
生ポインタは20年前でも使わない人は使わなかった
430はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 433e-hRAP)
2023/07/07(金) 01:56:31.07ID:gGTaLgTI0
俺もムーブ (というかその前提である右辺値参照も) の存在が大きな差だと思う。
今となっては C++03 では右辺値参照なしでやってたってのが信じられんくらいだ。
431デフォルトの名無しさん (ワッチョイ 434e-+Mc8)
2023/07/07(金) 13:56:40.22ID:/sgbjnHO0
右辺値参照とmoveでパラメータや戻り値などにclassのインスタンスを直接使いやすくなって、設計の自由度と安全性が格段に向上したとは思うけど、
その代わり、演算子のオーバーロード時のconstやexplicitの有無など、型推論の仕組みをきちんと理解して適切に記述しないとtemplateで訳わかんないエラーが出て、
初心者殺し度も格段に向上したよねw
432デフォルトの名無しさん (ワッチョイ 0e79-p0MK)
2023/07/07(金) 14:27:35.57ID:tybFBPle0
まさに今20年前のコードメンテしてるからnew delete使ってるよ
C++のランタイムすらリンクしてないからこれnewした時Win32APIの何が呼ばれてるんだろう?HeapAllocだったかな?
433デフォルトの名無しさん (スプッッ Sd22-yGZL)
2023/07/07(金) 14:38:08.14ID:5UFmRPYBd
スタティックライブラリがリンクされてるんでしょ
ランダム使用時と完全に同じとは行かないけどほぼ同等の処理のはずだけど
434デフォルトの名無しさん (スプッッ Sd22-yGZL)
2023/07/07(金) 14:38:34.18ID:5UFmRPYBd
ランダムじゃなくてランタイム
435デフォルトの名無しさん (ワッチョイ ffb9-BMDt)
2023/07/08(土) 09:03:38.78ID:Iqj4gtss0
g++でVLAを使ってるんですが、宣言時に初期化リスト使うのって未定義ですか?
公式のドキュメントを漁ってるんですが見当たらないので(英語苦手なので見落としてたらすみません)
436デフォルトの名無しさん (スップ Sd3f-hfg2)
2023/07/08(土) 09:37:22.13ID:E0cUKLNxd
C++にはそもそもVLAないぞ
非標準で実装されるケースはありうるけどね
437はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f73e-kkOg)
2023/07/08(土) 09:56:47.19ID:svQTfB7/0
>>435-436
C と同等の VLA を使えるように拡張されている旨はちゃんとドキュメントに書かれてる。
しかし C の VLA では初期化子を書けないことになってる。
438はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f73e-kkOg)
2023/07/08(土) 10:03:16.21ID:svQTfB7/0
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++.
439デフォルトの名無しさん (ワッチョイ ffb9-BMDt)
2023/07/08(土) 10:10:11.44ID:Iqj4gtss0
>>436
はい、処理系依存ということは認識してます
>>437,438
ありがとうございます!
440デフォルトの名無しさん (ワッチョイ 9701-gR7n)
2023/07/08(土) 11:40:41.01ID:hU6KuhT00
コンテナ使えばVLAって最早必要ないような...
441デフォルトの名無しさん (オイコラミネオ MMeb-kkOg)
2023/07/08(土) 12:00:36.50ID:p+sO9/0DM
数年前にc++でありながらvectorすらない実装はあったけど
442デフォルトの名無しさん (スップ Sd3f-hfg2)
2023/07/08(土) 13:06:37.75ID:E0cUKLNxd
>>440
禿同
443デフォルトの名無しさん (ササクッテロラ Sp0b-/+4S)
2023/07/08(土) 15:36:54.89ID:lxagCGE0p
CのVLAってスタック使われることもあるんじゃなかったっけか
444デフォルトの名無しさん (ラクッペペ MM8f-VHD8)
2023/07/08(土) 15:51:02.79ID:Wmg0D33kM
コンパイラによる
445はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f73e-kkOg)
2023/07/08(土) 18:03:19.11ID:svQTfB7/0
どうしても VLA が必要だとしたら
そもそもヒープアロケーションのコードを書いてるときとか、
変則的なアーキテクチャで仕方がないとか、
C++ の言語機能が完全には使えない状況かな。

あるいはヒープアロケーションのコストを許容できないほど速度的に厳しいとか。
446はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f73e-kkOg)
2023/07/08(土) 20:31:31.43ID:svQTfB7/0
話をぶった切る上に去年の話でアレなんだがこの件。
http://2chb.net/r/tech/1653135809/734
なんの気なしにログを見返してて思い出した。
unexec だ。
447デフォルトの名無しさん (ワッチョイ ff7c-DxV6)
2023/07/08(土) 20:45:51.68ID:wtJKE3gc0
もうアセンブラかVerilog使えって感じだな
448デフォルトの名無しさん (ワッチョイ 9ff0-STDj)
2023/07/08(土) 21:25:24.78ID:lX93SXsZ0
世の中には動的確保のコスト計算できない人が多すぎるんだ
449デフォルトの名無しさん (ワッチョイ bf79-CBkq)
2023/07/08(土) 22:15:45.40ID:gvv7KDv40
>>433
ちゃうちゃう、 new deleteのソースアセンブラに吐かせたの見たらGlobalAlloc GlobalFree使ってるわ
さすがにGMEM_FIXEDだったけど
450デフォルトの名無しさん (ワッチョイ d7f0-7EMH)
2023/07/09(日) 04:19:53.74ID:MkrAlSpi0
Windowsのメモリアロケータってクソだよな
451デフォルトの名無しさん (ラクッペペ MM8f-VHD8)
2023/07/09(日) 05:38:04.63ID:4tVwl4EYM
せやろか
452デフォルトの名無しさん (ワッチョイ ff7c-DxV6)
2023/07/09(日) 05:40:32.30ID:DZU7rHSU0
Win16からの色々を引きずってるってこと?
453デフォルトの名無しさん (ラクッペペ MM8f-VHD8)
2023/07/09(日) 05:53:12.10ID:xZgYfcZXM
引きずっているのはLocalAlloc
454デフォルトの名無しさん (オイコラミネオ MMeb-STDj)
2023/07/09(日) 07:55:31.77ID:wAJ5czLTM
なんとなくメジャーなものをけなして気持ちがよくなってるんだろ
楽だよなそういうので気持ちよくなれる人は
455デフォルトの名無しさん (ワッチョイ d7f0-7EMH)
2023/07/09(日) 09:27:34.88ID:MkrAlSpi0
メジャーだからって完璧に出来ているとは思わない方がいい
456デフォルトの名無しさん (ワッチョイ ff7c-DxV6)
2023/07/09(日) 09:33:30.46ID:DZU7rHSU0
反体制派な俺すげーだろって痛すぎる厨二病は昔からいるよね
457デフォルトの名無しさん (ワッチョイ f74e-STDj)
2023/07/09(日) 09:36:52.25ID:IdmutbDk0
具体的にどういう場面で問題があるのか、可能ならサンプルコードなどを添えて指摘してくれないと、同意しようがないよね
458デフォルトの名無しさん (ワッチョイ d7c0-SCup)
2023/07/09(日) 10:14:00.41ID:+WiQ27SB0
そりゃ様々な用途や優先すべき軸がある中で汎用的にあらゆる用途に高性能であれと言われたら
中庸にするか尖らせて特定用途で使い物にならなくなるかの二択になるよね
459デフォルトの名無しさん (ワッチョイ 9728-0TTi)
2023/07/09(日) 10:40:38.50ID:ihdHNtRI0
EXEで確保したしたメモリーブロックをdllで解放するときに(そんなことをするなというのはさておき
むしろmalloc()だとリンクするCRTのバージョン相違でトラブルになりかねないから
OSがmalloc()的なことまでしてくれるのは良い事な希ガス知らんけど
460はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f73e-kkOg)
2023/07/09(日) 10:57:36.03ID:6ZzBc/+b0
C++ なら operator new のオーバーロードなんかも出来るわけだし
コンテナ類もアロケータを差し込むことが出来るわけで
メモリアロケーションに関して過剰なほどのカスタマイズ性がある。

もちろん提供されるアロケータで性能が足りるならそれに越したことは無いが、
足りないときでもなんとかできる可能性があるってのは C++ のいいところだよ。
461デフォルトの名無しさん (ワッチョイ 9728-0TTi)
2023/07/09(日) 11:09:45.90ID:ihdHNtRI0
前なんかstd::vector<T>をdllに渡したら(コピー渡ししたら)クラッシュするトラブルに遭遇して
原因はC++のランタイムのバージョン相違やったorz
462はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f73e-kkOg)
2023/07/09(日) 11:44:01.32ID:6ZzBc/+b0
DLL を跨ぐときは生配列が結局は楽かなぁ。
他環境に移植する予定がないなら COM の流儀に従って SAFEARRAY とか。
463デフォルトの名無しさん (ワッチョイ d701-/+4S)
2023/07/09(日) 21:30:46.83ID:Y+7J8yUt0
アロケータを指定するときってのは性能どうこうではなく環境や設計上の理由が主だよ
それよりpolymorphic_allocatorはなんでコンテナのコピー時にget_default_resourceを返すんだマジで
464デフォルトの名無しさん (ワッチョイ 9701-gR7n)
2023/07/09(日) 21:44:31.99ID:r53YpIy/0
10年くらい前だけど6コア(12スレッド) x 双頭のマシンで
Debianのlibcのmallocをjemallocに置き換えたら
かなり速くなって感動したなぁ
いまのglibcのmallocはどうなんだろ?
465デフォルトの名無しさん (ワッチョイ 82f0-rqn1)
2023/07/15(土) 10:34:20.34ID:/MZbR2lO0
最近クラス作るのが面倒な時thread_localのstd::vectorよく使うんだけど
何か問題起きたりする?
466デフォルトの名無しさん (ワッチョイ e2f0-WYHp)
2023/07/15(土) 11:05:18.52ID:08dxROCJ0
問題を検証するコードを書いて実験してみれよ
一日で組めるだろ
467デフォルトの名無しさん (テテンテンテン MM34-Dvnh)
2023/07/15(土) 12:21:20.90ID:lF+Fe8GnM
>>466
それ悪魔の証明
468デフォルトの名無しさん (ワッチョイ 5cfb-cHdk)
2023/07/15(土) 14:11:00.47ID:bqZq+Kwu0
1日で組んだコードも合わせて技術ブログに記事を書くところまでがセット
469デフォルトの名無しさん (ワッチョイ 3279-EJzg)
2023/07/15(土) 14:24:56.68ID:V/XrAlYW0
よく使う割に問題が起きてないならそれは問題ないのでは
証明終わり
470はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bd32-2eqx)
2023/07/15(土) 14:38:32.48ID:e8BGem9r0
>>465
std::vector 型の変数がスレッドローカルとして定義されること自体は問題を引き起こさない。
スレッドローカルな変数はスレッドの生成・解放と同じタイミングで生成・解放される普通の変数。
それで問題が起こるなら単にプログラムのロジックに誤りがあるってだけ。
471デフォルトの名無しさん (ワッチョイ 915f-9/0y)
2023/07/15(土) 15:24:04.02ID:8R7I+TSs0
「クラス作るのが面倒な時」と「thread_localのstd::vector」の関連が見えないな。
472はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bd32-2eqx)
2023/07/15(土) 16:45:55.27ID:e8BGem9r0
>>741
std::thread は関数オブジェクトを受け取ることが出来る。
スレッドに固有、かつそのスレッド全体で使うようなデータは
その関数オブジェクトが所有するのが常道のひとつ。
しかしスレッドローカル変数もスレッドの寿命と一致する形でのデータ置き場になる。
そういう意味で代替品であると見做すことができる。

という話だと私は解釈したが、 std::vector がどこから出てきたかはわからん。
473はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9832-2eqx)
2023/07/15(土) 19:51:59.74ID:jZQsWptc0
コードで言うなら
https://wandbox.org/permlink/oZ8EAGChqPtobFuY
みたいにするのは面倒だから
https://wandbox.org/permlink/90mvVtrKUca4Iyic
でいいよね?

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

python界はすごいぞ
クラスに変数など作らずすべて辞書にぶち込んで使ってたりする
475デフォルトの名無しさん (オイコラミネオ MM71-9/0y)
2023/07/15(土) 20:19:33.71ID:UiYhW/dJM
a = {}
a['taro'] = {"name":"太郎","age":25, "sex":"男"}
a['hanako'] = {"name":"花子","age":18 ,six":"六"}
476デフォルトの名無しさん (ワッチョイ e2f0-WYHp)
2023/07/15(土) 20:24:16.88ID:08dxROCJ0
変数がすべてバリアントだからなw
477デフォルトの名無しさん (オイコラミネオ MM71-9/0y)
2023/07/15(土) 20:27:48.20ID:UiYhW/dJM
if a['taro']["age"] ==a['hanako']["age"]:

これって全然コード補完効かないから脳が死にかける
478デフォルトの名無しさん (オイコラミネオ MM71-9/0y)
2023/07/15(土) 20:32:21.17ID:UiYhW/dJM
name="name"
age="age"
sex="sex"
six="six"

とかしたらいいんか
if a['taro'][age] ==a['hanako'][age]:
嫌すぎる
479はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 163e-MI76)
2023/07/15(土) 20:42:45.70ID:oCSaktaG0
プログラマではない人間もユーザー層として存在するし
Python はそういう人間にもリーチしてしまったから
割合としてワヤなものもできやすいというのは理解できる。
480デフォルトの名無しさん (オイコラミネオ MM71-9/0y)
2023/07/15(土) 20:45:00.27ID:UiYhW/dJM
a['taro'] = {"name":"太郎","age":25, "sex":"男"}
だけ見るとjsonなのかとも思える
481デフォルトの名無しさん (JP 0H8a-PPvg)
2023/07/15(土) 21:13:09.66ID:2P0YU21lH
あるクラスにあるクラスのコレクションを抱かさせてるなんて良くあると思うけど
その際に外部からそのコレクションを参照したい場合、どうするのが定石なの?
class Datas
{private:std::vector<Data> _datas;};

publicにするとか、std::vector<Data>::iteratorをpublicにするとか
const Data& operator[](int index)をpublicにするとかいろいろあると思うけど
482デフォルトの名無しさん (オイコラミネオ MM71-9/0y)
2023/07/15(土) 21:18:25.83ID:UiYhW/dJM
ファーストクラスコレクションの話?
483デフォルトの名無しさん (ワッチョイ df01-L4gQ)
2023/07/15(土) 21:22:12.84ID:wfhnDtnz0
単数: datum
複数: data
484デフォルトの名無しさん (オイコラミネオ MM71-9/0y)
2023/07/15(土) 21:24:39.81ID:UiYhW/dJM
今日本屋で○○データムと言う本があった
DATAの単数形がdatumと言うことにこだわる大人って理系だけなんだろうなと感じたらこれだよ
即出て来た
485デフォルトの名無しさん (ワッチョイ df01-L4gQ)
2023/07/15(土) 21:35:08.39ID:wfhnDtnz0
datumに拘ってるのではなくdatasなんて言葉はない
486デフォルトの名無しさん (JP 0H8a-PPvg)
2023/07/15(土) 21:43:33.89ID:2P0YU21lH
そこか、英単語をぐぐったら解決しました。
ありがとうございました
487はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 163e-MI76)
2023/07/15(土) 21:58:55.40ID:oCSaktaG0
>>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;
}
}
488デフォルトの名無しさん (ワッチョイ df01-L4gQ)
2023/07/15(土) 22:04:51.15ID:wfhnDtnz0
>>481
privateメンバなのだから
できるだけ外部からそのコレクションを参照しないように設計するべきだと思うよ
どうしてもってならiteratorではなくconst_iteratorにするとか
あなたが書いてるようにconst Data&を返すaccessorを実装するとか
489デフォルトの名無しさん (ワッチョイ 847c-zIhc)
2023/07/15(土) 22:07:48.52ID:BdK15TwX0
"HogehogeData"という名前で定義されたプログラム上の存在があったら
その複数形はHogehogeDatasと呼ぶしかない
気持ち悪くてもしょうがないんだよ
490デフォルトの名無しさん (オイコラミネオ MM71-9/0y)
2023/07/15(土) 22:15:14.37ID:UiYhW/dJM
ファーストクラスコレクションにしないならその実装は不要だ
基本的に存在意味がない
491はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 163e-MI76)
2023/07/15(土) 22:20:38.51ID:oCSaktaG0
ワイはプログラミング言語 Scheme を使ってるんやが Scheme の仕様には datum という語が出てくる。
シリアライズの単位に関する概念なのでリストひとつも datum と (つまり単数形で) 呼ばれるのが
ちょっとモニョッとする。
492デフォルトの名無しさん (JP 0H8a-PPvg)
2023/07/16(日) 08:28:58.24ID:PzNRrLhAH
どうでもいいことを突っ込んでる人いますけど
Datas=>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Data=>aaaaaaaaaaaaaaaa
と置換してください
493デフォルトの名無しさん (アウアウウー Sa3a-ZX0e)
2023/07/16(日) 09:51:34.88ID:Po24/3Vva
hogehogetoyukainanakamatati
で解決
494デフォルトの名無しさん (ワッチョイ 3279-EJzg)
2023/07/16(日) 16:16:15.89ID:z7qY/utw0
powershellはJSONやxmlをその構造のまま扱えたりオブジェクト(PSCustomObject)にも変換できてpythonなんかより小奇麗に書けますよっと
>>478だとif ($a.tsaro.age -eq $a.hanako.age) { ... という具合
495デフォルトの名無しさん (ワッチョイ 3279-EJzg)
2023/07/16(日) 16:20:50.17ID:z7qY/utw0
powershellはC#とシームレスに連携する手段もあってpowershellで苦手な再帰処理とかをC#コードに逃がしてpowershell機能を使いたい部分はActionやFuncから呼び出す事もできますよっと
496デフォルトの名無しさん (ワッチョイ 3279-EJzg)
2023/07/16(日) 16:21:58.50ID:z7qY/utw0
よく見たらここC++スレだね
俺の事は忘れてください
497デフォルトの名無しさん (ワッチョイ 0928-rP6O)
2023/07/17(月) 18:33:54.32ID:mG7BHGLy0
質問なのですが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回コピーするという余デフォルト構築よりも遅そうな処理をするから
498はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 163e-MI76)
2023/07/17(月) 20:23:35.30ID:YifLUjyU0
>>497
resize だって再配置 (に付随するコピー) の可能性はあるんで
どっちでも大差ないんじゃないかな。
楽だと思うほうで書けばいいと思うよ。
499デフォルトの名無しさん (ワッチョイ 915f-9/0y)
2023/07/17(月) 21:47:09.31ID:I9Lq0d6Q0
>>497
無駄なデフォルトコンストラクタやコピーを削って極力ムーブで済ませようと思ったら
sz, k, n の大小関係ごとに場合分けして move_iterator 経由の insert とか使い分ければ
いけそうだけど、面倒なわりに見合うほど効率改善しそうな気はしない。
500デフォルトの名無しさん (ワッチョイ 82f0-rqn1)
2023/07/17(月) 22:08:16.87ID:kACYNrgv0
書き込みはそこまで遅くないから労力に見合わないだろうね
501デフォルトの名無しさん (スッップ Sd94-v8RM)
2023/07/17(月) 22:54:28.45ID:vqJJKRdWd
速度を気にするなら実測しないと始まらないよ。
502デフォルトの名無しさん (ワッチョイ ae7a-CYkg)
2023/07/17(月) 23:18:54.88ID:vGotTgNV0
リアルタイムOSのタスクのように無限ループが前提のとき

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

そうなると自作でないクラスのメソッドは使う前にnewの有無をすべて調べなければならなくなるように思います。
実際はそんな不条理はないはずで、このような問題はどう対処するのがいいですか。
503デフォルトの名無しさん (ワッチョイ df01-L4gQ)
2023/07/17(月) 23:25:49.78ID:CT+u9aWW0
>>502
自作でないクラスのメソッドは使う前には
メソッドが消費するメモリを見積もらなければなりません
不条理でも何でも無い
504デフォルトの名無しさん (ワッチョイ 0928-rP6O)
2023/07/17(月) 23:34:05.22ID:mG7BHGLy0
わかりました
505デフォルトの名無しさん (ワッチョイ 82f0-rqn1)
2023/07/17(月) 23:42:05.60ID:kACYNrgv0
自作でないクラスでも使う関数がメモリ動的確保するかどうか普通は確認するぞ
506デフォルトの名無しさん (ワッチョイ 0928-rP6O)
2023/07/17(月) 23:46:35.71ID:mG7BHGLy0
>>502
>GetObjが内部でnewされていると、この作りではいつかメモリ不足になってしまいます。
この懸念は普通の作りなら基本的に無用。基本的に問題無い

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

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

詳しい話ははちみつ餃子氏に聞くと良い(マテ
508デフォルトの名無しさん (ワッチョイ 0928-rP6O)
2023/07/17(月) 23:58:52.90ID:mG7BHGLy0
訂正orz、
誤: ループの終わりでデストラクタが呼ばれる(破棄される)から、(>>506
正: ループが次の繰り返しに入る前かループを抜ける際にデストラクタが呼ばれる(破棄される)から
509デフォルトの名無しさん (ワッチョイ 847c-8c0A)
2023/07/18(火) 00:04:09.43ID:yoLqrsJ/0
>>502
必要ならそのGetObj()とやらのドキュメントにDevice::ReleaseXyz()とかDevice::ReleaseObj(obj1)とかobj1.release()とかを後で呼ぶように指示されてるはず
それを怠ってリークさせたならお前がタコ
そういう指示がないくせに勝手にリークするならそのライブラリがタコ
そんだけの話
510はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 163e-MI76)
2023/07/18(火) 00:16:34.06ID://OyAtPF0
そして使い方がドキュメント化されてないなら組織として問題がある。
が、そういう話はマ板で。
511502 (ワッチョイ ae7a-CYkg)
2023/07/18(火) 00:38:24.79ID:ibbV/iYr0
皆さんありがとう。
>>506
ブロックスコープは知りつつも、ループのブロックの場合はループ中は寿命が継続すると思っていました。
ループ時に毎度後始末されるなら安心です。
512はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 163e-MI76)
2023/07/18(火) 01:05:37.37ID://OyAtPF0
>>511
根拠。
https://timsong-cpp.github.io/cppwp/n3337/basic.stc.auto
513デフォルトの名無しさん (ワッチョイ 3279-EJzg)
2023/07/18(火) 02:17:55.25ID:BpIlHiPB0
組み込み用途のライブラリで毎回ループ終端でデストラクタが呼ばれるように普通は設計しないから大丈夫
疑わしいならベンダーに問い合わせるかライブラリのソースを読めば解決
514デフォルトの名無しさん (ワッチョイ b632-bpoS)
2023/07/21(金) 16:52:12.91ID:PleiVI860
ちょいとコイツを見て欲しい。MSVC 14.36.32532でC++17かつセキュリティチェック無効(/GS-)

C++相談室 part164 YouTube動画>1本 ->画像>5枚

最小コードで再現するために、コマンドライン文字列を変な形式として扱ってるのは置いといて
変数rSizeが、引数argcのスタック領域(ebp+8)に割り当てられるんだけど、こんな最適化ある?
確かにargcは用済みだが、レジスタやローカルスタックではなくcdeclのconst引数にストアする?
515デフォルトの名無しさん (ワッチョイ 5cfb-MzNP)
2023/07/21(金) 16:56:19.42ID:LKM5BaGE0
そんなことよりbooost向けの技術書について教えてくれ
516蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd94-5KMR)
2023/07/21(金) 18:04:39.14ID:GfD0zzOHd
そんな最適化あるよ。長期に渡って解析やってたらときどき出くわすよ。
517デフォルトの名無しさん (ワッチョイ 82f0-rqn1)
2023/07/21(金) 18:26:11.73ID:eD9pKuA20
ADLについて初めて知ったのがboost::mathだった懐かしい
518デフォルトの名無しさん (ワッチョイ 847c-8c0A)
2023/07/21(金) 20:33:22.11ID:9+qEAU5C0
観測可能な範囲で規格通りの挙動をする限りは、コンパイラ様はどんなバイナリを吐こうとどんな風にメモリやレジスタを扱おうと自由なのだ
519デフォルトの名無しさん (ワッチョイ a728-Nt2/)
2023/07/22(土) 11:54:04.91ID:1sMnnOgP0
if文の条件式のところにがっつり文が書かれてゐる
最後の式の値が結果、とかますますPerl的世界に……
そのうち値を返す関数もreturn書かなくて良くなったりして……
520デフォルトの名無しさん (ワッチョイ 473e-8suU)
2023/07/22(土) 12:15:40.55ID:QLIAp4G50
>>519
任意の文を書けるわけではなく単純宣言に限られる。
521デフォルトの名無しさん (ワッチョイ 0710-XcQ/)
2023/07/22(土) 13:25:58.60ID:uVFJqD+w0
うん。なんか「見てくれ」とか言うから見たけどサンプルとしてもしょーもないコードだなと思って
一度コメントしかけてやめた
windowsのxx仕様 独自mainとか
522デフォルトの名無しさん (ワッチョイ 0710-XcQ/)
2023/07/22(土) 13:27:45.64ID:uVFJqD+w0
自分が本当に答えを知りたいんじゃなくて、フレームというか、言い争いを起こして面白がりたいのかな、とか
523デフォルトの名無しさん (ワッチョイ a728-Nt2/)
2023/07/22(土) 15:21:09.39ID:1sMnnOgP0
やっぱ
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のようなことも当然するキモス
※ 個人の感想です
524デフォルトの名無しさん (ワッチョイ a728-Nt2/)
2023/07/22(土) 15:31:39.00ID:1sMnnOgP0
ていうか補足、
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
525デフォルトの名無しさん (ワッチョイ a728-Nt2/)
2023/07/22(土) 15:33:20.61ID:1sMnnOgP0
しかしわからんのは
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が同じアドレスに割り当てられ得るのかどうかわわからん……
526デフォルトの名無しさん (ワッチョイ a728-Nt2/)
2023/07/22(土) 15:41:23.03ID:1sMnnOgP0
ゴメ自己解決しますたorz
527デフォルトの名無しさん (ワッチョイ 5f32-vVS+)
2023/07/22(土) 17:02:04.17ID:lBkog51W0
スコープを抜けたローカル変数であれば順当な割り当てに思えるのだけど
>>514が差し支えるのはコードインジェクションで引数を使い回すとかの横着
さりとてトップレベルのconstやvolatileは関数シグネチャに現れない訳で
cdeclであろうと引数の寿命は関数を抜けるまでだろうから極めて妥当なのか?

14.27.29110ではやらず、スタック量は逆に増え…増えたから節約してるのか
rbp+なら…いやそれも引数用スタック。C++20でvolatile非推奨化は有ったが
volatile引数への代入も引数スタックへの書き込みと思っちゃならんのかな
528はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 473e-pcwf)
2023/07/22(土) 18:07:10.54ID:QLIAp4G50
>>527
言いたいことがあるなら独り言を書くんじゃなくて説明しろ。
529デフォルトの名無しさん (ワッチョイ bf42-vVS+)
2023/07/22(土) 18:59:44.13ID:h3Z+iL0O0
>>528
どの部分ですか?rbp+のくだりならx64であればシャドウストアを呼び出し元が確保する事になっているので
引数へ代入以外でもrbp+に書き込まれるが、それにしたって引数の退避以外で行われるかという意味だけど

またこの最適化が適正だとすれば引数へconstを指定しても
それは引数の格納元が書き換わらない事を意味しない訳で
volatileにしても引数スタックと同一視は出来ないのかなと
530デフォルトの名無しさん (テテンテンテン MM8f-TfYz)
2023/07/22(土) 19:01:30.20ID:gun3EJ7PM
>>519
resultは欲しいね。
531デフォルトの名無しさん (ワッチョイ 875f-UuLb)
2023/07/22(土) 19:08:50.81ID:nQhdUCcc0
とりあえずcallee-savedとcaller-savedあたりでググってこい
532デフォルトの名無しさん (ワッチョイ 473e-8suU)
2023/07/22(土) 19:21:42.17ID:QLIAp4G50
>>529
技術的な意味合いじゃなくてね、
それをのべてどうしたいのってことだよ。
疑問なのか?主張なのか?感想なのか?
533デフォルトの名無しさん (ワッチョイ bf79-mRrB)
2023/07/22(土) 23:38:20.21ID:a8PwsTyx0
これだけは言っておく
文章が下手糞はプログラミングも下手糞ってことだ
534デフォルトの名無しさん (ワッチョイ dff0-lmMR)
2023/07/22(土) 23:53:10.56ID:31w2/Kbx0
久々にヤバい変数名を見た
>>525
このクソみたいな変数名はおまえが考えたのか
535はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 473e-pcwf)
2023/07/23(日) 01:23:57.19ID:3Ckw8KVE0
>>533
母語で説明できないようならプログラマには向いてないとかいう意味のことをダイクストラが言ってたな。

普通の人は母語が最も得意なはずだからそれで表現できないのに
プログラミング言語でなら表現できるってことはないのは道理というものだ。
536デフォルトの名無しさん (スップ Sd7f-d+yq)
2023/07/23(日) 07:00:15.87ID:TPcdF2Bwd
二、三個違えて大域変数切って火に油注ぎたくなるやつ
537デフォルトの名無しさん (ワッチョイ dff0-FYg4)
2023/07/24(月) 22:04:55.27ID:7/Qlh6bu0
さんざん言われてるけど質問文きちんと書ける人はChatGPTで自己完結しちゃうんだよな
538デフォルトの名無しさん (ワッチョイ a728-Nt2/)
2023/07/25(火) 00:09:45.61ID:ngER/Udx0
ゴメス>>524はリリースビルドしたら全部同じアドレスになったわ;;;
やっぱ握った変数なりオブジェクトなりのアドレスを
その変数なりオブジェクトなりの寿命が尽きた後に
使おうとするのは未定義動作であることだなあ、
539デフォルトの名無しさん
2023/07/25(火) 03:57:53.89ID:YH2RVZct0
俺には>>524がなんでそんな結論になるのか分からんのだが
for内で i を宣言してるんだからfor のスコープを持つローカル変数だろ?
int が4バイトの前提で言えば for 突入時に int i をスタック上に確保(スタックポインタを4バイトマイナス)して for 離脱時に int i の領域を解放(スタックポインタを4バイトプラス)する
この繰り返しなんだから int i や int ii のアドレスが同じになることに疑問を挟む余地がないと思うんだけど
何がおかしいのか俺にはさっぱり分からん
540デフォルトの名無しさん (アウアウウー Sa2b-tGd7)
2023/07/25(火) 09:19:21.66ID:k8WJtY+Ua
for の i がローカルになったのは最近
グローバルに盛れるコンパイラ環境は巷に溢れていた
541デフォルトの名無しさん (アウアウウー Sa2b-tGd7)
2023/07/25(火) 09:19:57.50ID:k8WJtY+Ua
盛れるじゃなかった
漏れる
542はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 473e-pcwf)
2023/07/25(火) 11:10:04.37ID:akUn9hsS0
>>540
最近っていつ頃のことだ?
543デフォルトの名無しさん (ワッチョイ dff0-POqA)
2023/07/25(火) 11:32:44.39ID:YIf2r9Dz0
#define for if(0) else for
544デフォルトの名無しさん (ワッチョイ dff0-POqA)
2023/07/25(火) 11:34:38.41ID:YIf2r9Dz0
間違えた
#define for if(0) {} else for
これでゾンビiよく消してた
545デフォルトの名無しさん (ワッチョイ 0710-PxlL)
2023/07/25(火) 12:01:03.86ID:RkQ0FrMx0
>>544
ごめん、まじめに教えて
これ何の意図?

これに意味がある具体的なコンパイラって何の何version?
546デフォルトの名無しさん (ワッチョイ dff0-POqA)
2023/07/25(火) 12:08:13.03ID:YIf2r9Dz0
VC++6.0という大昔にデファクトスタンダードだったコンパイラだ
547デフォルトの名無しさん (ワッチョイ 0710-PxlL)
2023/07/25(火) 12:10:00.81ID:RkQ0FrMx0
>>546
ほんとにごめん、何の意味があるの?
548デフォルトの名無しさん (ワッチョイ dff0-POqA)
2023/07/25(火) 12:12:51.37ID:YIf2r9Dz0
例外飛ばすと自動変数の破棄全部ふっ飛ばして戻ってくる酷いポンコツだったな
よくこんなの皆つかってたなというかコレしかなかったからな
549はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 473e-pcwf)
2023/07/25(火) 12:13:49.52ID:akUn9hsS0
>>545
for の初期化節で変数宣言した場合にその外側のブロックがスコープになるコンパイラが存在し、
その対抗策としてこういうマクロを導入するという方法があったという話だろ。
550デフォルトの名無しさん (ワッチョイ dff0-POqA)
2023/07/25(火) 12:14:32.19ID:YIf2r9Dz0
>>547
意味がわからないなら知らなくていい
当時を知らないなら理解しようとするだけ無駄というもの
551デフォルトの名無しさん (ワッチョイ 0710-PxlL)
2023/07/25(火) 12:24:31.68ID:RkQ0FrMx0
>>549
ありがとう、そしてありがとう

>>548
VC6がポンコツは同意。
あのころMSはディンカムウェアからstd c,c++ ライブラリを買って導入してたけど、そもそもc++の仕様準拠がメチャクチャだったと認識してます
もうVC使わなくなって長いので気にしなくなった
552デフォルトの名無しさん (ワッチョイ 0710-PxlL)
2023/07/25(火) 12:39:41.95ID:RkQ0FrMx0
『for内スコープ』の仕様にvc6は未対応だ、という事実を認識し
責任者がvc6を選択した案件で納品する

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

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

VC の出来が悪かったのは事実だと思うが
スコープルールに関しては互換性を是とするウィンドウズの価値観に合わせて
意図的に変更を遅らせたのだと思う。
554デフォルトの名無しさん (ワイーワ2 FF9f-fo+T)
2023/07/25(火) 14:00:38.34ID:uSv6E5akF
いと懐かしき
555デフォルトの名無しさん (ワッチョイ 8702-Jlgx)
2023/07/25(火) 14:23:07.06ID:kV+p+cpE0
Visual C++ 6.0がリリースされたのが1998年じゃん
25年前じゃん。全然最近じゃないじゃん
遠い過去のことをつい最近って話すのはやめてほしいね
556デフォルトの名無しさん (ワッチョイ a701-Fb4F)
2023/07/25(火) 14:31:50.00ID:MikqYz6X0
>>555
だまれ小僧! 最近じゃよ
557デフォルトの名無しさん (ワッチョイ df32-8suU)
2023/07/25(火) 14:44:27.15ID:vokyohz+0
20年くらいまえのソースコードだったら
読む機会がないわけでもないからなぁ。
最近と言えるかどうかはともかくとして
経緯を知っておくに越したことはない
558デフォルトの名無しさん (アウアウウー Sa2b-QKap)
2023/07/25(火) 14:44:43.95ID:iTChcdyRa
25年前に30代だった人の多いスレ
559デフォルトの名無しさん (ラクッペペ MM8f-pwGU)
2023/07/25(火) 14:54:13.97ID:218oSqZIM
現役世代なら25年前なら20代
560デフォルトの名無しさん (ワッチョイ a701-Fb4F)
2023/07/25(火) 14:55:29.80ID:MikqYz6X0
だまれ小僧ども!
561デフォルトの名無しさん (ワッチョイ dff0-FYg4)
2023/07/25(火) 16:16:06.83ID:uXZxGhnB0
おじいちゃんかな入力使ってそう
562デフォルトの名無しさん (ワッチョイ 473e-8suU)
2023/07/25(火) 16:50:53.20ID:akUn9hsS0
リアルで トントカイモ をやったことある世代だわ……
563デフォルトの名無しさん (ワッチョイ 0710-PxlL)
2023/07/25(火) 20:33:32.87ID:RkQ0FrMx0
>>560
そこは
黙れ小僧、お前にSUNが救えるか!
じゃないの?

sunのccって何だっけ

でも個人的にはc++ユーザなら2014年以降の話をして欲しい
564デフォルトの名無しさん (ワッチョイ bf79-mRrB)
2023/07/25(火) 21:15:39.67ID:2EbZvvbp0
(昔話うぜー)
565はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 473e-pcwf)
2023/07/25(火) 21:54:33.88ID:akUn9hsS0
>>563
古い規格に基づいたコードが消滅しているならそれでもいいけどさ。
566デフォルトの名無しさん (ワッチョイ a728-Nt2/)
2023/07/25(火) 22:52:02.65ID:ngER/Udx0
>>539
アドレスをとったらメモリエリアシング除けで最適化が抑止される
そう思っていた時期が僕にもありました先週
567はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 473e-pcwf)
2023/07/25(火) 23:10:43.20ID:akUn9hsS0
アドレスとエイリアスは別枠なんだわ。
ポインタを数値として表示させると同じなのに == で比較すると偽値 (エイリアスではない) ということがあり得る。
pointer provenance の概念について調べてみると面白いかもね。
568デフォルトの名無しさん (ラクッペペ MM8f-pwGU)
2023/07/26(水) 07:52:30.48ID:Ymbp6+unM
古いコードに執着しはじめるならもういい加減引退した方がいい
569はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 473e-pcwf)
2023/07/26(水) 13:05:53.40ID:Z/zSkMd/0
>>568
誰かが書き換えなきゃ新しくはならんのだぞ。
570デフォルトの名無しさん (ラクッペペ MM8f-pwGU)
2023/07/26(水) 14:04:23.46ID:nSMXTC2xM
まったく無いとは言わないが20年以上も昔のコードを弄る機会って実際どれくらいあるのか
あまりに不毛な主張だろう
571デフォルトの名無しさん (ワッチョイ dff0-POqA)
2023/07/26(水) 14:22:14.82ID:x/JHBN7Z0
>>129
これが実現出来ればそういう心配事も無くなるんだがな
572はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 473e-pcwf)
2023/07/26(水) 14:24:26.98ID:Z/zSkMd/0
ちなみに俺は少なくとも C++11 以降だろ (C++20 は時期尚早かもしれない) 派だし
趣味でプログラミングしているから実務現場はわからない。
でも確実に 20 年前くらいのコードは生きてるよ。
質問サイトで (古いコードの意味について尋ねる質問に対して) 歴史的な事情を説明したことは何度もあるから。
それが割合としてどんくらいかというと確かに少なくはあると思うが……。
573デフォルトの名無しさん (ワッチョイ 0710-PxlL)
2023/07/26(水) 17:59:22.96ID:EGwoK+U90
11は妥当かも。新しいauto は11から一部、で14で増えた訳よね
C++の仕事で、例えばauto使ったらダメって言われたら、工エエェェ(´д`)ェェエエ工 アンタ達何でCじゃなくてC++使ってるん?てならんか

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

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

新規は14以上、保守は11以上、は妥当かもね
574デフォルトの名無しさん (テテンテンテン MM8f-TfYz)
2023/07/26(水) 20:17:04.26ID:zBy57xkKM
動的に重たい機能(例外とか)を取り除いたembeded c++に再チャレンジしてほしいわ。

c with structure and template くらいの。
575デフォルトの名無しさん (ワッチョイ 077c-N/av)
2023/07/26(水) 20:27:29.80ID:qeWM+gpE0
また禿に死ぬべきだって言われるだけだぞ
576デフォルトの名無しさん (ワッチョイ dff0-FYg4)
2023/07/26(水) 20:36:31.16ID:J6WrB9lP0
俺も趣味でしか使ってないけど、OSSのメンテやってる外人がCで書かれたコードのこと
クソの山と呼んでるのを見かけてみんなそう思ってると信じちゃった
577デフォルトの名無しさん (ワッチョイ a701-Fb4F)
2023/07/26(水) 20:45:03.48ID:T1zuvG990
「クソの山」って英語で何ていうの?
578デフォルトの名無しさん (ワッチョイ dff0-4APs)
2023/07/26(水) 20:47:33.68ID:e36yYIxR0
>>577
stacked shit
ソースはフルメタル・ジャケット
579デフォルトの名無しさん (ワッチョイ a701-Fb4F)
2023/07/26(水) 21:11:20.60ID:T1zuvG990
My intestine is a kind of FIFO.
580デフォルトの名無しさん (ワッチョイ 0720-rRCM)
2023/07/26(水) 21:14:18.52ID:4fMh7lxL0
bullshit
581デフォルトの名無しさん (ワッチョイ 473e-8suU)
2023/07/26(水) 21:21:43.95ID:Z/zSkMd/0
>>576
現実がクソなんだよ。
それでもコードにしなきゃならないところ(低レイヤとか速度がいるところとか言語を跨ぐインターフェイスとか)でCが使われるから必然的にクソになる。
他の言語で書いたところでたぶんクソだぞ。
582デフォルトの名無しさん (オイコラミネオ MM3b-nVDU)
2023/07/26(水) 22:07:29.96ID:iOxX8HKcM
自分としては古いC++のコードの方がクソの山に見える
Cはまだまし
583デフォルトの名無しさん (ワッチョイ 6701-I2OL)
2023/07/26(水) 22:16:26.68ID:jPIzcFjy0
5chからの新しいお知らせは、他の板には出ないんだな
584デフォルトの名無しさん (ワッチョイ 67c0-CvEJ)
2023/07/27(木) 04:04:24.35ID:QeVlkja60
古い事自体は悪い訳ではないよね
質が低いけど影響範囲が大きくて修正されずに生き延びてる糞コードが悪いだけで
585デフォルトの名無しさん (ワッチョイ bf9a-0/k/)
2023/07/27(木) 09:00:04.57ID:zEDi2bcm0
>>578
stackだけだと積むというだけで高さはわからないような
they stacked shit that highというのが原文
586デフォルトの名無しさん (アウアウウー Sa2b-QKap)
2023/07/27(木) 09:00:15.65ID:GoQM94Wca
>>582
ほんそれ
+1
587デフォルトの名無しさん (ワッチョイ 8702-Jlgx)
2023/07/27(木) 09:39:10.27ID:4LOg1fU50
>>576
PythonとかJavaScriptだけの世界に生きてる人たちはC++はクソとか言ってそうな気がする
588デフォルトの名無しさん (アウアウウー Sa2b-QKap)
2023/07/27(木) 09:49:28.34ID:GoQM94Wca
実際C++は糞だと思う
Cの方がマシ
589デフォルトの名無しさん (ワッチョイ a701-Fb4F)
2023/07/27(木) 10:16:37.98ID:+SEMblDr0
VCでビルドしたC++ライブラリって
mingwでビルドしたオブジェクトファイルとリンクできないよね?
Cライブラリだとできるけども
590デフォルトの名無しさん (ワッチョイ 0710-IJmj)
2023/07/27(木) 10:25:00.16ID:uqLQvp0Q0
c++だとマングリングの規則がコンパイラごとに違うから無理なはず
591デフォルトの名無しさん (ワッチョイ a701-JYYx)
2023/07/27(木) 10:37:09.86ID:+SEMblDr0
>>590
ありがとうございます
592はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 473e-pcwf)
2023/07/27(木) 11:15:58.50ID:p+3LvAw40
COM の規約で運用するという方法もあるけど割とめんどい
593デフォルトの名無しさん (ワッチョイ a701-Fb4F)
2023/07/27(木) 12:11:09.64ID:+SEMblDr0
C++ライブラリとCライブラリの両方があったので
素直にCライブラリの方を使うことにします
594デフォルトの名無しさん (アウアウウー Sa2b-4APs)
2023/07/27(木) 14:18:54.70ID:SGfMLUd3a
>>585
その原文の訳が「まるでそびえ立つクソだ!」だからhighly stacked shitあたりだろうけど、あれはハートマン軍曹という異常者の語彙だから、多分pile of shitなんかの方が一般的かもね
595デフォルトの名無しさん (ワッチョイ 7ffb-p1qB)
2023/07/27(木) 21:44:21.80ID:alYzqiaL0
msvcからmingwに移行しようと思い、7zを展開したらディフェンダーちゃんが反応したので何かと思ったら
596デフォルトの名無しさん (ワッチョイ 473e-8suU)
2023/07/27(木) 22:58:54.41ID:p+3LvAw40
実行ファイルを生成するものは割りとひっかかる
597デフォルトの名無しさん (アウアウウー Sa2b-QKap)
2023/07/28(金) 10:55:13.63ID:Zgvcm9f5a
7zを展開する前にファイルをExoplorerから右クリックで開いて
ディフェンダー無効にしてから展開するだけだろ
598デフォルトの名無しさん (スップ Sd7f-HOej)
2023/07/28(金) 13:11:52.02ID:6yxKL9JFd
Defenderに無害認定されるまで戦い続けるマ?
599デフォルトの名無しさん (ワッチョイ dff0-FYg4)
2023/07/28(金) 13:58:16.94ID:AMhr/ZcZ0
どういう設定でコンパイルしたら有害認定されるかむしろ知りたいわ
600デフォルトの名無しさん (ワッチョイ 2705-TI2y)
2023/07/28(金) 20:53:22.55ID:nOGNEf1T0
oss物は使ってくれるなというms様のお達し?
601デフォルトの名無しさん (ワッチョイ a701-Fb4F)
2023/07/28(金) 21:03:20.13ID:iCEYdRhP0
wslでLinux飲み込んだのに?
602デフォルトの名無しさん (ワッチョイ 473e-8suU)
2023/07/28(金) 21:12:30.62ID:yKS6EUDz0
そういや従量課金回線むけに通信量を制限するソフトを入れたら
通信を阻害するマルウェアとして検出されたことがある。
解釈によってはそりゃそうだと思うし、
セキュリティツールは疑陽性が増えてでも偽陰性を
減らす方向に調整するのはしょうがないんじゃねーの
603デフォルトの名無しさん (ワッチョイ 8f9c-JfPF)
2023/07/29(土) 01:25:10.10ID:eLz5SM1d0
マイクロソフトとしてはストアアプリとして配信して欲しいんだろうね
ZIPなどの野良アプリ配布は不遇の時代よ
604デフォルトの名無しさん (ワッチョイ bec3-B8t3)
2023/07/29(土) 01:41:06.31ID:mO2Fj1W+0
テレメスパイウェアage
605デフォルトの名無しさん (アウアウウー Sa1f-6+wX)
2023/07/30(日) 09:49:16.34ID:azQXcNDBa
>>599
コンパイル後のexeがなぜか毎回消える問題は何かのバージョンで過去にあった
606デフォルトの名無しさん (ワッチョイ befb-LsOw)
2023/07/30(日) 11:40:03.78ID:/52qmc2G0
>>605
恥ずかしがり屋め//
607デフォルトの名無しさん (ワッチョイ 2679-ntsF)
2023/07/30(日) 19:58:32.07ID:cURCmIiS0
Defender様はOS内蔵のC#で作ったexeも容赦なく消してくるぞ
名前が他と被ってたり変な場所に置いたりしてると割と起こる
608デフォルトの名無しさん (ワッチョイ 2301-9pon)
2023/07/30(日) 23:32:06.49ID:Phugis3j0
初期化していない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)
609デフォルトの名無しさん (ワッチョイ d35f-X/lp)
2023/07/30(日) 23:50:56.20ID:1/o7VgXA0
>>608
どちらも事前条件違反での未定義動作の結果。
「0として扱う」と定められているわけじゃない。
boost が assert で止めてくれているのは親切。
610デフォルトの名無しさん (ワッチョイ 2301-9pon)
2023/07/30(日) 23:58:13.09ID:Phugis3j0
boostの方が親切ですよね
何でstdでなくしたんでしょ?
611デフォルトの名無しさん (ワッチョイ 2301-9pon)
2023/07/31(月) 00:15:55.53ID:ulrQSEBD0
stdはパフォーマンスを気にしたんでしょうかね?
612デフォルトの名無しさん (ワッチョイ 8f7c-xLd3)
2023/07/31(月) 00:17:50.97ID:kuDsfsru0
未定義動作をどうしようとコンパイラの勝手
613デフォルトの名無しさん (ワッチョイ 2301-9pon)
2023/07/31(月) 00:42:57.84ID:ulrQSEBD0
>>612
boostでは初期化済みかどうかを確認していたのを
stdでなぜ確認を外したのか?って問いになります
>>611に書いたようにパフォーマンスってこでしょうかね?
614デフォルトの名無しさん (ワッチョイ d35f-X/lp)
2023/07/31(月) 01:10:19.51ID:cE0Z6rmj0
>>613
std::optionalの仕様がboost::optionalを参考にしたのは確かだろうけど、
std::optionalの実装はboost::optionalの実装をもとにしたわけじゃないだろうから、
不要なチェックが無い状態でむしろ自然。
何か意図を持って「なくした」「外した」などという事実がおそらく無い。
仮に意図的だったとして、ここで誰かがその質問にyes/noを答えても本当かどうかはわからない。
どうしても気になるならライブラリ実装者に聞くべき。
615デフォルトの名無しさん (ワッチョイ 2301-9pon)
2023/07/31(月) 02:06:40.22ID:ulrQSEBD0
仕様はboostが元になっているのは間違いないので
規格に入れるときになぜこれを変えたのか理由が分かればなと考えました
proposal追ってる人でご存知の方がいればなと思いましたが
自分でも読んでみます
616デフォルトの名無しさん (ワッチョイ d35f-X/lp)
2023/07/31(月) 03:26:45.40ID:cE0Z6rmj0
>>615
仕様はどちらも事前条件違反での未定義動作で、変わってない。
なので仕様について調べてもおそらく答えは出ない。
assertの有無は実装の範疇。
617デフォルトの名無しさん (ワッチョイ a6a4-2Bsr)
2023/08/02(水) 01:27:09.22ID:UwRg95UI0
プログラミングの面接を受けた。言語は何でもいいというので今使ってるC++で予め申請。
ロジックを問う問題なので言語で差はつかない、という話... だったが実際は文字列処理
の問題が多く、これはスクリプト系とかの方が有利じゃないか

C++にはなんで文字列のsplit系はないんだろ。どうしてます? <- あ、これが雑多な質問w
618デフォルトの名無しさん (ワッチョイ a6a4-2Bsr)
2023/08/02(水) 01:29:42.76ID:UwRg95UI0
ちなみに自分は以前Pythonを使っていた時期もJavaを使っていた時期もあるけど
今は頭が「C++脳」になっている気がして、とっさにそれらを使うとなると不安を感じたのだった
やはり常日頃から他の言語も回しておくべきだろうか
619デフォルトの名無しさん (ワッチョイ a6a4-2Bsr)
2023/08/02(水) 01:31:05.25ID:UwRg95UI0
マ系の話かもしれないですね、すみません
620デフォルトの名無しさん (ワッチョイ 4af0-0TAO)
2023/08/02(水) 01:45:10.69ID:JKibevwe0
次の問題でグラフにプロットしろとか言われそうだなw
621デフォルトの名無しさん (ワッチョイ b73e-4j5P)
2023/08/02(水) 01:58:11.71ID:Vhf3uqZN0
>>617
普通は申告した技能に嘘がないことを確かめるのが
面接の主な目的であって
正解率に意味があるような試験ではないよ。
622デフォルトの名無しさん (ワッチョイ 33d6-cK++)
2023/08/02(水) 06:20:23.71ID:NkBPLpHI0
>>617
istringstream と getline を使えば、区切られた文字を順番に取り出せる。
空白文字区切りなら、getline の代わりに >> が使える。

https://maku77.github.io/cpp/string/split.html
623デフォルトの名無しさん (アウアウウー Sa1f-IPSQ)
2023/08/02(水) 09:31:21.06ID:4pI1Wfnva
>>617
C/C++でそれが出来て初めて「C/C++が使えます」って言えるんだ
624デフォルトの名無しさん (ワッチョイ befb-LsOw)
2023/08/02(水) 09:36:40.40ID:y1hozJP20
1つの言語で覚えたあたらしい機能を実現するのに他の言語ではどう書く?って感じで比較しながら書くと記憶が精緻化しやすく忘れにくくなる
625デフォルトの名無しさん (アウアウウー Sa1f-IPSQ)
2023/08/02(水) 10:22:30.40ID:4pI1Wfnva
>>618
「C++脳」
良く言えるな
C++も不安だらけじゃないか
626デフォルトの名無しさん (ワッチョイ befb-LsOw)
2023/08/02(水) 12:38:15.38ID:y1hozJP20
コーディングテストのはずがメインメソッド作ってって言われたときはこちらからお断り申し上げたことがある
627デフォルトの名無しさん (ワッチョイ befb-LsOw)
2023/08/02(水) 12:43:22.62ID:y1hozJP20
チンチンシュッシュシュですわ
628デフォルトの名無しさん (ワッチョイ 4b9a-2Bsr)
2023/08/03(木) 09:24:52.48ID:lr2Ednh70
>>625
あ、別にC++が得意という意味でなく、それ以外の言語を使うとき頭がすぐに切り替わらない、
というぐらいの話で

結局そのとき自分は文字をチェックして区切り文字の位置を調べてstring.substr()で切り出し
vector<string>に追加というベタな感じを。でも他の言語でsplit()を呼んで終わりなのと比べると
無駄に焦ったと思われ >>622はすっかり忘れていた
629デフォルトの名無しさん (ワッチョイ 6af0-PvkJ)
2023/08/03(木) 09:35:40.45ID:IPuBCl990
自分で作れよw
簡単だろ
630はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b73e-yh3V)
2023/08/03(木) 09:36:19.80ID:HBD/4AdY0
>>628
C++20 以降なら std::views::split を使えるよ。
631デフォルトの名無しさん (ワッチョイ befb-LsOw)
2023/08/03(木) 20:08:30.72ID:IJZbd6wk0
>>628
c++がマニアックなのはまぁわかる
他の言語に切り替わらないっていうのは鍛錬不足じゃあ無いのかね
c++で書いたものを見ながら別の言語に書き換えるっていう作業の時間が足りてないんじゃない?
632デフォルトの名無しさん (ワッチョイ 43a5-IPSQ)
2023/08/04(金) 21:09:58.67ID:5lu3SOws0
プリプロセッサディレクテブでマクロを組む方法はないでしょうか?
#ifndef XX
#define XX 1
#endif

define_default (XX, 1); <-こんな感じにマクロ化したい
633デフォルトの名無しさん (ワッチョイ 7510-oj1Z)
2023/08/05(土) 01:51:28.51ID:L/LBNngA0
🤔…(こんな感じとは?)
634デフォルトの名無しさん (ワッチョイ 7510-oj1Z)
2023/08/05(土) 02:15:04.78ID:L/LBNngA0
スマン言いたい事分かった

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


本当にやりたいであろう事(定数定義の記述に定形があって煩雑なのをシンプルに書きたい)なら、私なら別の方法でやる、けどそれは聞かれてないよね
635デフォルトの名無しさん (スッップ Sd2f-YWx9)
2023/08/05(土) 09:38:26.20ID:wvUeqD5zd
定義をマクロ定義する事はできないよ
都度意味を変えてincludeで読み込ませるとか
636デフォルトの名無しさん (ワッチョイ 4f7c-HETv)
2023/08/05(土) 10:20:09.70ID:9rqysa6s0
よく分からんがC++の範疇じゃなくてcamkeとかコンパイラオプションでやる事っぽく見える
637デフォルトの名無しさん (ワッチョイ 31a5-mBaV)
2023/08/05(土) 22:30:35.02ID:a9xEz2i50
コンパイルオプションでdefineを省略されていればデフォルト値を使うようなコードの構造にしたいのですが、
なるたけmakeやコンパイル環境に依存しないことが希望です。
プリプロセッサを使うと煩雑で読みづらくなってしまうので、カプセル化したいです。
C++ならもう少し洗練された方法がないものかと思うところですが、
定数定義の記述定形があって煩雑なのをシンプルに書く方法があれば教えて下さい
638デフォルトの名無しさん (ワッチョイ 4d01-zxRi)
2023/08/05(土) 23:17:58.10ID:NzC+Rt9F0
現状のサンプルコードを書いた方が答えやすい
639デフォルトの名無しさん (ワッチョイ 31a5-mBaV)
2023/08/05(土) 23:34:29.13ID:a9xEz2i50
#ifndef XX1
#define XX1 1
#endif

#ifndef XX2
#define XX2 0
#endif
:
640デフォルトの名無しさん (ワッチョイ 5b3e-8WNR)
2023/08/06(日) 00:25:50.71ID:Mgx3ApDu0
C++ はなるべくマクロを使わずに済む方向に進化してはいるが
マクロを使うのであればそれより良い方法はないと思うよ。
641デフォルトの名無しさん (ワッチョイ e3f0-uQHI)
2023/08/06(日) 01:54:30.05ID:7ys7hHtb0
俺ならテンプレート引数のデフォルト引数を使うけど、
既存のコードを何とかしたいって事かい?
642デフォルトの名無しさん (ワッチョイ 7510-WTQk)
2023/08/06(日) 04:00:21.32ID:VdM0xi000
>>637
君の求めてるエレガントな方法は、知らない。スマンね

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

数百あるならツールに意味があるし
もし聞かれたらツールで生成したと答えるが、正直どうでもいい
メンテフェーズでの1件2件の追加修正は手で書きゃいい
643デフォルトの名無しさん (ワッチョイ 7510-7C81)
2023/08/06(日) 04:31:49.92ID:VdM0xi000
ここって#とかの文字書けるのかな...


#!/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
644デフォルトの名無しさん (ワッチョイ 5b3e-8WNR)
2023/08/06(日) 11:54:26.68ID:Mgx3ApDu0
その手のパラメータをマクロとして大量に定義する
必要があるときというのは
開発・実行環境ごとに切り分けたいという要求なことが多くて、
そうだとしたら環境依存を避けたいという要件設定が
ナンセンスってことになるんよ。
645デフォルトの名無しさん (ワッチョイ 054e-c/5M)
2023/08/06(日) 12:11:02.29ID:R5xvWuDw0
その開発・実行環境がコンパイラ含めてまるごと提供される場合だと、C(++)基本機能だけで済ませないと何かと面倒というのは分かる
ゲーム機とかがそれ
646デフォルトの名無しさん (ワッチョイ c379-IXit)
2023/08/06(日) 12:13:51.56ID:SuulMMGF0
マイコン用のヘッダなんかはそういうテクニックが駆使されてて環境依存を減らしてるから参考になるよ
arduinoみたいな特定のマイコンに依存してない環境では特に
647デフォルトの名無しさん (ワッチョイ e3f0-uQHI)
2023/08/10(木) 05:18:21.73ID:cgZD1dE+0
最近はマイコンでもC++使うんですか?
普通にC使ったほうがいいと思うんですけどどうなってるんですか有識者の方
648デフォルトの名無しさん (ワッチョイ e3f0-WeFQ)
2023/08/10(木) 08:37:15.11ID:R9ss+SBt0
C++でもメモリを食わない書き方はあるとだけ言っておく
STLライブラリに恩恵を受けて育った温室育ちには理解出来んかもだがな
649デフォルトの名無しさん (ワッチョイ 054e-c/5M)
2023/08/10(木) 09:55:47.75ID:4skaSxsv0
マイコンのことは知らないが、いまさら、
//コメント
スコープ内ローカル変数
関数のオーバーロードや引き数の省略
bool型とture/false識別子
等がないC言語とか無理だなw
650デフォルトの名無しさん (ワッチョイ 5b3e-oz9p)
2023/08/10(木) 10:54:42.66ID:5Abh0bq20
>>649
その4つの内の3つはCにある機能だぞ
651デフォルトの名無しさん (ワッチョイ 054e-c/5M)
2023/08/10(木) 14:04:07.34ID:4skaSxsv0
組み込み向けでもC99つかえるの?
まぁ、最近はclangとかなのかな…日立コンパイラの恐怖とか思い出すわw
652デフォルトの名無しさん (ワッチョイ 5b3e-tyL0)
2023/08/10(木) 14:23:33.39ID:5Abh0bq20
スコープ内ローカル変数ってのが何を意味してるのかよくわからんが、
(関数ブロック以外でも) ブロックの先頭では変数宣言できるぞ。 C89 でも。
653デフォルトの名無しさん (ワッチョイ d105-GNKj)
2023/08/10(木) 16:21:19.73ID:ygto10X60
>>650
C++から逆輸入されたんだっけ?
654デフォルトの名無しさん (ワッチョイ d105-GNKj)
2023/08/10(木) 16:23:48.61ID:ygto10X60
マイコンって言ってももはや幅が広すぎるよな
655はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b3e-tyL0)
2023/08/10(木) 16:42:27.27ID:5Abh0bq20
Z80 だって C99 対応コンパイラは有るくらいだし、現代でも売ってるマイコン
かつ C コンパイラが存在するなら大抵は C99 対応くらいはしてるんじゃね。
完璧に準拠ってほどではないかもしれんけど。
656デフォルトの名無しさん (ワッチョイ dffb-IrHc)
2023/08/10(木) 19:28:12.15ID:rVmtE6nS0
今ってマクロ使うよりもモジュールにしてstaticでやる方がオトクなんだって?
657デフォルトの名無しさん (ワッチョイ 4f7c-HETv)
2023/08/11(金) 07:07:37.61ID:gKBPOQXo0
マイコンって関数呼び出しなんて重すぎてとんでもないmainに全部ベタ書きしろって世界でしょ?
そんなとこでモジュールなんて許されるのか
658デフォルトの名無しさん (ワッチョイ 61da-WeFQ)
2023/08/11(金) 07:24:40.95ID:RJhU8z4K0
とんだ時代錯誤だな
関数作るだけで容量が満杯になるっていつの時代のマイコンだよ
今何世紀だと思ってんだよ

659デフォルトの名無しさん (ワッチョイ 4f7c-HETv)
2023/08/11(金) 07:59:20.53ID:gKBPOQXo0
そーなの?
昔受けた講習で「関数は重いので関数ポインタを扱う用途以外では作りません。処理をまとめるにはマクロかgotoを使います」って言ってて衝撃受けた口なんだけど
時代の流れなのかこの講習がタコなのかあなたがタコなのか専門外だから分からないよ
660デフォルトの名無しさん (ワッチョイ 61da-WeFQ)
2023/08/11(金) 08:08:48.37ID:RJhU8z4K0
ホントに極小サイズの容量小さい昔のマイコンならアセンブラでハードウェアアドレスにI/Oコールして組み上げんだろうけどいまのマイコンはそのレベルを既に凌駕して逸脱してるから誰でも気軽に組みやすく仕上がってる
micropythonみたいなインタープリタも走るしな
661デフォルトの名無しさん (オイコラミネオ MMc9-uQHI)
2023/08/11(金) 08:32:55.43ID:4oMIZBsGM
関数を使わないのはRAMは少なくてスタックがシビアだからです
662デフォルトの名無しさん (ワッチョイ 61da-WeFQ)
2023/08/11(金) 08:36:34.41ID:RJhU8z4K0
スタックフレームつくるからだろ
インラインで全部組めばスタック要らんくなるよ
コードの容量は増えるかもしれんけど
663デフォルトの名無しさん (オイコラミネオ MMc9-uQHI)
2023/08/11(金) 08:40:37.51ID:4oMIZBsGM
何らかの便利な仕組みがあるとそのせいでメモリが足りなくなることもあった

そのせいかどうかしらないけど過去はforの階層が7階層に制限されてたり今では意味不明
ブロックスコープの仕組みのためか?
ifとgotoにしたら回避できる
664はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4132-oz9p)
2023/08/11(金) 09:58:09.34ID:vt/fQ4Il0
プログラムを 2KiB 程度しか書き込めない PIC なんかもあるが
そのレベルの機器だとどうせ低レイヤにべったりと
依存せざるをえないだろうし、
C で極端な書き方をするくらいならもっと低級な言語を
使った方が楽かもしれないな。
そういう割り切りが出来ない程度の中途半端なのが一番困る。
665デフォルトの名無しさん (スフッ Sdd7-A0iR)
2023/08/11(金) 12:49:59.96ID:oqyg1NI/d
>>659
組み込みなら
関数が重い
じゃなくて
スタックが浅い
の間違いじゃないのか?
666デフォルトの名無しさん (ワッチョイ 9af0-vKG+)
2023/08/12(土) 01:11:27.44ID:DKBxYxYv0
最近のは単価数百円で256kbとかメモリ積んでるんだな…
667デフォルトの名無しさん (ワッチョイ f358-yhDR)
2023/08/16(水) 17:21:20.72ID:hgmxYG6c0
その昔、使ってたHP-29Cがサブルーチンのネストが3段までで
その後に出荷されたHP-34Cが6段になってるの見て
おおーってなった懐かしい思い出
668デフォルトの名無しさん (ワッチョイ f358-yhDR)
2023/08/16(水) 17:40:41.84ID:hgmxYG6c0
今はinlineや関数テンプレートのように開いたサブルーチンが普通に使えるからなあ
669デフォルトの名無しさん (ワッチョイ 2702-Dztr)
2023/08/16(水) 22:34:48.53ID:YHO3HAlN0
C++相談室 part164 YouTube動画>1本 ->画像>5枚
670デフォルトの名無しさん (ワッチョイ 5b94-J+rV)
2023/08/17(木) 00:57:31.86ID:VKXPNJiw0
>>669
Amazonギフトに交換できるんだ
671デフォルトの名無しさん (JP 0H7f-YOEV)
2023/08/17(木) 15:51:12.83ID:BJu8USc1H
ちなみにその方法でアマギフ入手するとアマゾンアカウント停止させられるから気をつけてね
672デフォルトの名無しさん (ワッチョイ b690-g0y9)
2023/08/17(木) 23:57:58.55ID:4XlHHMDQ0
ショボい詐欺はスルーで
673デフォルトの名無しさん (スップ Sdba-aAP2)
2023/08/18(金) 07:50:49.06ID:ibegtSC/d
>>669
グロ
674デフォルトの名無しさん (ワッチョイ 5901-greZ)
2023/08/21(月) 17:47:44.07ID:mTvtbn+H0
週3日稼働案件の職種別月収ランキングNo.1は「データサイエンティスト」で月72万円。
上位7職種が月50万円を超える月収。ほぼ全ての案件がリモート可案件。

フリーランス・複業・副業の求人マッチングサービス『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万円を超える
675デフォルトの名無しさん (ワッチョイ 3136-wdUj)
2023/08/21(月) 22:24:31.55ID:qha1IMDa0
>>669
貰うだけ貰うか
676デフォルトの名無しさん (ワッチョイ 2b10-OsaT)
2023/08/22(火) 18:52:00.21ID:vz2M4TZw0
c++でGUI作る時のフレームワークって今は何が主流なんでしょうか。
昔は、MFCとか有名でしたが。
それとも、c#で簡単にui作って内部的にc++で処理するとかですかね。
677はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 893e-glFA)
2023/08/22(火) 20:03:04.11ID:+W4fml+10
Windows での話なら WinUI を活用する方法が現代的なやり方だけど主流と言える感じでもないかな……。
WebView コントロールで全部をやってしまえばウェブ技術がかなり使えるので
プログラマの知識バックグラウンドによっては楽ということもあるかも。
678デフォルトの名無しさん (ワッチョイ 597c-JHPd)
2023/08/22(火) 20:29:01.97ID:lpVGvukl0
なんかもう最近はPCでGUIプログラムなんぞ作ること自体が時代遅れみたいな風潮で息苦しいよ
679デフォルトの名無しさん (ワッチョイ 2bfb-KmyD)
2023/08/22(火) 22:37:29.50ID:0uc0qR5i0
基本はGUi作るのはひ
680デフォルトの名無しさん (ワッチョイ 599c-HTZh)
2023/08/23(水) 00:17:14.58ID:+DZCM0il0
WindowsとLinuxで同じアプリ動かさないといけない案件でgtkmm使ったことある
UIをCSSで装飾できるのがモダンな感じでよかった!
681デフォルトの名無しさん (ワッチョイ 2bf2-N2rt)
2023/08/23(水) 00:39:14.30ID:Ev7RzN030
wxWidgetsおすすめ
682デフォルトの名無しさん (ワッチョイ 1990-PVU2)
2023/08/23(水) 05:35:54.64ID:syViBZyk0
JAVAを使うとこじゃないのか?
683デフォルトの名無しさん (ワッチョイ 93f0-YAjS)
2023/08/23(水) 05:41:53.03ID:yb1p7Ca/0
お前はスレタイも質問文の前提も読めないのか
684デフォルトの名無しさん (ラクッペペ MM4b-pGo3)
2023/08/23(水) 06:02:39.20ID:DtllJKP1M
VC++なら実体はC++/CLIの実装なのでちょっとした手間でWinUI 3が利用出来るんじゃないの?
知らんけど
685デフォルトの名無しさん (ワッチョイ d9da-IilA)
2023/08/23(水) 07:20:34.95ID:5hD/FFHF0
また知ったかが
VC++とC++/CLIは全くの別もんだろ
686デフォルトの名無しさん (ラクッペペ MM4b-pGo3)
2023/08/23(水) 07:45:27.28ID:jTxxfogGM
C++/CLI
https://ja.wikipedia.org/wiki/C%2B%2B/CLI
687デフォルトの名無しさん (ワッチョイ a158-0WDc)
2023/08/23(水) 10:20:14.35ID:tOgZZX+q0
>>680
WineかWSL2あたりじゃね
今やるなら
688デフォルトの名無しさん (スフッ Sdb3-G+yN)
2023/08/23(水) 11:25:24.82ID:WaZBmlqUd
>>676
wxWidgets とか tcl/tk (C++じゃないが敢えて) とか

>>678
ほんそれ
ロストワールドになりそうな勢い
昔のコボちゃんもこんな感じで引退して逝ったんだろうか

>>680
gtkmm は糞
689デフォルトの名無しさん (テテンテンテン MM4b-RKQT)
2023/08/23(水) 12:28:03.69ID:SELcDCTxM
Electronどうかね。
使ったこと無いけど。
690デフォルトの名無しさん (ワッチョイ 5105-D2YO)
2023/08/23(水) 12:39:22.05ID:WZJfreeh0
要件によって変わるから一概にコレってのが無いな
691デフォルトの名無しさん (ワッチョイ 93f0-WivN)
2023/08/23(水) 22:44:49.61ID:slwUpp650
C++でGUI作るときはQt使ってる。Designerが便利
692デフォルトの名無しさん (ワッチョイ 93f0-YAjS)
2023/08/24(木) 03:00:05.96ID:KjKP5fLp0
何故C++のGUIフレームワークのライセンスはLGPLばかりなのか
693デフォルトの名無しさん (ワッチョイ 599c-RKQT)
2023/08/24(木) 08:48:33.25ID:TNcuPvYX0
>>692
qtはqtライセンスあるだろ。
electron はMITだし、wxWidgetsも例外条項付きLGPL。
694デフォルトの名無しさん (アウアウウー Sa45-WivN)
2023/08/24(木) 19:48:24.59ID:IxxAot5ma
ImGuiってどうよ?
695デフォルトの名無しさん (ワッチョイ db79-wKkg)
2023/08/24(木) 22:02:03.62ID:W+JHQ2GG0
>C++でGUI
出てくるモノが昔と代わり映えしてなくて草
C#でええやろ
696デフォルトの名無しさん (ワッチョイ 3128-gjgG)
2023/08/25(金) 07:08:59.02ID:rQn+0/0C0
C++よりC#やJavaの方がGUIを書きやすいという言語の違いに起因する理由って何かあるっけ
リフレクションやガベージコレクションが別段必須でない気もするし
async/awaitが付く前からなんかJava/C#でGUI、という流れになっていた気がするし、
実はインテリセンスが効きやすい、とかアプレット的なやつがActiveXより書きやすかったから、とかそんなのが理由だったりして……
つなみにX window systemは良く知りま栓
697デフォルトの名無しさん (ワッチョイ 599c-HTZh)
2023/08/25(金) 07:59:22.15ID:w6iB83KR0
GUIツールキットの設計・開発は難しい
JavaはAWT→Swing→JavaFX
.NETはWinForms→WPF→UWP→WinUI3
何度も作り直してるんだよね

C++には標準GUIツールキットなんて要らないよ(どうせ何度も作り直すことになる)
698デフォルトの名無しさん (ワッチョイ 3128-gjgG)
2023/08/25(金) 08:10:08.12ID:rQn+0/0C0
ゴメリよく考えたらフレクションがあると強いわ;;;
フォームエディタみたいなやつを提供する立場にたてば
ウィジェットクラスを作ったらそれだけでリフレクションを使ってそいつのプロパティーを即エディターのプロパティーに並べられるて
利用者に提供できうる
699デフォルトの名無しさん (ワッチョイ 93f0-WivN)
2023/08/25(金) 08:33:12.71ID:8nfgHtXd0
>>698
それくらいならC++でもヘッダ見ればリフレクション無しでできるんじゃね?
700デフォルトの名無しさん (アウアウウー Sa45-greZ)
2023/08/25(金) 09:11:51.64ID:5+gJach+a
>>696
X の頃は x 用の toolkit があったけど
tcl/tk が便利過ぎてそっちに行った人多し
701デフォルトの名無しさん (ブーイモ MMb3-HTZh)
2023/08/25(金) 09:51:27.88ID:5ARzKA7QM
フォームエディターっていつの時代よ
それってホームページビルダーでホームページ作るようなもので柔軟性がないんだよね
ウィンドウサイズ固定ならともかく、可変サイズのレイアウト作るならGUIデザイナ使うよりコード書いたほうが管理しやすい
ホームページビルダーよりHTML/CSS手書きを選ぶのと一緒
702デフォルトの名無しさん (ワッチョイ 9990-JowH)
2023/08/26(土) 21:45:39.47ID:uP0Ej+dj0
>>698
たしかにそうだよな
スレッド周りなんて他で試行錯誤して枯れて辺りで
正式採用されたもんな
703デフォルトの名無しさん (オイコラミネオ MM65-u1T+)
2023/08/28(月) 00:05:48.18ID:HI9+dVvpM
>>695
嫌だ。
704デフォルトの名無しさん (ワッチョイ 8610-4o0D)
2023/08/29(火) 00:12:25.55ID:VlZlfeK60
c++builderってネットに殆ど情報ないですね。
書籍もないし。
あまり使われてないからだと思うけど、これ使って開発すると躓いたら解決策見つからず苦労しますかね、、。
705デフォルトの名無しさん
2023/08/29(火) 03:59:08.18ID:7e4Tklec0
Builderの情報はほとんどないけどC++の情報はいっぱいある
VCLの情報はDelphiと同じだからなんとか探せばある
自分はBuilderだけ買ったけど同時にDelphiも買っておけばよかったとちょっと後悔はしているね
その程度には中途半端な存在と思う
706デフォルトの名無しさん (ワッチョイ 6dda-PUhn)
2023/08/29(火) 11:29:24.11ID:r8rvdmrM0
VCLのソースがないと中でなにやってるかワカランからな
707デフォルトの名無しさん (ワッチョイ caad-VnR5)
2023/08/29(火) 16:30:54.10ID:2MvLEdvj0
ヘッダにインターフェースだけ書いてcppにインプリメントクラスを定義して隠蔽するのって
ライブラリとかフレームワークだと意味あるけどアプリケーションレベルの実装でやる意味って無いですよね?
708はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a13e-aWw4)
2023/08/29(火) 16:40:14.71ID:s7G+g/ai0
>>707
インターフェースって何?
709デフォルトの名無しさん (ワッチョイ d95f-1fgM)
2023/08/29(火) 16:40:33.32ID:Gj9jSZac0
インターフェースが何を指すか次第だけど、たぶんPimplイディオムのことかな?
ライブラリみたいに境界がかっちりしてないならそうかもね
710蟻人間 ◆T6xkBnTXz7B0 (スフッ Sdea-fyEs)
2023/08/29(火) 16:40:58.05ID:A1BJ1LVxd
>>707
ビルド時間を短縮する目的での隠蔽に使われることはある。隠蔽っていろいろ便利だから。
711はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a13e-aWw4)
2023/08/29(火) 17:08:55.74ID:s7G+g/ai0
pimpl は疎結合にできる分だけ
差分ビルドでコンパイルする範囲が
小さくなるから特に巨大なプログラムの開発では
ビルド時間を短縮する意味はあるはずだが
余計な構造を挟む煩わしさと比べて
割にあうのはよっぽど極端な場合に限ると思われている。
(意味はあるが意味のある状況は限定的)
712デフォルトの名無しさん (ワッチョイ a910-/+sI)
2023/08/29(火) 22:48:32.90ID:fHM5F2qI0
>>707
大きなアプリを、元請け社の元で複数の下請けが作っている場合、
お金の流れが全然違う他社のコードとリンクする事はあるよね。

で、紳士協定で「設計書で使っていいと言ってる機能だけ外部から使って」としても
約束を破るバカモノがいる場合もある。
信頼できない他社から自社の身を守る(徹夜で他社のバグ解析に付き合わされる事を防ぐ)など
レイヤー化する事には、もしかしたら意味があるかも知れないね

悲しい&バカらしいかも知れないけど

あとは逆に、自社の実装バグを見つけてアッー!ってなった時に、インタフェースを守ってる他社に、自社の実装変更&リリースによる「再ビルド要」の迷惑をかけてしまう事を防ぐ、意味はあるかも知れない
713デフォルトの名無しさん (ワッチョイ a910-/+sI)
2023/08/29(火) 22:49:56.05ID:fHM5F2qI0
いや、分からんな、ゴメン
714デフォルトの名無しさん (ワッチョイ 2501-xDGp)
2023/08/29(火) 22:55:37.38ID:82ATxlW40
デフォルトでpimplの俺は少数派か...
715デフォルトの名無しさん (ワッチョイ 2501-xDGp)
2023/08/29(火) 23:23:11.79ID:82ATxlW40
C++はCの構造体をクラスに流用したからメンバー変数が見えてるけど
pimplのように隠れて然るべきが俺の持論
最適化の段階でinline化したい関数で触っている変数のみ
pimplの隠れた構造体から表の構造体に移動させているな
面倒くさくないかって? テンプレート用意してるから全然
716デフォルトの名無しさん (ワッチョイ 15b3-NdIe)
2023/08/30(水) 00:04:31.34ID:mW2zyf/K0
C++には不思議な魅力がある
C#
717デフォルトの名無しさん (ワッチョイ 15b3-NdIe)
2023/08/30(水) 00:05:23.32ID:mW2zyf/K0
なんか途中で書き込みに行きやがった
JDimバグってないか???
718はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a13e-e+8E)
2023/08/30(水) 00:13:16.01ID:9akroxuQ0
>>715
隠すべきものが隠せていないのはそうだけど構造体を流用したことというよりも、
各翻訳単位でコンパイルしてからリンクするという C の手順を踏襲した都合だと思う。
他の翻訳単位の情報を見ずにコンパイルできる状況にするということを曲げないなら
オブジェクトの大きさを確定するのに必要な情報をクラス定義内に書く仕組みにせざるを得ない。
719デフォルトの名無しさん (ワッチョイ 355f-vHpx)
2023/08/30(水) 12:34:02.83ID:biy0pv8/0
>707 が言ってるのはたぶん pimpl じゃなくて抽象クラス(=インターフェースクラス)を使った隠蔽じゃないかな?
pimpl より楽なので新規クラスではこっちしか使わなくなった。
720デフォルトの名無しさん (ブーイモ MMea-C1Tt)
2023/08/30(水) 15:13:40.69ID:STopcx5aM
>>719
メンバー関数の宣言が重複するのが
こちらは嫌なところかなぁ
721デフォルトの名無しさん (ワッチョイ 3e79-FVin)
2023/08/30(水) 16:07:23.97ID:bGhOLdki0
pimplなんてCでは普通のテクニックだったのにC++はいちいち大げさだなあ
722デフォルトの名無しさん (ワッチョイ 86fb-1XyZ)
2023/08/30(水) 19:39:24.36ID:rrx0kAlJ0
オタク界隈やと呼吸レベルで使いこなすよな
723デフォルトの名無しさん (スップ Sdea-0Z8Z)
2023/08/31(木) 07:08:06.02ID:wYoApzHMd
>>717
手元がバグってるだけじゃないかな(名推理)
724デフォルトの名無しさん (ワッチョイ c328-9M69)
2023/09/03(日) 20:40:30.70ID:uJA/UdoJ0
pimplのクラスか構造体の宣言だけ行うところでC++Testに文句言われる……
725デフォルトの名無しさん (アウアウウー Sae7-fXI3)
2023/09/04(月) 10:15:14.85ID:/ASAZOX6a
Rust使い過ぎてC/C++でclassとstructに;付け忘れはあるある
726デフォルトの名無しさん (ワッチョイ 3378-+GqY)
2023/09/05(火) 01:10:33.18ID:6M2Epndy0
templateを使わなきゃpimplなんか必要ないだろ。
727デフォルトの名無しさん (ワッチョイ 4301-bHR5)
2023/09/05(火) 01:16:38.13ID:c+OS/OAh0
>>726
やっぱデフォルトでpimplの俺は少数派かなぁ
728デフォルトの名無しさん (ワッチョイ 4301-bHR5)
2023/09/05(火) 01:18:44.98ID:c+OS/OAh0
>>726
というよく読んだら気付いたが
templateこそpimplと相性悪いのでは?
729デフォルトの名無しさん (ワッチョイ 3378-+GqY)
2023/09/05(火) 01:36:59.02ID:6M2Epndy0
あー、誰かが言ってるようにpimpl使わないと、ヘッダファイルだかCPPファイルだか1行修正しただけで全部再コンパイルされてしまうというのあったな。
730デフォルトの名無しさん (ワッチョイ b67a-6I4L)
2023/09/09(土) 00:14:54.72ID:N+hvybCm0
自分に合うC++の本を探しています。
独習c++(高橋)を候補にしてます。
以下の程度の人に向いているでしょうか。

Cはポインタを含めてほぼすべて分かります。

C++は昔、クラス周辺の文法を林本で理解したものの、ほとんど書いてないので設計ノウハウがなく、ここは強化したい点です。

C++11より前なので11以降が分かりません。テンプレートやベクターもまったく分かりません。
731デフォルトの名無しさん (オイコラミネオ MM63-SjEv)
2023/09/09(土) 00:39:25.00ID:uw9REbuTM
なんで一冊だけ決めて勉強するのか意味不明なんだな
とりあえず読め
沢山読んだら死ぬのか?
732デフォルトの名無しさん (ワッチョイ 2328-E2FL)
2023/09/09(土) 00:40:08.83ID:JvG/rAdc0
>>728
むしろ発想が逆で、templateを使い倒して書いたモジュールをの公開インターフェースからtemplateの痕跡を消してしまうのに使う
733デフォルトの名無しさん (オイコラミネオ MM63-SjEv)
2023/09/09(土) 00:42:57.07ID:uw9REbuTM
ここにいる連中は太古の昔に入門して入門書なんて無縁なんだ
良書などなく分厚くて誤訳満載の本を読んで勉強して血を流しながら進んだ
何冊も読んだ

タイパなんてくそくらえ
到達したいところがあるなら時間を掛けろ
734デフォルトの名無しさん (ワッチョイ 2328-E2FL)
2023/09/09(土) 00:44:19.17ID:JvG/rAdc0
今日聞いたのですだがオンライン辞書サービス Dictionary.com にアルゴリズムの短縮形 algo が追加されたらしい
すっかり定着したコンストラやデストラといった略語もそのうち辞書に載るかも……
735はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-1kEh)
2023/09/09(土) 01:21:30.56ID:Ig5iuvnc0
C++ は一般原則で示せない変則的なルールも多いのでそういうのはまるごと知っておくしか仕方がない。
そういったルールの分量が単純に多いから学習するにはたくさん読まないといけないのも仕方がない。

僅かだが互換性を損なう仕様改定もあるし、作法が変わった部分もあるので混乱しないように古すぎる資料は避けた方がよさそうという程度の助言は出来るけど具体的に現代的な入門書というと手堅いものは挙がらんのよな……
736デフォルトの名無しさん (ワッチョイ 177c-h0AF)
2023/09/09(土) 01:29:10.69ID:444GCDJV0
Cしか知らんならC++より先に一般的なオブジェクト指向の勉強した方が良さそう
Cの延長で文法と機能だけつまみ食いしてたらstaticおじさんが生まれてしまう
737デフォルトの名無しさん (ワッチョイ 1710-Z579)
2023/09/09(土) 06:43:09.16ID:Ej2BTroL0
C++は余りに途方もないというか、難しいですよね

「ポインタを分かってます」とか言ってしまう時点で想像がつくというか、遠いなというか
738デフォルトの名無しさん (ワッチョイ 23f0-JHZ4)
2023/09/09(土) 09:16:01.68ID:46L/9V3B0
とりあえず
Effective C++と
Effective Modern C++
あたりがいいんじゃない
739デフォルトの名無しさん (ワッチョイ 4efb-DZDQ)
2023/09/09(土) 09:40:35.80ID:4/gA6xPM0
>>730
色々読むのもありなんだけど
自分にあった本の探し方も学習の一つ
ネットの情報は鮮度もあるし、なんらかの意図が含まれている可能性があるので
本当に自分に合う本を探すつもりなら本屋に行ってみるのもありだよ
それと何を作りたいかによって、選ぶジャンルが違ってくると思うんだ
網羅的に読みたいのであれば、c++の開発者が書いた本もあるし、最近なら苦しんで覚えるシリーズも売れているだろうし
目的を強くイメージできて、この本からその目的の学習ができ、スキルアップ可能なのかどうかをしっかりと自問自答すると…
740デフォルトの名無しさん (ワッチョイ e301-aVri)
2023/09/09(土) 12:03:26.84ID:ipyM0SHG0
Scott Mayers信者うざい
741デフォルトの名無しさん (ワッチョイ 0b01-HtNW)
2023/09/09(土) 12:41:12.24ID:MLVcfiFl0
Mayersはtips集だから>>730の段階では早い
Mayersは良いこと書いてるよ
ただしMore Effective C++は訳が酷かった
742デフォルトの名無しさん (オイコラミネオ MM63-SjEv)
2023/09/09(土) 13:48:08.63ID:uw9REbuTM
昔々は技術書系はもう訳がめちゃくちゃだった

なんの本か忘れたけど技術者じゃないただの翻訳家みたいのが訳したのがあって
ずっと「所与の」の言うワードがページにちりばめられていて読みづらいのなんの

所与の値、所与の条件、所与の…
日常生活で所与のって使わんだろ
どんな爺さんが訳したんだか
743はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-1kEh)
2023/09/09(土) 14:37:56.58ID:Ig5iuvnc0
他にどう表現すればよかったと思う?
744デフォルトの名無しさん (スッププ Sdba-1UeE)
2023/09/09(土) 15:44:12.23ID:npM3Z9YAd
そんな部分よりも
専門用語がめちゃくちゃで意味が通じない方が問題だと思うよ
745デフォルトの名無しさん (ワッチョイ b65f-MmH2)
2023/09/09(土) 15:47:03.01ID:IggX53ET0
スレッドを「糸」と翻訳したり、ポートをマジで「港」と翻訳してる本なら持ってる
746デフォルトの名無しさん (スッププ Sdba-1UeE)
2023/09/09(土) 15:49:24.11ID:ntGEHGTWd
ファイバーとかマスタースレーブとか

今だと海外通販の日本語訳が面白い
勝利11
男性女性ケーブル
747はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-1kEh)
2023/09/09(土) 16:02:33.33ID:Ig5iuvnc0
専門用語は多少は不自然でもいいが(その分野では)皆が一貫して同じ用語を同じ意味で使ってくれんと困るな。
でも慣例が確立していない時代のものなら今の時代から見て不自然なことがあってもそれは仕方がない。
748デフォルトの名無しさん (ワッチョイ 7af0-SjEv)
2023/09/09(土) 16:24:17.70ID:GTFNmrLV0
JISが更新されないから新しい日本語訳はもう生まれてこないんだ
新たな誤訳に悩まされる事が無くなってよかったな?
749デフォルトの名無しさん (オイコラミネオ MM63-SjEv)
2023/09/09(土) 16:32:21.11ID:uw9REbuTM
given 与えられた
assigned 割り当てられた
allocate 配置された

覚えてる感じだと大体このあたりが全部所与のになってた
ありえない
750デフォルトの名無しさん (ワッチョイ 2328-E2FL)
2023/09/09(土) 17:09:59.01ID:JvG/rAdc0
行き先:女性との別れ
751デフォルトの名無しさん (ワッチョイ 2328-E2FL)
2023/09/09(土) 17:35:14.02ID:JvG/rAdc0
・算譜
・算体
・算帖
・算程
・作譜
・作譜用言語
・譜構
・模塊
・偏位
・際どい部分
・行き詰まり
752はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-1kEh)
2023/09/09(土) 17:40:33.10ID:Ig5iuvnc0
バグ取りを蟲繕い(むしつくろい)って書いてたのもどこかで見たことがあるな
753デフォルトの名無しさん (ワッチョイ 838e-7VGn)
2023/09/09(土) 17:49:07.83ID:tJCpX1LH0
ストライクをよし!とか言い出しそう
754はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1732-1kEh)
2023/09/09(土) 18:57:14.21ID:k09IENG+0
カタカナ語よりは短く表現できるからもしも訳語として定着していたならそれはそれでアリだと思う。
でも定着しなかったという現実を前にしたら仕方がないね。
755デフォルトの名無しさん (ワッチョイ 0b01-NP+X)
2023/09/09(土) 19:12:51.10ID:4bE7KSLp0
>>748
カタカナ語も誤読が蔓延しているので良くない。

garbage ○ガーベジ ×ガベージ
iterator ◎イタレイタ ○イタレータ ×イテレータ
operand ○オパランド ×オペランド
operator ◎オパレイタ ○オパレータ ×オペレータ
reference ◎レフランス ○レファレンス ×リファレンス
storage ○ストーレジ ×ストレージ
756はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-1kEh)
2023/09/09(土) 19:18:35.71ID:Ig5iuvnc0
それは日本方言
757デフォルトの名無しさん (ワッチョイ ff39-bdWa)
2023/09/09(土) 19:20:01.31ID:1xGTpgW80
>>755
文系くさいマウントだなw

カタカナで書いてる時点で正しい英語でも何でもねえんだよ
文系でも底辺カーストだろ、おまえw
758デフォルトの名無しさん (ワッチョイ dbcf-SjEv)
2023/09/09(土) 20:12:08.56ID:Vd67mKNx0
少なくとも長音の位置はどっちが正解と言い切れるものではない
759デフォルトの名無しさん (ワッチョイ 0b01-NP+X)
2023/09/09(土) 20:33:28.51ID:4bE7KSLp0
>>758
gar·bage /ˈɡɑːbɪdʒ/
stor·age /ˈstᴐːrɪdʒ/

第1音節が長母音でアクセントもあり、第2音節が短母音でアクセントもないのに、後の方を長くするのは明らかに間違い。
760デフォルトの名無しさん (ワッチョイ 1710-y1iQ)
2023/09/09(土) 20:45:53.06ID:Ej2BTroL0
便乗w。警告ウォーニングをワーニングって言うの、やめよう。ね。
761デフォルトの名無しさん (ワッチョイ 23f0-JHZ4)
2023/09/09(土) 20:56:01.80ID:46L/9V3B0
autoはアウトと呼ばれない謎
762デフォルトの名無しさん (ワッチョイ e3da-bfD5)
2023/09/09(土) 21:03:24.19ID:4yGgnkB40
automaticの略だから発音は謎
intをなんと発音すべきか問うているようなものよ
763デフォルトの名無しさん (ワッチョイ 9a6a-MmH2)
2023/09/09(土) 21:08:43.40ID:yhgo4C8h0
routineをルーティーンって書く最近の風潮に違和感
764デフォルトの名無しさん (ワッチョイ 179c-C+22)
2023/09/09(土) 21:12:22.45ID:ed8VSodZ0
ワーニングは和製英語なんだからワーニングでいいでしょ
服のシワをとる機械のことアイアンって呼んでるの?アイロンでしょ?
スキー板を固定する器具をバインディングって呼んでるの?ビンディングでしょ?

カタカナ語として定着しているものの発音がーとか言ってもしょうがないよ
765デフォルトの名無しさん (スッププ Sdba-1UeE)
2023/09/09(土) 22:58:47.81ID:2svzew1vd
charをチャーって言うのは気に食わない
766デフォルトの名無しさん (ワッチョイ 1710-y1iQ)
2023/09/09(土) 23:09:32.43ID:Ej2BTroL0
>>764
服のシワを取るシステムやスキー用品のシステムを作ってるなら顧客に合わせるけど、ドメイン名解決のソフトはバインドと呼ぶしソケットにアドレスを紐づけるのもバインドと呼んでるよ
まあ君はそれで行きなされ。私も私の道を行くよ
767デフォルトの名無しさん (ワッチョイ a702-8VQg)
2023/09/09(土) 23:19:04.00ID:K25duMZT0
>>753
いいね
野球も〝ひとよし〟〝ふたよし〟でいこうよ
768デフォルトの名無しさん (ワッチョイ a702-8VQg)
2023/09/09(土) 23:21:08.37ID:K25duMZT0
>>765
いや、それは〝ちゃー〟です
769デフォルトの名無しさん (ワッチョイ 179c-C+22)
2023/09/09(土) 23:28:03.12ID:ed8VSodZ0
>>766
顧客に合わせるってのは慣習に合わせるってことでしょ? それでいいと思うよ
ワーニングもアイロンもビンディングも慣習的にカタカナでそう綴られてきて定着してる
いまさらネイティブの発音とギャップがあるとか言われてもねえ
770デフォルトの名無しさん (ワッチョイ 179c-C+22)
2023/09/09(土) 23:33:22.85ID:ed8VSodZ0
アイロンのことを正しい発音はアイアンだよって訂正されたら「この人、日本語のアイロン知らんのかな?」って思うでしょ
ワーニングも同じ
ワーニングを正しい発音はウォーニングだよって訂正する人たまにいるけど「この人、日本語のワーニング知らんのかな?」っ思う
771デフォルトの名無しさん (ワッチョイ 0b01-HtNW)
2023/09/09(土) 23:38:57.43ID:MLVcfiFl0
channelはチャンネルからチャネルになったな
772デフォルトの名無しさん (ワッチョイ 7af0-SjEv)
2023/09/09(土) 23:41:50.50ID:GTFNmrLV0
>>771
これおじさん的に衝撃的だったよね
「テレビ8チャンに変えて」を"8チャネ"に変えてに変えないといけなくなる
773はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-1kEh)
2023/09/10(日) 00:17:52.94ID:ucqWE+/B0
英語の発音なんか雑なもんやぞ。
ワイが知っとる例だと particularly をパティキュリと言ってる人がかなり多いとか言う話やな。
音が入れ替わったり脱落したりなんてよくあることで、正しい発音はない。
表音文字なのに音を表すのを諦めとるから雑さが加速しとる気がする。
774デフォルトの名無しさん (ワッチョイ a702-8VQg)
2023/09/10(日) 00:39:41.79ID:y88PGdZC0
>>771
通信業界にいた身としては〝Dチャネル〟や〝Bチャネル〟って言ってたけど、テレビは〝チャンネル〟でしょ
そしてここは〝5ちゃんねる〟
775デフォルトの名無しさん (ワッチョイ 0b01-HtNW)
2023/09/10(日) 01:06:53.71ID:uILl1E7m0
>>774
>そしてここは5ちゃんねる
ああ!そうだね
776デフォルトの名無しさん (ブーイモ MMb6-6jLp)
2023/09/10(日) 03:55:17.68ID:mjW4Nz4DM
VC++ って名前に反して 実は VC++ Runtime ありきの中間言語ですか、Borland C++ は Native なんでつか??

折角C++で書いても Win32API 使ったら、 Runtime ないと怒られるのは悲しい><
777デフォルトの名無しさん (ブーイモ MMb6-6jLp)
2023/09/10(日) 03:58:45.21ID:mjW4Nz4DM
>>770 情報関係だと基本、カタカナ語使わず英語をそのまま記載するのでゎ。同音異義語が多くて紛らわしいという事もありますし。
人名と用語は英語で記載。

Runtime、Native ぐらいならカタカナでも良いかなと思うが、いちいちそこで切り分けるのも面倒だから、もう英語で。
778デフォルトの名無しさん (ブーイモ MMb6-6jLp)
2023/09/10(日) 04:06:35.32ID:mjW4Nz4DM
>>755 誤読はまだしも、誤訳で有名なのは イマジナリショート。

漏れも持ってて勉強した トランジスタ技術 OPアンプ回路の設計という本で、 イマジナリショートと紹介してあった。
しかもご丁寧に imaginary short と。

CQ誌は今でも意固地(わかってて)に、 imaginary short という用語を website に公開してある。

いまでこそソフトウエアの分野では 仮想化技術が浸透したので、仮想といえば virtual だが、
当時は文学が好きな人がイマジナリーと訳しちゃったんのかな、と。

ただそれの恐ろしいことは CQ 誌で紹介された用語が、 Ohm社などの電子回路の教科書にも、えいえんとその誤訳が
使われ続け、半世紀たったいまでも改善がない・・
779デフォルトの名無しさん (ブーイモ MMb6-6jLp)
2023/09/10(日) 04:09:52.26ID:mjW4Nz4DM
ソフトウエアもそうだが、ソリッドステート(トランジスタ)回路も、学術より企業の方が進んでいて、

1970年代、企業技術者がまっさきに技術書を書いて、学術家(教員)がそれを天下り的に学生に教えていた経緯から、
おそろしいことに誤訳が広まったのだろう。

幸い、ソフトウエアの用語では誤訳が広まった例を聞いたことがないが、何かあるのだろうか?
780デフォルトの名無しさん (ブーイモ MMb6-6jLp)
2023/09/10(日) 04:15:15.20ID:mjW4Nz4DM
Visual C++ ってのも製品名(商標)ではあるが、何が Visual なのか全くわからんな・・・

Runtime 言語だから、 Virtual C++でもよかったのに。。
781デフォルトの名無しさん (ワントンキン MM8a-HSys)
2023/09/10(日) 04:18:48.48ID:S3Exn9iLM
X えいえんと
O えんえんと 延々と
782デフォルトの名無しさん (ワントンキン MM8a-HSys)
2023/09/10(日) 04:20:33.14ID:S3Exn9iLM
>>780
GUIか作れたからVisualなんだよ…
virtual関係ない
783デフォルトの名無しさん (ブーイモ MMb6-6jLp)
2023/09/10(日) 04:21:53.21ID:mjW4Nz4DM
トランジスタってのもそうですな。これは三本足を意味するので、半導体であることを強調する場合は 古めかしい用語、ソリッドステート
がいまだに用語として使われている。SSD、SSRとかも。

あとはダイオードもそうだ。ダイオードといえば今日では半導体ダイオードをほぼ指すが、真空管時代にもダイオードがある。
制御端子のついた素子の場合は、真空管の場合は3つ足ではなく、4つ足だから、これはトランジスタに関しては混同することはないけれども。


カタカナ語なんてのはどうせ和製英語なんだし、そもそもが間違いだから、そのツヅリが多少違ってようが、はっきりいってどうでもいいが、
それよりは用語そのものが重要な気がする。
784デフォルトの名無しさん (ブーイモ MMb6-6jLp)
2023/09/10(日) 04:23:22.67ID:mjW4Nz4DM
>>782 GUIだから Visual って、なんかザパニーズ的な発想だな、て思ってさぁ。。
785デフォルトの名無しさん (ブーイモ MMb6-6jLp)
2023/09/10(日) 04:24:45.09ID:mjW4Nz4DM
GUIといえば、いまだにツヅリがまともに出てこないのが、 WYSIWYG だな・・・

これなんだよって思う・・覚えにくいわ。
786デフォルトの名無しさん (ワンミングク MM8a-HSys)
2023/09/10(日) 04:26:02.38ID:CBa8BQ/hM
>>784
runtimeもCRTなだけであって中間言語ではない
設定すればリンクしておけた
787デフォルトの名無しさん (ワンミングク MM8a-HSys)
2023/09/10(日) 04:28:34.59ID:sGHB2qn6M
>>785
wysiwygは画面と印刷の話であってボタンなどのGUIは関係ない
788デフォルトの名無しさん (ブーイモ MMb6-6jLp)
2023/09/10(日) 04:28:45.86ID:mjW4Nz4DM
ググったら真空管って色々あるんだな。学校で習ったときは4端子だから、それしか知らんかった・・
789デフォルトの名無しさん (ブーイモ MMb6-6jLp)
2023/09/10(日) 04:32:12.32ID:mjW4Nz4DM
>>786 そうだね。でも CLR を含めた DLL は、.NET で動かすことはできないぢゃない。共存できないとかで。
790デフォルトの名無しさん (ワンミングク MM8a-HSys)
2023/09/10(日) 04:32:25.91ID:Cs1N+L1lM
むしろ4端子の真空管知らんわw
791デフォルトの名無しさん (ワンミングク MM8a-HSys)
2023/09/10(日) 04:33:43.35ID:Cs1N+L1lM
>>789
あまりに物を知らなすぎ
もう少しググってからにしろ
792デフォルトの名無しさん (ブーイモ MMb6-6jLp)
2023/09/10(日) 04:34:01.51ID:mjW4Nz4DM
>>786 もどかしいんだよな。 CLI て .NET へ展開ありきなのに、.NET で動かそうと思うと、VC++, .NET それぞれの Runtime
をインスコしないといけないなんて・・
793デフォルトの名無しさん (ブーイモ MMb6-6jLp)
2023/09/10(日) 04:36:01.83ID:mjW4Nz4DM
>>791 中間言語は暴論だった。バイトコードとか、そういうのは知ってるよぅ。

でもVC++が Native というと、微妙だよね?
794デフォルトの名無しさん (ワンミングク MMdf-HSys)
2023/09/10(日) 04:37:18.31ID:2P1NQmHAM
>>793
完全にnativeだバカ
795デフォルトの名無しさん (ブーイモ MMb6-6jLp)
2023/09/10(日) 04:44:45.18ID:mjW4Nz4DM
>>794 そう。そういうものだと思って諦めよう。

VC++ Runtime , .NET Runtime 両方をインストールなんて・・・・・
796デフォルトの名無しさん (ブーイモ MMb6-6jLp)
2023/09/10(日) 04:45:41.78ID:mjW4Nz4DM
CLR と CLI ってのも 1字違いで紛らわしいよね。作ってるから混同することないが、ネットには嘘ばっかり書いてある。
797デフォルトの名無しさん (ブーイモ MMb6-6jLp)
2023/09/10(日) 04:46:55.11ID:mjW4Nz4DM
私が嘘をつくように、Google ったものもやっぱり半信半疑だな。読みづらいけど、MSDN が頼りか。
798デフォルトの名無しさん (ブーイモ MMb6-6jLp)
2023/09/10(日) 04:52:52.27ID:mjW4Nz4DM
VC++ の絵本って巷に沢山あるのに、 P/Invoke の込み入った話なると絶滅するのは何でだろう。パンチラ的に紹介してる本は
持ってるが、暗黙で処理される範囲の、marshal_as しか書いてない。

別にあれだけでも、どんな型だろうと、力技で .NET へ展開はできるが、そういうヴァカげたことをしなくてもいいように
メソッドがあるらしいが・・ MSDN には網羅的に書いてない気がするんだよな・・

だれかプログラマの人、だれが知ってますか?
799デフォルトの名無しさん (ブーイモ MMb6-6jLp)
2023/09/10(日) 05:08:17.06ID:mjW4Nz4DM
https://www.pinvoke.net/

こんな面白いサイトがあった。
800デフォルトの名無しさん (ブーイモ MMb6-6jLp)
2023/09/10(日) 05:09:01.19ID:mjW4Nz4DM
でもこれ marshal じゃなく、 winAPI のサイトだった。騙された。
801デフォルトの名無しさん (ブーイモ MMb6-6jLp)
2023/09/10(日) 05:15:58.88ID:mjW4Nz4DM
今気づいたが、イマジナリショートの話題を出すこと自体が、名誉棄損になるんだな。

悪意はなかった。
802デフォルトの名無しさん (ワッチョイ 1710-y1iQ)
2023/09/10(日) 06:28:06.21ID:FLd+43pK0
なんか、ゴメンなみんな
変なの来て
803デフォルトの名無しさん (ワッチョイ 23c0-GCG0)
2023/09/10(日) 06:55:00.05ID:Ribu4gV00
こういう時は素数でも生成させて心を落ち着けよう
804デフォルトの名無しさん (スフッ Sdba-DsdQ)
2023/09/10(日) 10:31:59.53ID:Ze6l4C7Cd
>>784
OS に Windows って名前付けるセンスがもうね

新聞ではウインドウズとかウインドーズとかもう読むのも恥ずかしい
805デフォルトの名無しさん (ワッチョイ 7679-767B)
2023/09/10(日) 10:35:29.16ID:+iIUaIW20
>P/Invoke
>pinvoke
前から思ってたけど
どう見ても日本語ではピンボケって発音になるんだけど合ってるよね?
プラットフォームうんちゃらとは言わないよね?
806デフォルトの名無しさん (ワッチョイ a702-8VQg)
2023/09/10(日) 11:26:23.32ID:y88PGdZC0
無駄に長いレスで危険に気づいて触らなかったぜ
807はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-1kEh)
2023/09/10(日) 12:35:27.08ID:ucqWE+/B0
>>804
新聞は縦書きが基本やからラテンアルファベットは収まりが悪いんや。
808デフォルトの名無しさん (ワッチョイ 5fa7-fyxg)
2023/09/10(日) 12:47:45.53ID:RAKj8ghM0
VSがC++を広めたという功績をいい加減認識しよう
809デフォルトの名無しさん (オイコラミネオ MM63-SjEv)
2023/09/10(日) 13:00:33.33ID:YVmQiRtOM
>>778
それは本人が広めた俗説で武勇伝のように語ってる人がいるだけなんだけどなあ
その人の前にすでに使ってる人がいるらしい
810デフォルトの名無しさん (ワッチョイ 7679-767B)
2023/09/10(日) 13:04:43.55ID:+iIUaIW20
イマジナリーフレンドとか日本ではもう負のイメージしかない
811デフォルトの名無しさん (オイコラミネオ MM63-SjEv)
2023/09/10(日) 13:14:50.06ID:YVmQiRtOM
今はネットがあるけど本しかなかった時代はこうだと言いきったらそれがすべてのように語り継がれる
よくあった話

考えても無駄で声の大きな人が叫び続けたらそれが真実になった時代
812デフォルトの名無しさん (ワッチョイ 23c0-GCG0)
2023/09/10(日) 13:33:32.78ID:Ribu4gV00
>>808
昔はTurbo C/C++あたりも貢献してた気がする
813デフォルトの名無しさん (ブーイモ MMb6-6jLp)
2023/09/10(日) 17:22:43.47ID:mjW4Nz4DM
>>811 void(main) もそうだな。火勃の処理系での話を、一般のCの本で示したり。今は見かけないが。
814デフォルトの名無しさん (ブーイモ MMb6-6jLp)
2023/09/10(日) 17:24:08.39ID:mjW4Nz4DM
昔の Cの本では「オマジナイ」と書いてあったのもあったな。今思えばちゃんと書けばいいのになぜ端折るのか。
815デフォルトの名無しさん (ブーイモ MMb6-6jLp)
2023/09/10(日) 17:28:16.55ID:mjW4Nz4DM
>>812 漏れウトリ世代やが、ガッコの頃は未だ課題とかでは Borland C++ 試食版を使えて云はれてたな。
Express は有ったと思うが、まだ無料で使える認識はなかった。

IDEがお高いなら如何しようもないし。
816デフォルトの名無しさん (ブーイモ MMb6-6jLp)
2023/09/10(日) 17:30:50.00ID:mjW4Nz4DM
無料云々よりも MS 毛嫌いしてた教官が多かったな。逆に漏れは UNIX のシステムコールに嫌悪して、パソコンは向いてないなと絶望したクチだが。
817デフォルトの名無しさん (ブーイモ MMb6-6jLp)
2023/09/10(日) 17:33:23.68ID:mjW4Nz4DM
>>813 main(void) だったw 恥w 過去のゆがんだ知識だけで喋るとろくなことねぇな・・ググって喋るか・・
818デフォルトの名無しさん (ワッチョイ 7af0-SjEv)
2023/09/10(日) 19:09:04.52ID:Pd/KsKZr0
ID真っ赤の人居てこえよ
819デフォルトの名無しさん (スッップ Sdba-GCG0)
2023/09/10(日) 20:01:28.68ID:neTrtRBid
大丈夫
そいつの人生が燃え尽きる前の最後の連投だろうからじきに居なくなるはず
820デフォルトの名無しさん (ワッチョイ 5702-lR3i)
2023/09/10(日) 20:08:30.15ID:xFvkuA0z0
どんなスレでも、開いたら真っ先に赤い ID を連鎖で消せばエエんやで。読む必要なんて全くない。
821デフォルトの名無しさん (ワッチョイ 1ac8-Du02)
2023/09/10(日) 20:57:47.15ID:aESfk8YH0
Borland がまだ試用版出してることに気づいてビビったぬ
822デフォルトの名無しさん (ワッチョイ 1710-y1iQ)
2023/09/10(日) 21:03:42.16ID:FLd+43pK0
ボーランド買収されたんじゃなかった?
823デフォルトの名無しさん (ワッチョイ 0eda-JsEB)
2023/09/10(日) 22:03:12.34ID:2Yw/GuxT0
普通 MIWA C++
824デフォルトの名無しさん (ワッチョイ 9a6a-MmH2)
2023/09/10(日) 22:11:12.61ID:LbmwjQXL0
経緯はよう知らんけどBorland --> Embarcaderoやね
C++Builder(Delphiだったか?)の円盤に入ってたWin32APIヘルプファイルには大変お世話になりました
825デフォルトの名無しさん (ワッチョイ 2328-E2FL)
2023/09/10(日) 22:17:07.52ID:Pndu+c7V0
>>780
統合開発環境Visual Studioで動かせるC++なのだ
からでは……
826デフォルトの名無しさん (ワッチョイ 7679-767B)
2023/09/10(日) 22:20:12.44ID:+iIUaIW20
Delphiが始めからC/C++だったら天下取ってた
しかし当時のC++仕様は微妙すぎた
Delphiである程度成功はしたがBorlandにとっては運命の割れ目だった
827デフォルトの名無しさん (スッップ Sdba-Du02)
2023/09/10(日) 22:58:01.53ID:I57c0J7vd
標準無視して勝手に仕様拡張するワケにもいかんしぬ
828デフォルトの名無しさん (ワッチョイ 4efb-DZDQ)
2023/09/10(日) 23:08:31.10ID:r4gDBnSC0
運命とケツの割れ目はご愛嬌
829デフォルトの名無しさん (ラクッペペ MMb6-5CWk)
2023/09/10(日) 23:16:25.54ID:qGoahSWhM
独自拡張というならVC++は上位互換ではあるけどほぼ別言語といえるレベルにまで拡張してる(>>686)
C++

C++マネージ拡張

C++/CLI ← いまここ
830はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-1kEh)
2023/09/10(日) 23:29:23.31ID:ucqWE+/B0
>>825
Visual Studio のほうがだいぶんあとから登場したんだよ。
Visual C++ は C++ の統合開発環境であって、後に Visual Basic などの 他言語と統合された開発環境 Visual Studio のパッケージのひとつという扱いになった。 (それまでは Visual という名前を冠した一連の製品ではあっても個別のものだった。)
処理系をコマンドラインから起動すると Microsoft(R) C/C++ Optimizing Comiler と表示されるので処理系の名前としてはこれが正式(?)なのかもしれない。
831デフォルトの名無しさん (ブーイモ MM26-6jLp)
2023/09/10(日) 23:57:08.12ID:UW2UL+DpM
へぇ、ためになった。AI君も僕にかまってくれてありが 10。
832デフォルトの名無しさん (ブーイモ MM26-6jLp)
2023/09/10(日) 23:59:45.33ID:UW2UL+DpM
しかし AI script ってあんまり進化してないよな。技術的な質問に答えて呉れる AI を見たことがなひw
833デフォルトの名無しさん (ブーイモ MM26-6jLp)
2023/09/11(月) 00:00:58.12ID:XhEpfHVoM
AI君って何時から御活躍してんでせうか。もやし、したらば時代から居たとか?だから牽制のために ROM ってろ文化があった?
834デフォルトの名無しさん (ブーイモ MM26-6jLp)
2023/09/11(月) 00:04:51.51ID:XhEpfHVoM
自然言語処理の次は圏論か。これもクリアしたら人間っていったいなんだろうなみたいな存在になるな。
835デフォルトの名無しさん (ブーイモ MM26-6jLp)
2023/09/11(月) 00:06:56.39ID:XhEpfHVoM
頭で考えたら、美しい組版の帳票がアウトプットされる世の中はまだかい?

AIって人間虐待のための技術かょぅ
836デフォルトの名無しさん (ブーイモ MM26-6jLp)
2023/09/11(月) 00:08:08.65ID:XhEpfHVoM
この国の AI って下品なんだよなぁ。。上流階級のためのAIなのに、当の AI はとにかく下品。。。
837デフォルトの名無しさん (ブーイモ MM26-6jLp)
2023/09/11(月) 00:10:27.09ID:XhEpfHVoM
LaTeX のあの組版の美しさに感動するやうな感性を持った、 AI の登場が望まれる。

鮮人臭ただよう AI では夢がない。
838デフォルトの名無しさん (ドコグロ MM92-ZC1a)
2023/09/11(月) 00:21:07.18ID:VkTMNm5cM
躁は夜更かしすると悪化するから早く寝なさい
あと病院行きなさい
839デフォルトの名無しさん (オッペケ Sr3b-nVfW)
2023/09/11(月) 08:57:15.49ID:lFLbI9far
>>827
勝手に仕様拡張しても、皆が受け入れたら仕様の方が合わせてくるでそ
840デフォルトの名無しさん (スッップ Sdba-Du02)
2023/09/11(月) 09:22:30.05ID:5hY6loBvd
>>839
ソコマデ傲慢にわなれなかったんじゃネエかと思いますケドぬ
841デフォルトの名無しさん (アウアウウー Sa47-bpS4)
2023/09/11(月) 09:37:37.78ID:lXcI/Ajda
>>826
BorlandはDOS用のCUI上のC++GUIフレームワークのOWLっていうものを持ってたんだがな
MFCみたいな糞に負けるとは情けない
842デフォルトの名無しさん (アウアウウー Sa47-bpS4)
2023/09/11(月) 09:44:12.90ID:lXcI/Ajda
>>826
>>841 自己レスだが久々に調べてみたら
OWLNext っていうのが継承しているらしい
使って観れば良い
843デフォルトの名無しさん (スップ Sd5a-8evO)
2023/09/11(月) 11:53:35.40ID:L8vrhH0Dd
あれ見てきてるとエックスも結局匕に戻すんじゃねと懐疑
844デフォルトの名無しさん (ワッチョイ 2390-71cs)
2023/09/11(月) 20:12:39.40ID:OIxQu93L0
いつの日かVB6案件があるかもと思って
まだ押入れにVisualStudio6Enterがある

しかし受注するのはJavaやC/C++ばかり
845デフォルトの名無しさん (オッペケ Sr3b-fSdR)
2023/09/12(火) 13:44:31.46ID:T1psuRaDr
>>837
やうな→ような
訂正しておいてあげる
846はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-1kEh)
2023/09/12(火) 15:52:50.87ID:kNHas3Ho0
歴史的仮名遣いなんだろ。
知らんけど。
847デフォルトの名無しさん (ワッチョイ 76e7-erq7)
2023/09/13(水) 11:02:56.50ID:ubIK60Ld0
>>846
フリック入力の誤字だよ
知らんのか
848デフォルトの名無しさん (スップ Sdba-8evO)
2023/09/13(水) 12:00:14.07ID:w6WRlTikd
>>847
へぇ勉強になったは
849デフォルトの名無しさん (ワッチョイ 2d2c-Gac/)
2023/10/02(月) 22:29:06.35ID:ek48UNaT0
ポトペタってなんの略?
850デフォルトの名無しさん (ワッチョイ 5514-yTnr)
2023/10/02(月) 22:32:41.04ID:auss+27Z0
ポト&ペタ
851デフォルトの名無しさん (ワッチョイ 9b84-AvD6)
2023/10/02(月) 23:54:06.18ID:tTKA7bSS0
略じゃなくてオノマトペ
drag&dropのdropを「ポト」、pasteを「ペタ」と言ってる
知らんけど
852デフォルトの名無しさん (ワッチョイ 2379-Fe8P)
2023/10/03(火) 07:04:56.55ID:LgyCzmM/0
ペタは分かるがポトは違うと思う
853デフォルトの名無しさん (ワッチョイ 234c-eCpa)
2023/10/03(火) 10:21:18.73ID:s4jzp+7b0
>>851
違う英語になってるw
854デフォルトの名無しさん (アウアウウー Sa89-5C2y)
2023/10/03(火) 11:32:53.29ID:QaeBAOHSa
drag&dropのdropを「ぽと」と言ってる
cut&pasteのpasteを「ぺた」と言ってる
ってことだろ
855デフォルトの名無しさん (スップ Sd43-zsnM)
2023/10/03(火) 11:50:45.36ID:2CB+MFyFd
そこまで行くと季語もほしい
856デフォルトの名無しさん (ワッチョイ 4b43-Gac/)
2023/10/03(火) 12:22:27.65ID:DlHyTFki0
パタヘネと何か関係ある?
857デフォルトの名無しさん (ラクッペペ MMcb-0bz8)
2023/10/03(火) 12:25:21.52ID:2EpQUZ8oM
構成と設計
858デフォルトの名無しさん (ワッチョイ 3df5-2+lQ)
2023/10/03(火) 16:24:05.27ID:RJuubvLT0
ヘネシーパターソンだっけ
859デフォルトの名無しさん (アウアウウー Sa89-5C2y)
2023/10/05(木) 17:13:25.04ID:WXXGTjkDa
IDEやポトペタはキーボード打つのが遅い人用
860デフォルトの名無しさん (オイコラミネオ MMad-GYY9)
2023/10/07(土) 20:32:52.90ID:Dbx341NqM
youtubeで見たけどFC版のドラクエの作ってた人は何十年ぶりかのDQのデバッグで直接バイナリ書き換えてたな
ジャンプ先も数えてた

俺はIDEとポトペタ使わせてもらうわ
861デフォルトの名無しさん (アウアウクー MM35-wavJ)
2023/10/08(日) 00:23:41.50ID:LRxf1Mc5M
結局バグらなければいいから好きな方使えばいい
ただキーボード打つの速いからIDEいらないとかは
逆立ちでピアノ引けます自慢みたいなもの
ピアノ引くことが目的なのに逆立ち部分いらないだろっていう
862デフォルトの名無しさん (アウアウウー Sa39-OOOs)
2023/10/08(日) 09:50:31.76ID:CrdCteTPa
土日祝になると元気出るんだなおまいら
863デフォルトの名無しさん (ワッチョイ da79-4iaA)
2023/10/08(日) 11:34:25.75ID:SlOLtELZ0
涼しくなったのもあるね
むしろ寒い
864デフォルトの名無しさん (ワッチョイ 71da-ej96)
2023/10/13(金) 08:47:13.22ID:QvVhB9u10
江添さんが頭を剃りあげているのはストラウストラップ氏に対するリスペクトを表しているのですか?
865デフォルトの名無しさん (ワッチョイ 6905-YfmG)
2023/10/13(金) 09:54:31.02ID:GeJhkqxf0
名前出すのは止めろ
866デフォルトの名無しさん (ワッチョイ 9501-ue7z)
2023/10/13(金) 16:02:09.02ID:csQt26bs0
本出版しているので上げても構わんやろ?
867デフォルトの名無しさん (ワッチョイ da79-4iaA)
2023/10/13(金) 19:26:34.74ID:79LHTXDX0
本出版してるとハゲ呼ばわりして良いルールでもあんの?
868デフォルトの名無しさん (ワッチョイ 6905-YfmG)
2023/10/13(金) 19:31:14.43ID:GeJhkqxf0
今の時代、名指し発言はヤバいからな
869デフォルトの名無しさん (ワッチョイ 8d14-h3vX)
2023/10/13(金) 20:22:45.60ID:sLa7CNti0
ハゲることが男のたった一つの勲章だって
この胸に信じて生きてきた
870デフォルトの名無しさん (ワッチョイ 55f0-IgUm)
2023/10/13(金) 20:47:42.10ID:KYH72u1u0
マ板でやれ
871デフォルトの名無しさん (ワッチョイ 9501-NGE0)
2023/10/13(金) 21:08:09.45ID:csQt26bs0
>>867
ハゲ呼ばわりではなくて名前を上げること
本を公に刊行するということは批判の対象になるということ
名前を上げても構わない
872デフォルトの名無しさん (ワッチョイ c105-v2ln)
2023/10/14(土) 00:02:39.12ID:ma8uiWBB0
>>871
批判と侮蔑って全然違うけど、お前、本気でそれ言ってんの?
873デフォルトの名無しさん (ワッチョイ 5901-Vk26)
2023/10/14(土) 00:30:31.78ID:up3P3K8x0
>>872
俺がいつ侮辱した? どのスレや?
874デフォルトの名無しさん (ワッチョイ 3943-gsUY)
2023/10/14(土) 06:54:24.53ID:FQQzLMjC0
出版物の内容についての言及なら著者名を出したっていいよ
リスペクトで髪剃ってるのか?とか出版物関係ないだろ そういうのはやめろって話だ
875デフォルトの名無しさん (ワッチョイ 5901-Vk26)
2023/10/14(土) 10:57:26.58ID:up3P3K8x0
>>874
>リスペクトで髪剃ってるのか?とか出版物関係ないだろ そういうのはやめろって話だ
それは俺じゃない
876デフォルトの名無しさん (ワッチョイ 1379-3b5p)
2023/10/14(土) 12:06:47.14ID:91QwaM6H0
俺じゃないならなんでこの流れでわざわざ出版があーだこーだ言い出したの?
そういった行為は横紙破りって言うんだよ口語ではあんま使わない言葉だけど
社会でうまくやっていけてなさそう
877デフォルトの名無しさん (ワッチョイ d17c-YxuP)
2023/10/14(土) 12:10:00.69ID:JB0xgUuV0
また紙の話してる
878デフォルトの名無しさん (アウアウウー Sadd-f0fU)
2023/10/14(土) 12:14:09.72ID:x03gZ5vca
自分で剃ってるのかと思ったが
本人が反論したことで
本人の望まない形で禿ていることがバレるという悪循環
879デフォルトの名無しさん (ワッチョイ 5901-Vk26)
2023/10/14(土) 12:42:26.40ID:up3P3K8x0
>>876
彼は出版しているので
名前を出されても構わない立場の人間であるということ
モブとは違うんだよ
880デフォルトの名無しさん (ワッチョイ 53cb-k/Ti)
2023/10/14(土) 13:20:35.60ID:ULvJZdiM0
Twitterにいつもいるから直接聞けよコミュ障
881デフォルトの名無しさん (ワッチョイ c105-v2ln)
2023/10/14(土) 18:20:44.57ID:ma8uiWBB0
>>880
正論

>>879
書いてないと主張するお前が、名前が書かれた文章前半の一部のみ勝手に正当主張をしてるのはわかってるんだけど、後半の文章についてはどう考えてるの?
882デフォルトの名無しさん (ワッチョイ 5901-Vk26)
2023/10/14(土) 19:26:26.32ID:up3P3K8x0
>>881
>書いてないと主張するお前が、名前が書かれた文章前半の
>一部のみ勝手に正当主張をしてるのはわかってるんだけど、
>後半の文章についてはどう考えてるの?
どれか分からんからきちんと書け
883デフォルトの名無しさん (ワッチョイ c105-v2ln)
2023/10/14(土) 21:50:40.28ID:ma8uiWBB0
横から入ってきた割に、話が通じないやつって初めて見た
884デフォルトの名無しさん (ワッチョイ 5901-Vk26)
2023/10/14(土) 21:57:24.93ID:up3P3K8x0
>>883
プログラム書いてるだろうに文章が下手過ぎるから話が通じない
俺は侮辱するようなことは一言も書いていない
別人が書いたのを読み違えてるんだよ
885デフォルトの名無しさん (ワッチョイ b990-lUy8)
2023/10/15(日) 06:50:14.19ID:DwcyuqQy0
基地外のスレチ荒らしはスルーしようぜ
886デフォルトの名無しさん (ワッチョイ c105-v2ln)
2023/10/15(日) 07:30:07.34ID:T2NVqJIH0
>>864は覚えておくわ
887デフォルトの名無しさん (ワッチョイ 5901-Vk26)
2023/10/15(日) 11:44:46.43ID:S1qRngxA0
>>>886
ちゃんと覚えとけよ
それは俺じゃないからね
888デフォルトの名無しさん (ワッチョイ 13f0-jdKV)
2023/10/15(日) 17:41:10.31ID:9kWoH1jw0
ハゲはナニやってもハゲるらしいからな
理由なんて無いだろう
889デフォルトの名無しさん (ワッチョイ 13f0-jdKV)
2023/10/15(日) 17:43:05.48ID:9kWoH1jw0
ハゲるヤツはナニやってもハゲるらしいからな
そもそも理由なんて無いのだろう
890デフォルトの名無しさん (ワッチョイ 1302-os2T)
2023/10/15(日) 21:12:08.28ID:ehVuw9SG0
いつまでもお傍にいます、最後まで…
891デフォルトの名無しさん (ワッチョイ 01f5-uehJ)
2023/10/16(月) 08:48:43.37ID:yu+2eKsI0
Stroustrupのことはハゲハゲ言うくせに江添に対しては厳しいんだなw
892デフォルトの名無しさん (スッップ Sd33-boBM)
2023/10/17(火) 17:04:23.91ID:zRs2E77Cd
言う程ハゲてない
まだ大丈夫
893デフォルトの名無しさん (スッップ Sd33-boBM)
2023/10/17(火) 17:04:42.90ID:zRs2E77Cd
言う程ハゲてない
まだ大丈夫
894デフォルトの名無しさん (アウアウウー Sadd-wvjH)
2023/10/17(火) 17:55:21.31ID:it1TRy+pa
ひさしぶりにこのスレにきてわかったことがひとつある

C++はハゲと相性が良い
895デフォルトの名無しさん (ワッチョイ 1379-3b5p)
2023/10/17(火) 19:10:02.16ID:LcuTSSJS0
C++使うとハゲるって当初噂になったぐらいだが
知らんのか
896デフォルトの名無しさん (ワッチョイ 59da-jdKV)
2023/10/17(火) 20:35:53.51ID:B/3DhPmO0
空いたプランクを埋めるためにC++言語仕様を高速に無理矢理理解しようとすると却ってストレスがたまってハゲることになる恐ろしい言語
897デフォルトの名無しさん (ワッチョイ 39f8-jJly)
2023/10/17(火) 21:21:23.39ID:WuBQOYXz0
>>895
MJD?

Miwa C++ のエピスメーテーさんもHAGEなの?
898デフォルトの名無しさん (ワッチョイ 01a7-QDHO)
2023/10/18(水) 21:04:49.19ID:UzfqKL8d0
禿げるというより若白髪は明らかに増えたわ
899デフォルトの名無しさん (ワッチョイ c914-cthS)
2023/10/18(水) 21:21:08.16ID:ELvl69q70
いや、お前はもう若くはない
900デフォルトの名無しさん (ワッチョイ c914-cthS)
2023/10/18(水) 21:22:58.52ID:ELvl69q70
いや、お前はもう若くはない
901デフォルトの名無しさん (ワッチョイ c914-cthS)
2023/10/18(水) 21:25:02.33ID:ELvl69q70
もう若くはないのだ
902デフォルトの名無しさん (ワッチョイ c901-Vk26)
2023/10/18(水) 21:59:07.00ID:eoT4PoLM0
時期を逸するというのはなんとも悲しいものだ
取り返しはつかない
903デフォルトの名無しさん (ワッチョイ 1379-3b5p)
2023/10/18(水) 22:40:09.97ID:tODhST9E0
C++とMFCのコンボで世の中の何本の毛根が失われたのだろう
904デフォルトの名無しさん (ワッチョイ c901-Vk26)
2023/10/18(水) 22:52:13.26ID:eoT4PoLM0
取り返しはつかない
905デフォルトの名無しさん (ワッチョイ 3963-1J/V)
2023/10/19(木) 22:15:33.96ID:PH9oNQB60
質問なのですがサイズ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); }
906デフォルトの名無しさん (ワッチョイ 797f-/4nw)
2023/10/19(木) 23:37:01.14ID:49m1KrYl0
vec.insert(vec.begin() + i, elem);
907デフォルトの名無しさん (ワッチョイ fbda-jdKV)
2023/10/20(金) 09:00:04.92ID:Z7DUQLh+0
simple is best よ
何事も
908デフォルトの名無しさん (スフッ Sd33-Kt/B)
2023/10/20(金) 09:44:04.99ID:JTOR6W7Wd
だから I hate C++ の Matz はまだフサフサなのか
909デフォルトの名無しさん (ワッチョイ b990-lUy8)
2023/10/20(金) 15:53:09.23ID:IDnubi5y0
コードの内容なんか忘れた半年後に
再びコード見てその瞬間、分かるように書くのが一番
その為のSimple is bestに同意
910はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7b3e-RnKc)
2023/10/20(金) 16:04:48.20ID:+Ixb2Hv20
読み取りやすいように書くのは大事だけど、少し汚くても
わかりやすい名前を付けておけば割となんとかなる。
911デフォルトの名無しさん (ワッチョイ 0134-l/11)
2023/10/20(金) 20:55:51.96ID:jh4JxiwB0
おっと、名前付けの話?オッチャン持論語っちゃう

関数に長い名前つけるのはありと思うが、変数名は宣言箇所にコメント書いて2文字とか短い変数名が好き

ワシは元々BASICから始まってSmalltalkを学んだクチだけど、一時期のjavaみたいななんでも長い名前にするやつ大っきらい。Cの母音ラクダ方式大好き
912デフォルトの名無しさん (ワッチョイ dd14-PKJr)
2023/10/21(土) 00:04:43.68ID:JSr5Bd510
お前の好き嫌いでは議論にならん
優劣を語れよ、ジジイ
913デフォルトの名無しさん (ワッチョイ 1934-egvn)
2023/10/21(土) 01:04:06.34ID:m23W7dra0
>>912
が優劣について数字を出して語ってくれるそうです
どうぞw
914はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 8da2-+JM7)
2023/10/21(土) 02:43:39.26ID:WDz67hDs0
C++ はある程度は汚いものだろう。
隅々まで綺麗にしようと腐心するよりは
少なくとも部品のインターフェイスくらいはまともにして
外側に対しては綺麗なふりをするくらいが手頃な妥協点だと思う。
逆にミクロ的にスマートに書けていても
抽象化が駄目だと使いにくいよ。

内も外も綺麗ならそれに越したことはないけど
そうもいかないのが現実だからね。
915デフォルトの名無しさん (ワッチョイ d563-KkNu)
2023/10/21(土) 08:17:46.79ID:pQG7G9ym0
>>906
天才か!
なんかこの前動かしたら駄目だった気がしたけど
今やったら動いたわサーセン;;;
916デフォルトの名無しさん (オイコラミネオ MMbd-JD/u)
2023/10/21(土) 12:13:35.82ID:3FTa9ZLeM
vectorなのかvecなのかは言語開発者がそうと決めたからそうなってるだけ
昔はコード補間もなくx-windowのアホみたいな長い呪文APIぶち込んでたけど今もそれだったらぶち切れてる

意外なことに開発環境が変わればいろいろ変わる
917デフォルトの名無しさん (オイコラミネオ MMbd-JD/u)
2023/10/21(土) 12:24:11.96ID:3FTa9ZLeM
今windowの更にクソ長い基地外じみたAPI打ってるのもコード補完があるから
918デフォルトの名無しさん (アウアウウー Sa09-mHTC)
2023/10/21(土) 13:25:34.47ID:oEOsfkqwa
名前の長い短かいについては上述のとおり技術の進歩、開発環境の変化で落しどころがかわってくるが
俺的にはむしろネーミングのセンスのほうが気になる
俺がまだフサフサだったころはイキって一般によく使われる単語とちょっと違う単語をわざわざ探すようなことをしていたが
頭髪が薄くなるに従ってそういうことはくだらない事と思うようになり
今はできるだけベタな誰が見ても即座に意味がつかめる、あえてダッサいネーミングをするよう心がけてる
例:データを吸いあげて収納するメソッド名
フサフサ俺がつけがちな名前 → .BeamMeUp()
ハゲ俺がつける名前 → .LoadData()
919はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 8e3e-exru)
2023/10/21(土) 13:28:07.89ID:lPxmC+mr0
>>915
std::vector のイテレータの場合に限らず
ランダムアクセスイテレータは difference_type との加算が出来ることになってる。
https://timsong-cpp.github.io/cppwp/n3337/iterator.requirements#tab:iterator.random.access.requirements
920デフォルトの名無しさん (ワッチョイ 19f2-awtI)
2023/10/21(土) 13:55:07.32ID:QfWCszfk0
>>918
仕事でやってたら初日で怒られるレベル
921デフォルトの名無しさん (ワッチョイ 7a79-Idv/)
2023/10/21(土) 14:25:15.02ID:ifbOBJO10
>データを吸いあげて収納する
ハゲなのに5W1Hすら知らないと見える
922デフォルトの名無しさん (ワッチョイ 8eca-ANn9)
2023/10/21(土) 19:03:13.06ID:l7vz3TvG0
恥ずかしながら学生の頃はドイツ語で命名してましてねフフフ
923デフォルトの名無しさん (ワッチョイ 0105-SFbe)
2023/10/21(土) 19:20:36.30ID:5c+gSFSX0
korewahennsuudesu
924デフォルトの名無しさん (ワッチョイ d563-KkNu)
2023/10/21(土) 20:59:24.58ID:pQG7G9ym0
>>919
レス引用が分かりにくくてスマンカッタorz
そこではなくて挿入位置にsize()まで指定してたら末尾に要素が追加にできるところ
std::vector<int> vec = { 1, 2, 3 };
vec.insesrt(vec.begin() + vec.size(), 4);
cout << vec << endl; // ( 1 2 3 4 )
925デフォルトの名無しさん (ワッチョイ 6501-6i8i)
2023/10/21(土) 21:41:14.77ID:BercqiEL0
ラズパイレートでいうと
民主党政権の頃は1ドル80円だったけど
いまは1ドル200円
926デフォルトの名無しさん (ワッチョイ 6501-6i8i)
2023/10/21(土) 21:41:30.90ID:BercqiEL0
ラズパイレートでいうと
民主党政権の頃は1ドル80円だったけど
いまは1ドル200円
927デフォルトの名無しさん (ワッチョイ 6501-6i8i)
2023/10/21(土) 22:50:32.79ID:BercqiEL0
>>921
5W1HはMITが提唱したんじゃなかったっけ
928デフォルトの名無しさん (ワッチョイ 1590-wvhw)
2023/10/22(日) 12:33:14.88ID:x1FYC/BU0
変数でも関数でも
初見もしくは内容忘れた自分が
読んだとき何をやってるか分かるような名前付けが大事だと思う
よって長さは常識の範囲内なら長い方が良いかな

どうでもいいループ変数にindex2SearchArgumentHaystackとか
書いてたら殺意を覚えるけどさ
929デフォルトの名無しさん (オイコラミネオ MMbd-JD/u)
2023/10/22(日) 17:33:51.66ID:Ih9eQULqM
GetSelectedPersonDataFromLiveDBIfNotExistsReadDefaultValueFromSettingFileType2022Ex
930デフォルトの名無しさん (ワッチョイ 0105-SFbe)
2023/10/22(日) 17:36:33.94ID:+fVR99EM0
= 1 ;
931デフォルトの名無しさん (ワッチョイ 6501-6i8i)
2023/10/22(日) 19:20:31.79ID:/8xzlJDV0
モジュールはまだ使えんのか?
932デフォルトの名無しさん (ワッチョイ 8e3b-xUKY)
2023/10/22(日) 20:40:59.32ID:XK8cC57k0
リテラルで簡潔に書けるのでみんな初期化子リストばんばん使ってると思うけど
initializer_listって必ずコピーが発生するのな
non copyableなクラスが使えなくて不便なんだが、回避策ない?
933デフォルトの名無しさん (ワッチョイ 5d01-46Vy)
2023/10/22(日) 20:47:43.40ID:tZaS4o4u0
>>932
>non copyableなクラスが使えなくて不便なんだが、回避策ない?
moveすれば?
934デフォルトの名無しさん (ワッチョイ 8e01-tEca)
2023/10/22(日) 23:26:18.52ID:XK8cC57k0
>>933
できないんだよ
935デフォルトの名無しさん (ワッチョイ 5d01-46Vy)
2023/10/22(日) 23:33:55.26ID:tZaS4o4u0
>>934
???
どんなコードで問題出てるの?
936デフォルトの名無しさん (ワッチョイ 8e3b-xUKY)
2023/10/23(月) 01:32:53.76ID:sueaiNV30
>>935
https://wandbox.org/permlink/n0KXbXrmLzHDl6KU

次のコードがコンパイルできない

struct A {
 A(int) {}
 A(const A&) = delete;
};

int main()
{
 std::vector<A> v = { 1, 2, 3 };
}
937デフォルトの名無しさん (ワッチョイ 1998-awtI)
2023/10/23(月) 05:17:34.59ID:RG/DfB7W0
>933, >>935
https://www.google.com/search?q=initializer_list+move
クソ回答する前にググれよ
938デフォルトの名無しさん (ワッチョイ 5d01-46Vy)
2023/10/23(月) 09:29:50.40ID:9KLj8HWs0
>>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
939デフォルトの名無しさん (ワッチョイ 5d01-46Vy)
2023/10/23(月) 10:27:22.01ID:9KLj8HWs0
だめかなぁ...
#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 });
}
940デフォルトの名無しさん (ワッチョイ 4eda-CTkJ)
2023/10/23(月) 11:36:11.62ID:OKLUF2xV0
>>936
コピコン消したいなら代入オペレータ用意してやらんとダメだろ
941デフォルトの名無しさん (ワッチョイ 1a20-ANn9)
2023/10/23(月) 13:23:41.68ID:1EMVV/4H0
initializer_list<A&&>が作れないから波括弧初期化できないって話か
なるほどね
942デフォルトの名無しさん (ワッチョイ 19f4-awtI)
2023/10/23(月) 19:21:53.26ID:RG/DfB7W0
initializer_list作るとこまでは出来てもムーブで取り出せないのよ
だからvectorのコンストラクタにinitializer_listで渡すとエラー出るし、>>939のように
const外して一つずつ突っ込むとかしなきゃいけなくなる
ムーブ可能にする提案は出てるらしいけど
https://cpplover.blogspot.com/2014/11/2014-10-pre-urbana-mailings-n4160-n4169.html?m=1
943デフォルトの名無しさん (ワッチョイ 1909-awtI)
2023/10/24(火) 05:35:10.47ID:RZM2X1OT0
https://wandbox.org/permlink/h9ZXqkhA56d7EOYP
std::vectorだからどうしようもないけど、自作クラスならinitializer_listよりも可変長テンプレートをオススメしたい
これならコピー不可(ムーブのみ)なクラスでも集成体初期化出来る
(ただしコンセプトかenable_ifでAまたはAに暗黙変換可能な型に限定すべき、enable_ifでもメタプログラミングで条件式作れる)
944デフォルトの名無しさん (ワッチョイ 1909-awtI)
2023/10/24(火) 05:38:03.34ID:RZM2X1OT0
あ、すまんコメントのとこだけどis_convertible_vの引数は逆だった
945デフォルトの名無しさん (ワッチョイ 1909-awtI)
2023/10/24(火) 05:42:10.71ID:RZM2X1OT0
もう一つ訂正すまん、集成体初期化じゃないな一様初期化かリスト初期化かorz
946デフォルトの名無しさん (スッップ Sd9a-SL8W)
2023/10/24(火) 08:43:43.05ID:NeqpGeoJd
教訓
std::vectorは使い物にならない
947デフォルトの名無しさん (ワッチョイ 5d01-46Vy)
2023/10/24(火) 11:05:08.48ID:B30+3CR30
>>946
何で?
948デフォルトの名無しさん (ワッチョイ 999f-dytz)
2023/10/24(火) 11:09:20.45ID:AiEp9cgJ0
もうC++の仕様拡張はもう限界なんだよ
あっちを立てればこっちが立たずが毎回問題になる
949デフォルトの名無しさん (ワッチョイ 5558-8kgw)
2023/10/24(火) 11:19:38.47ID:1IilAibW0
std2 作ってゼロからやり直さないと C++はどうにもならんね
950デフォルトの名無しさん (ワッチョイ 4eda-CTkJ)
2023/10/24(火) 11:40:18.75ID:nK1YbT6/0
iostreamの二の足を踏みそうだ
951デフォルトの名無しさん (ワッチョイ 5d01-46Vy)
2023/10/24(火) 12:18:26.26ID:B30+3CR30
>>946,948-950
具体的に議論しようぜ
952デフォルトの名無しさん (ワイーワ2 FF62-6i8i)
2023/10/24(火) 12:59:19.46ID:2UheMrybF
>>946
deque の方が常に良いことが多いと思う

initializer_list でうまくいかんときは
make_tuple か tie でごまかしたことがある気がするけど
あれも move じゃなくて copy だったかな

最近は Rust の方がその辺は楽な気がするな
953デフォルトの名無しさん (ワッチョイ 5d01-46Vy)
2023/10/24(火) 13:10:28.54ID:B30+3CR30
>>952
initializer_listでmoveできない問題なら>>939で良いのでは?
template化して関数名短くすれば使い心地は{}と
そう変わらんと思うが?
954デフォルトの名無しさん (ワッチョイ 8eca-ANn9)
2023/10/24(火) 22:26:14.45ID:0fDOryx60
文字コード周りだけは決着つけてくれ!
955デフォルトの名無しさん (ワッチョイ ba48-g88S)
2023/10/26(木) 08:51:51.55ID:+j1jszqL0
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とすると何がおきるのでしょうか
956はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 8e3e-exru)
2023/10/26(木) 09:25:01.17ID:oN20rU1J0
>>955
格納しているのがペアなんだからペアの second 側が得られるってだけ。
イテレータは operator* や operator-> をオーバーロードしていて
要素へのポインタであるかのように扱えると考えていい。
957デフォルトの名無しさん (スププ Sd9a-Cy5w)
2023/10/26(木) 22:18:49.00ID:eAGx217zd
単に入れ子になってるだけ
ポインタの先の要素がまたポインタで指してるだけ
958デフォルトの名無しさん (ワッチョイ ba48-g88S)
2023/10/27(金) 08:11:42.47ID:IlYWK5hg0
>>956-957
ありがとうございました。
iteratorを返したらそのiteratorに対してさらにsecondを呼び出しているのですね
959デフォルトの名無しさん (ワッチョイ 5101-CP9B)
2023/10/29(日) 23:41:12.89ID:JPy8qBbk0
C++モジュールについて
・CMakeが3.26で実験的対応、3.28で正式対応
・g++は対応状況が良くないが、2024年第二4半期に対応できるとKitwareは考えている
・VS2022最新版内臓のCMakeバージョンは3.26
・Clangとclはモジュールに対応している
960デフォルトの名無しさん (ワッチョイ 13ad-c8RC)
2023/10/30(月) 13:05:26.07ID:bW5EQkS/0
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; // 外側のループ抜け
}
961デフォルトの名無しさん (アウアウウー Sad5-g+2W)
2023/10/30(月) 13:37:46.82ID:xnp7PI6ya
>深い入れ子のループを終了するには goto ステートメントを使用する必要がある場合もあります
って描いてあるしそれが問題とは言ってないんじゃないか
962デフォルトの名無しさん (ワッチョイ 297c-tLJy)
2023/10/30(月) 14:24:40.02ID:eEth4IuV0
とりあえずダイクストラ大先生の例の論文読もうぜ
963デフォルトの名無しさん (ワッチョイ 13ad-c8RC)
2023/10/30(月) 15:01:52.03ID:bW5EQkS/0
まあ問題あるならそもそも導入されるはずがないわけで問題ないのは分かるんだけど
「可能な限り〜お勧めします。」と言うように使用を推奨しない理由は何なのかなと
例えば特定の処理が飛ばされて動作しなくなる場合があるとかなんかな?と
964デフォルトの名無しさん (ワッチョイ 9b91-lnbO)
2023/10/30(月) 15:54:27.55ID:A0jdf3Dt0
それはrustのラベルbreakのような
安全なループの抜け方しか考えてないから安全で当たり前
c/c++のgotoはもっと凶悪なことができる
965デフォルトの名無しさん (ワッチョイ 297c-tLJy)
2023/10/30(月) 16:23:23.04ID:eEth4IuV0
C++のgotoはちゃんとデストラクタを呼んでくれるから、意外とそんなに破滅的なことにはならんのだよね
だからって多重ループ脱出以外で使おうとは思わんけど
966デフォルトの名無しさん (ワッチョイ 8101-VINR)
2023/10/30(月) 16:30:54.25ID:hnsSyQft0
俺は例外投げて脱出する
967デフォルトの名無しさん (ワッチョイ 9b91-lnbO)
2023/10/30(月) 16:35:01.03ID:A0jdf3Dt0
>>966
気軽に例外投げるとデバッガが使いづらくなるからやめときな
少なくとも仕事では
968デフォルトの名無しさん (ワッチョイ 13ad-c8RC)
2023/10/30(月) 16:40:27.98ID:bW5EQkS/0
多重ループ脱出で使っている人って多いんかな?
他にこういう使い方しているとかってない?
969はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9b3e-g5YV)
2023/10/30(月) 16:45:14.84ID:I7fISnX+0
>>963
一般論としてはそのほうが分かりやすくなるからというだけのことだと思うよ。

ただ、それで分かりやすくならないとき、
チマチマした条件チェックであっちこっち行くよりは
流れをぶった切って goto したほうがいっそわかりやすいこともあるってのが
goto が必要な場面ってことなんだわ。
970デフォルトの名無しさん (ワッチョイ 8101-VINR)
2023/10/30(月) 17:14:03.48ID:hnsSyQft0
>>967
と言いますと?
971デフォルトの名無しさん (ワッチョイ d9ab-txvC)
2023/10/30(月) 17:24:30.69ID:9eqG7NVC0
ラムダ式にする
972デフォルトの名無しさん (ワッチョイ 297c-tLJy)
2023/10/30(月) 17:57:47.45ID:eEth4IuV0
>>968
自分としては多重ループ脱出がC++でのgotoの唯一の実用的な用途だと思ってる(とはいえめったに使わない)
Cなら疑似finally的な後処理に使うこともあるけど、それはC++ならRAIIにすべきだしな
それ以外の戻ったり余所のスコープに侵入したりはもちろんCでもC++でも論外
973デフォルトの名無しさん (ワッチョイ 8114-Qq8E)
2023/10/30(月) 18:39:22.51ID:VfsLhOLn0
何度も繰り返すgotoの話になると人が湧くな
974デフォルトの名無しさん (ワッチョイ 9b91-lnbO)
2023/10/30(月) 18:54:25.65ID:A0jdf3Dt0
>>970
VSのデバッガは例外投げられるとメッセージでる(設定変えればオフにはできる)
また設定によってはブレイクする
正常処理のくせに頻繁に例外投げられると非常にうざいし、本当の異常を見過ごす
975デフォルトの名無しさん (ワッチョイ 5101-CP9B)
2023/10/30(月) 19:04:07.11ID:qWSrxYwr0
switchとgoto組み合わせて状態機械作ってる
976デフォルトの名無しさん (ワッチョイ 9b91-lnbO)
2023/10/30(月) 19:54:14.15ID:A0jdf3Dt0
gcc拡張のlabelのアドレスとれるやつとかな
昔はイキって使ってたわ
977デフォルトの名無しさん (ワッチョイ 8101-jlrJ)
2023/10/30(月) 20:16:27.75ID:hnsSyQft0
>>974
そりゃうざいデフォルト設定だな
ループの脱出に限らず例外くらい普通に使うやろ?
ちゃんと切っとけ
978デフォルトの名無しさん (ワッチョイ 9b91-lnbO)
2023/10/30(月) 20:43:41.27ID:A0jdf3Dt0
>>977
例外が起こったときは何かおかしいことが起こっている予兆と考える防御的なVSをおれは支持する
だいたい例外安全って何それ?ってレベルのやつも多いだろ
例外で遊ぶのは趣味のときだけにしとけ
979デフォルトの名無しさん (オイコラミネオ MM6d-H9h+)
2023/10/30(月) 20:48:14.67ID:JbGfWzUOM
ループ脱出レベルで例外を使うのは変だと感じる
関数抜けないのに例外なんて…
980デフォルトの名無しさん (オイコラミネオ MM6d-H9h+)
2023/10/30(月) 20:54:46.61ID:JbGfWzUOM
んで大昔に例外に似た機能のFound文Match文とか妄想してたんだな

実質タダのgoto文
981デフォルトの名無しさん (ワッチョイ 8101-jlrJ)
2023/10/30(月) 20:54:46.86ID:hnsSyQft0
>>978
ループに限らず孫関数ひ孫関数からエラーで脱出するときどうしてんの?
例外使わんか?
982デフォルトの名無しさん (オイコラミネオ MM6d-H9h+)
2023/10/30(月) 20:57:56.27ID:JbGfWzUOM
例外は通常動作として起こらないような動作で起こすもので
何か探すループなんかで実際に対象が見つかったとしてそれは「例外」なのか?
ちがうだろー
983デフォルトの名無しさん (ワッチョイ 8101-jlrJ)
2023/10/30(月) 20:58:12.43ID:hnsSyQft0
>>979
俺はgotoは全く書かないな
パフォーマンス的にはgotoの方が良いかな?
984デフォルトの名無しさん (ワッチョイ 8101-jlrJ)
2023/10/30(月) 20:59:51.11ID:hnsSyQft0
>>982
実にくだらない理由だと思う
985デフォルトの名無しさん (オイコラミネオ MM6d-H9h+)
2023/10/30(月) 21:01:36.17ID:JbGfWzUOM
>>984
それが一般的な解釈でおかしな使い方をしてる人間は影で笑われている
986デフォルトの名無しさん (ワッチョイ 8101-jlrJ)
2023/10/30(月) 21:06:32.49ID:hnsSyQft0
>>985
人格を攻撃するような書き込みはやめようね
987デフォルトの名無しさん (オイコラミネオ MM6d-H9h+)
2023/10/30(月) 21:07:29.46ID:JbGfWzUOM
例外はパフォーマンス的に重いしそれ以前に
正常系の出力を異常系で投げるのはおかしい

まったくもって異常
988デフォルトの名無しさん (ワッチョイ 297c-tLJy)
2023/10/30(月) 21:08:57.30ID:eEth4IuV0
よその言語ではイテレータの終了通知に例外使ってたりするから人格否定するほどの話ではない
C++の慣用としてやられてないし向いてないってだけ
989デフォルトの名無しさん (オイコラミネオ MM6d-H9h+)
2023/10/30(月) 21:09:03.25ID:JbGfWzUOM
>>986
人格自体は攻撃してないだろ
事実
990デフォルトの名無しさん (ワッチョイ 8101-jlrJ)
2023/10/30(月) 21:12:55.48ID:hnsSyQft0
>>987
>正常系の出力を異常系で投げるのはおかしい
これを書いたのはあなたで私ではないよ
991デフォルトの名無しさん (ワッチョイ 8101-jlrJ)
2023/10/30(月) 21:14:51.99ID:hnsSyQft0
>>989
>>987の「例外はパフォーマンス的に重いし」のような議論は分かるが
>>985は人格を攻撃している書き込み
気をつけ給え
992デフォルトの名無しさん (ワッチョイ 9b91-lnbO)
2023/10/30(月) 21:19:13.29ID:A0jdf3Dt0
>>981
エラーならありだがtry catch書かされるのもだるいだろ
現実的に例外投げる場合はそのまま終了か、フルリブートするしかないときって考えたほうがいい
993デフォルトの名無しさん (オイコラミネオ MM6d-H9h+)
2023/10/30(月) 21:19:21.17ID:JbGfWzUOM
非常に大切で根本的な理由と例を挙げたのに「実にくだらない理由」としか取られないのが残念
例外はただの制御構文ではない
994デフォルトの名無しさん (オイコラミネオ MM6d-H9h+)
2023/10/30(月) 21:20:50.60ID:JbGfWzUOM
>>991
実にくだらない理由か本当に?
理解不足だと思うけど
995デフォルトの名無しさん (ワッチョイ 1bda-9b8G)
2023/10/30(月) 21:22:28.46ID:J+/7yoK80
凶悪といえばAnsiCのsetjmp()とlongjmp()
あれらを規格に入れてるのはキチガイとしか
996デフォルトの名無しさん (ワッチョイ 8101-jlrJ)
2023/10/30(月) 21:25:34.77ID:hnsSyQft0
>>993,994
そう思う

>>982
>例外は通常動作として起こらないような動作で起こすもので
これは今行っている議論の対象である

>何か探すループなんかで実際に対象が見つかったとしてそれは「例外」なのか?
何に使うかの理由に名称を持ち出すのは
私はくだらないと考えている
997デフォルトの名無しさん (オイコラミネオ MM6d-H9h+)
2023/10/30(月) 21:28:39.53ID:JbGfWzUOM
>>996
概念だろ
それが一番大切で実装の基本だろ

C++自体の仕様が変わるとしても例外と言う概念に沿って変わることになるはずだ
今適当にマッチを投げていて仕様がより例外側に代わってその時その使い方は生き残れるのだろうか?
998デフォルトの名無しさん (ワッチョイ 8101-jlrJ)
2023/10/30(月) 21:31:50.44ID:hnsSyQft0
>>997
templateメタプログラミングとか許せない人ですか?
999デフォルトの名無しさん (ワッチョイ d1ad-AT6i)
2023/10/31(火) 06:57:27.99ID:BIE3G76Q0
Core Guideline にも例外はエラー処理だけに使えとある.
多重ループからの脱出が本当にエラー処理なの?
1000デフォルトの名無しさん (ワッチョイ 1379-JwVi)
2023/10/31(火) 07:21:48.58ID:1/1CCAX60
質問いいっすか?
10011001
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 174日 19時間 30分 57秒
10021002
Over 1000Thread
5ちゃんねるの運営はUPLIFT会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《UPLIFT会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
4 USD/mon. から匿名でご購入いただけます。

▼ UPLIFT会員登録はこちら ▼
https://uplift.5ch.net/

▼ UPLIFTログインはこちら ▼
https://uplift.5ch.net/login

ニューススポーツなんでも実況



lud20250310112750ca
このスレへの固定リンク: http://5chb.net/r/tech/1683600652/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 
  ↓この板の人気?スレ↓(一覧)
 
【.NET】F#について語れ3【OCAML】
C#, C♯, C#相談室 Part98
開発工数を大幅削減できた言語は存在しない
Copyrightは著作者を守る権利でなくコピーする権利
スレ立てるまでもない質問はここで 147匹目
プログラミングがわからなすぎる
【悲報】リーナス、横80文字やめるってよ
【DDD】ドメイン駆動設計【エリック・エヴァンス】
Julia「いくぞ!」Python「合体!」R「ったい!」→
Visual Studio Code / VSCode Part11
従軍慰安婦はでっち上げ
C言語で関数を書いていくスレ
ハッシュ使うのやめてクラスにしましょう
PHP,Ruby,Pythonは運用コスパが悪い/Java最強伝説
gifガイジを作るンゴ!
Machine Learning's code generator伝説
スクラム Redux Reactive
Pythonは同じ事するのにforと内包表記の2つの方法が
C++でXML(主にxerces)やろう!
AI AI って夢見すぎてない?
アセンブリ
アマゾン配達AI「配達地まで40kmなので1時間で行け」
ウイルスの最小サイズについて
お前らが持ってる資格を書いてけ(IT以外でもOK)
Dart part1
書いたプログラムを批評して下さい
プログラミングのお題スレ Part19
Access VBA 質問スレ Part1
C++相談室 part165
17:28:00 up 24 days, 8:50, 0 users, load average: 240.77, 231.19, 200.01

in 0.23711013793945 sec @[email protected] on 111607