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


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

【初心者歓迎】C/C++室 Ver.101【環境依存OK】



1 名前:デフォルトの名無しさん mailto:sage [2017/07/18(火) 07:07:27.20 ID:vzMDiUgd.net]
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。

◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。

【アップローダー】(質問が長い時はココ使うと便利)
codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)

前スレ
【初心者歓迎】C/C++室 Ver.100【環境依存OK】
mevius.2ch.net/test/read.cgi/tech/1478440682/

2 名前:デフォルトの名無しさん mailto:sage [2017/07/18(火) 15:31:46.97 ID:PYVrHLeZ.net]
ほす

3 名前:デフォルトの名無しさん mailto:sage [2017/07/18(火) 18:40:03.50 ID:R/mOsefM.net]
まさか短時間に20レスしないと落ちる?

4 名前:デフォルトの名無しさん mailto:sage [2017/07/18(火) 19:38:57.23 ID:u0V8o5mb.net]
そんなことで落ちるならレス数一桁のスレが大量に残ってるわけないだろ

5 名前:デフォルトの名無しさん [2017/07/20(木) 23:03:44.79.net]
右辺値参照がネットのどの記事をみてもわからないので書籍に手を出して見ようと思います
右辺値参照についてをわかりやすく取り扱ってる参考書籍があれば教えてください

6 名前:デフォルトの名無しさん mailto:sage [2017/07/20(木) 23:51:51.38.net]
ネットで探して出てくるいつもの説明が一番マシではないかという気がしてならない

7 名前:デフォルトの名無しさん [2017/07/21(金) 00:25:40.36.net]
・見分け方
lvalueは、名前がある
rvalueは、名前がない
・rvalueの特徴
名前がないということは使い捨ての一時的なオブジェクトだから、処理が終わったら捨てられる
・使い分けの理由
代入演算子(=)や、関数の戻り値に使う時や、vectorなどのコンテナに放り込む時には、
一旦オブジェクトがコピーされるが、rvalueだと分かっていたら、勝手にmoveしてくれるので処理が速い
特に、でかいデータを持った独自のクラスの場合にコピーよりmoveが速くなる
この機能を使いたかったら、クラスのmoveコンストラクタとmove代入演算子(=)を定義しておくこと
でも、それは面倒だろうから、ある条件を満たしたらコンパイラが勝手に作ってくれる
・条件
独自クラスに次のいずれの定義もしていないこと
a) コピーコンストラクタ
b) コピー代入演算子
c) デストラクタ

C++歴1ヶ月の俺が答えてみるテスト

8 名前:デフォルトの名無しさん [2017/07/21(金) 00:50:30.03.net]
moveコンストラクタを作ったら気づくと思うが、処理内容は結局コピーコンストラクタと同じなわけ
とどのつまり、ポインタをメンバーに持ったクラスを定義する時に有効なんだよ
コピーコンストラクタ(lvalue)だと、コピー元は存在し続ける可能性があるから、
必ず1から全データを作り直して、ポインターのポイント先を新データにしないといけない
でも、rvalueで捨ててもいいデータだと分かっていたら、捨てるデータを捨てずにそのまま使って
ポインタのポイント先をその捨てるデータにすればよいから、楽で速いよねという話

9 名前:デフォルトの名無しさん mailto:sage [2017/07/21(金) 00:56:26.30.net]
右辺値参照なら
https://srad.jp/~taro-nishino/journal/507551/
が一番わかりやすい
これ読んでわからなかったらまだ手を出すのが早すぎたと思って諦めたほうが良い
本を買っても無駄な出費になるだろう
そして↑のページを見つけるのに検索してて出てきたのが↓
https://woorex.com/06_yahari/1994_01.html
で、全然読んでないが、こういった文章に価値はないと思う
ネットの文章のすべてに価値があるわけではないと思ったわ

10 名前:デフォルトの名無しさん mailto:sage [2017/07/21(金) 01:02:33.71.net]
>>8
いや多分そういうことじゃなくて、分からないのはC++の文法的なトリックの部分に関してだと思う
右辺値参照として宣言した変数を参照したら左辺値になるとか
なかなかにクラクラする部分もあるので



11 名前:デフォルトの名無しさん [2017/07/21(金) 01:04:55.21.net]
みなさんありがとうございます
取り敢えず>>7>>8さんのレスを参考に
>>9さんのURLを見て寝ようと思います
迅速な回答ありがとうございました (^○^)

12 名前:デフォルトの名無しさん [2017/07/21(金) 01:15:36.94.net]
まぁ、あれだよね。
右辺値と右辺値参照の違いを理解できるとスッキリするんだけどね。

13 名前:デフォルトの名無しさん mailto:sage [2017/07/21(金) 02:26:47.25.net]
>右辺値と右辺値参照の違いを
>>9のURL先の説明を書いた低能に100回読ませたい
まずこの違いを明確に理解しないと>>7の様なおかしな説明になってしまう

14 名前:デフォルトの名無しさん [2017/07/21(金) 02:39:34.56.net]
使う目的が違うの?

15 名前:デフォルトの名無しさん [2017/07/21(金) 02:47:35.89.net]
俺の理解では、moveしたいからそのためにmoveができる

16 名前:条件を定義してるだけだと思うけど
コンパイラーがどういう条件の時に右辺値と扱えるかどうかを示すために
それが、参照に&マークを使っているという歴史的経緯でややこしくなってるだけでしょ
[]
[ここ壊れてます]

17 名前:デフォルトの名無しさん mailto:sage [2017/07/21(金) 02:51:29.22.net]
まずもって
> lvalueは、名前がある
> rvalueは、名前がない
がおかしいということでは?

18 名前:デフォルトの名無しさん mailto:sage [2017/07/21(金) 07:39:48.91.net]
そうだな
「lvalueは、名前がある」という誤った知識を注入されていることもあるが
右辺値(rvalue)についての説明が始まって最後まで右辺値参照の話が無いのは良くないな

19 名前:デフォルトの名無しさん [2017/07/21(金) 07:46:07.93.net]
レベルの低いスレだな

20 名前:デフォルトの名無しさん [2017/07/21(金) 07:53:53.57.net]
お勧め本の提示ができないばかりか、自分の言葉で説明もできずにただただ罵るだけ
突っ込まれると粗探しをし始める
まぁ、本当に理解してる人間がこんなスレ覗く暇ないわな



21 名前:デフォルトの名無しさん mailto:sage [2017/07/21(金) 08:31:50.37.net]
>>15
>参照に&マークを使っているという歴史的経緯でややこしくなってるだけでしょ
&は昔からあるのに、そうなのだろうか。
どちらかというと右辺値・左辺値が右辺値参照・左辺値参照と直交する概念で、
言葉が似ているのに>>10の例にもあるように「右辺値参照かつ左辺値が同時に成り立つ」ことが原因だと思うのだが

22 名前:デフォルトの名無しさん mailto:sage [2017/07/21(金) 08:43:30.27.net]
>>19
> お勧め本の提示ができない
>>9の最初のリンクで充分だろ
自分の言葉でとか言うがそこそこ大きな概念だから説明がまともだったとしてもこんなところでとうとうと説明されても困るし>>7-8みたいな中途半端な説明は有害なだけだし

23 名前:デフォルトの名無しさん mailto:sage [2017/07/21(金) 09:09:12.41.net]
他の言語ではこの概念出てこないの?どこが違うの?

24 名前:デフォルトの名無しさん mailto:sage [2017/07/21(金) 10:43:02.49.net]
他言語では見たことが無いな
参照の仕組みが近いのはC#だと思うが右辺値参照の概念は無い

static int X;
static ref int M() { return ref X; }
static void Main () {
 M() = 100;//「M()」実質の左辺値
 ref int x = ref M();//「ref M()」実質の左辺値
 ref int rx = ref x;
 rx++;
 Console.Write(M());//「M()」実質の右辺値
}

25 名前:デフォルトの名無しさん mailto:sage [2017/07/21(金) 11:42:16.76.net]
他言語では代入演算子でオブジェクトをコピーしたり
まるでオブジェクトを基本型であるかのようにふるまわせる概念が無いからな
なぜなら他言語にはGCが有るからね
GCがあって、オブジェクトは常にnewして使うから
勝手にディープコピーされるとか、そういうことは考える必要がないね
逆にC++はGCが無いから・・・

もしC#で右辺値参照があり得るとしたらstructに関してだが
C#のstructはmoveセマンティクスが必要であるような用途に使うものではないから
やっぱり要らないな

26 名前:デフォルトの名無しさん mailto:sage [2017/07/21(金) 11:52:40.57.net]
GCがあるから委譲と複製を区別しなくて済むってのに違和感

27 名前:デフォルトの名無しさん [2017/07/21(金) 12:22:05.32.net]
1==1 の結果が 2でも-1でもなく 1 だってのは
仕様書のどこに書いてありますか?

28 名前:デフォルトの名無しさん mailto:sage [2017/07/21(金) 12:25:57.68.net]
他言語は普通に代入などすれば、基本型はコピーでオブジェクトは委譲だ
C++は普通に代入などすれば、基本型もオブジェクトもコピーだ
で、メタプログラミングの観点から見て、何が起こるかということだな
C++は無駄なディープコピーが発生しやすい仕様なのだわ

C++もnewすれば他言語と同じになるが、GCが無いので常に有効ではない
やはりナマポはクラスでラップして・・・って事になるので
適切にコピーなりmoveなり寿命管理してもらわないと破綻する

29 名前:デフォルトの名無しさん mailto:sage [2017/07/21(金) 12:37:14.45.net]
>>26
ほれ
ISO/IEC 9899:2011 6.5.9p3
Each of the operators yields 1 if the specified relation is true and 0 if it is false. The result has type int.

30 名前:デフォルトの名無しさん mailto:sage [2017/07/21(金) 13:04:34.65.net]
>>28
おっ サンキュー

これC11っぽいけど、C89でもおんなじだよな?



31 名前:デフォルトの名無しさん mailto:sage [2017/07/21(金) 13:30:56.58.net]
>>29
残念ながら2011より前の規格は知らぬ

32 名前:デフォルトの名無しさん mailto:sage [2017/07/21(金) 13:49:35.62.net]
C99は同じ節の同じ段落にある。
C89は不明だが、もしそんな基本部分が変化してたら大騒ぎになってたはずなので同じだろう。

33 名前:デフォルトの名無しさん mailto:sage [2017/07/21(金) 13:54:13.46.net]
>>29
89と内容等価ということになっているANSI/ISO C90を入手した
6.3.9(==,!=)は6.3.8(大小比較)を参照していてそこには
yields 1 if the specified relation is true
とある
つまり1になる

34 名前:デフォルトの名無しさん mailto:sage [2017/07/21(金) 15:17:08.56.net]
>>9
横からだけど、すごく分かりやすかった。ありがたい。

35 名前:デフォルトの名無しさん mailto:sage [2017/07/21(金) 19:19:00.46 ID:6hIUsyMM.net]
>>24
GC 関係ないわな

> 勝手にディープコピーされるとか、そういうことは考える必要がないね

> C#のstructはmoveセマンティクスが必要であるような用途に使うものではないから

なぜか自信満々で頓珍漢な思い込みを披露されてもな

36 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 01:20:33.15 ID:oqulLxLp.net]
into sokuに1か2以外を入力したとき1か2を入力されるまでループさせるのをやってみたいんですが
scanf("%d", &soku);
while (soku != (1 || 2)) {
printf("もう一度入力してください。\n希望する 1\n希望しない 2\n");
scanf("%d", &soku);
}
こう書くと2を入力してもループしてしまいます。
1か2が入力されたらループを抜けるにはどう書けばいいんでしょうか?

37 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/22(土) 01:34:09.94 ID:Scnyb+6Y.net]
soku != 1 && soku != 2

38 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 01:36:10.92 ID:oqulLxLp.net]
>>36
できました。そういう風に書くんですね。ありがとうございました。

39 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 01:38:48.73 ID:aL/Y+CP+.net]
()が強いので1||2が先に計算されて1になってしまう。

40 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 01:40:28.07 ID:ewNbHc5x.net]
!(soku == 1 || soku == 2)     (1 または 2 )ではない
⇒ soku != 1 && soku != 2   1ではない かつ 2ではない



41 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 01:47:45.17 ID:oqulLxLp.net]
いろんな書き方もできるんですね!
勉強になります。ありがとうございます。

42 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 06:19:41.71 ID:RRuLA+SK.net]
C++1zでかっこよく書けるようになる。
そう思っていた時期がありました

43 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2017/07/22(土) 07:13:43.26 ID:Sw3YC1YO.net]
>>39-40
この理屈はド・モルガンの定理って名前がついてるやつ。

44 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 14:34:43.25 ID:9V10kE5p.net]
>>38
なんで3じゃなく1になるの?

45 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 14:51:10.38 ID:ewNbHc5x.net]
>>43
ビット演算のor ではなく、真偽判定の論理和なので
1の真偽を求めて真 ⇒ 1
(2の真偽を求めて真 ⇒ 1 : or 結合のショートサーキットで判定しなけど便宜的に)
こうなる

46 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 14:51:24.55 ID:o3Mfi2ju.net]
1|2なら3
1||2は1

47 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 15:12:08.99 ID:9V10kE5p.net]
難しいのね…

48 名前: ◆QZaw55cn4c mailto:sage [2017/07/22(土) 18:27:01.28 ID:Yr9CVNZl.net]
>>42
いつも不思議に思うのだが、このド・モルガンは議論のスタートとなる公理なの?
それとも、なんらかの公理から導かれる定理なの?
教科書の最初の方でカップハットをやらされる度に思う疑問です

49 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/22(土) 18:39:33.61 ID:WTRjQogU.net]
>>47
定理って言ってるんだから、定理だろ。
ベン図と真理値表で簡単に証明可能。

50 名前: ◆QZaw55cn4c mailto:sage [2017/07/22(土) 18:41:59.88 ID:Yr9CVNZl.net]
>>48
それは集合が有限個の場合
集合が無限個の場合はどうなる?公理じゃないとうまくいかないんじゃない?



51 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/22(土) 18:48:30.61 ID:WTRjQogU.net]
無限集合の場合は集合の内包的定義により、離散的な論理学に還元され、やはり成り立つ。

52 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 18:50:49.49 ID:Yr9CVNZl.net]
>>50
稠密な実数の世界のもとでも、それはいえるの?
われわれの解析学の世界では、まず実数からスタートするんです

53 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/22(土) 18:57:46.94 ID:WTRjQogU.net]
A={ x | x ∈A }.
B={ x | x ∈B }.
A∩B={ x | x ∈A ∧ x∈B }.
このように、集合の元の存在は論理学に還元される。

54 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/22(土) 19:05:08.09 ID:WTRjQogU.net]
論理学の真理値表→論理学のド・モルガンの定理→集合論のド・モルガンの定理

55 名前: ◆QZaw55cn4c mailto:sage [2017/07/22(土) 19:09:10.20 ID:Yr9CVNZl.net]
>>52
ん、それって A, B, C ‥と数えられる世界の中では、いずれ到達できると思う。
でも、力学とか解析学とかをやるときは、ぎっしりつまった実数を相手に論理を組むよね
実数を相手に考える世界では、かぞえられる、とかいう性質を前提にしてはいけないんだと思うよ

まあ立場の問題かもしれない、計算機は数えられる世界で考えればいいことなのかもしれない

いま読んでる教科書の最初の方での∀∃∩∪を読むたびに思うのです
よく「証明は読者の演習としよう」で苦しむのです、これ、やめて欲しいんですけどね
∩∪の羅列である命題にドモルガンを振り返るときれいに解決するのですが
そんなことでいいのだろうか、と常々思っているのでした

56 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/22(土) 19:16:19.03 ID:WTRjQogU.net]
何も数えていないぞ。
x∈Aというのはxの性質を表しただけだ。
集合論の内包的定義を否定するのか?

57 名前: ◆QZaw55cn4c mailto:sage [2017/07/22(土) 19:19:02.26 ID:Yr9CVNZl.net]
>>55
分割して分割して最後に行き止まりがあるから、その推論はなりたつと思うんです
でも分割して分割して分割して‥終わりがない場合には、その推論は成り立つのでしょうか?
成り立つものとして仮定しているだけなんじゃないでしょうか?

58 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/22(土) 19:32:50.77 ID:WTRjQogU.net]
集合論で、無限演算(極限)が必要になることは少ない。無限集合においても扱う性質が有限であることが多いからだ。

59 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/22(土) 19:38:35.09 ID:WTRjQogU.net]
無限集合では、1つ1つ数えるのではなく、性質(述語)に着目する。集合は述語の組み合わせで表せる。
取り扱う集合を表す述語が有限の表現で表せないなら、人間はそれを考えることすらできないだろう。

60 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/22(土) 19:47:57.23 ID:WTRjQogU.net]
そんなに気になるなら、疑問をなくすために本格的に数学者になって『集合の極限に関する研究』という本を出版してはいかがか。



61 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/22(土) 20:00:32.46 ID:WTRjQogU.net]
すまない。オレは数学の話になると神経質になるんだ。

62 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 20:10:05.26 ID:aL/Y+CP+.net]
トラウマがあるのか。

63 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/22(土) 20:27:14.25 ID:WTRjQogU.net]
A={ x | x ∈A }. B={ x | x ∈B }.
A∩B={ x | x ∈A ∧ x∈B }.
A∪B={ x | x ∈A ∨ x∈B }.
~A={ x | ¬(x∈A) }.
~(A∩B)={ x | ¬(x ∈A ∧ x∈B) }.
~A∪~B={ x | ¬(x ∈A) ∨ ¬(x∈B) }.
ここで、¬(x ∈A ∧ x∈B)={ x | ¬(x ∈A) ∨ ¬(x∈B)を証明すれば、
~(A∩B)=~A∪~B と言える。

64 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/22(土) 20:34:24.27 ID:WTRjQogU.net]
ここでα=(x∈A)、β=(x∈B)とおけば、命題α、βによる命題論理学のド・モルガンの定理に還元される。
α、βについて真理値表を作れば、容易に命題論理学のド・モルガンの定理が証明できる。□

65 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/22(土) 20:38:22.42 ID:WTRjQogU.net]
>>62
訂正。
(誤) ここで、¬(x ∈A ∧ x∈B)={ x | ¬(x ∈A) ∨ ¬(x∈B)を証明すれば、
(正) ここで、¬(x ∈A ∧ x∈B)=¬(x ∈A) ∨ ¬(x∈B)を証明すれば、

66 名前: ◆QZaw55cn4c mailto:sage [2017/07/22(土) 20:47:11.33 ID:/Wnz58+R.net]
>>59
いや,手持ちの本が読めれば十分なので(今はその部分は結論ありきで読み飛ばしている)追求しようという意図はない
ていうか,たぶん,そうやって読まないといけない(そうじゃないと進めない)

でも,ド・モルガンは定理じゃなくて公理じゃないのかなって「感じる」んですよ
これは私だけの気のせい?多分気のせいなんだろうな‥ごめんね

67 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/22(土) 20:47:54.26 ID:WTRjQogU.net]
集合の極限というと、
S=f(X_0)∪f(X_1)∪...∪f(X_n)∪...
みたいな感じか?
自明ではないが、つまらないな。

68 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 21:04:17.39 ID:Xt0MBnGT.net]
>>58は健常者の様な発言なのに、
スレをツイッターと勘違いしているかのようなクソレス連投が残念だ

69 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/22(土) 21:09:55.19 ID:WTRjQogU.net]
君の公理系では公理かも知れない。ただZFCで証明されるものであるから、定理と言った方がいい。

70 名前: ◆QZaw55cn4c mailto:sage [2017/07/22(土) 21:15:06.91 ID:/Wnz58+R.net]
>>66
https://www.amazon.co.jp/dp/4320014731
最初の方だが,すでに∞前提
演習
(1)(∪_{n=1}^∞ An)∩A = ∪_{n=1}^∞(An ∩A)
(2)(∩_{n=1}^∞ An)∪A = ∩_{n=1}^∞(An ∪A)
どちらか一方だけ証明できたら,残りはドモルガン採用ですっとばしているが,ドモルガンが∞にも使えるか迷いがある



71 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/22(土) 21:21:12.59 ID:WTRjQogU.net]
無限大について、濃度が定まっている。集合が一意に確定する。

72 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/22(土) 21:25:41.26 ID:WTRjQogU.net]
集合であることの定義にまでさかのぼって、well-definedであることを確認すればいい。

73 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/22(土) 21:26:51.50 ID:WTRjQogU.net]
あとは数学的帰納法だ。

74 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/22(土) 21:36:21.21 ID:WTRjQogU.net]
整数の無限大は整数ではない。
整数の全体集合は無限の濃度だが、集合としてwell-definedである。
このように、極限については個別に存在を確認する必要がある。

75 名前: ◆QZaw55cn4c mailto:sage [2017/07/22(土) 21:41:01.35 ID:/Wnz58+R.net]
うん,確かにこの場合は自然数の無限だから可算個だね,ちょっと今までの私の話とは事情が違う,なかなかいい例が思い浮かばないね‥

76 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 22:41:47.08 ID:GxGWP07y.net]
なにこの自演連投

77 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 23:51:19.55 ID:QqZjuHKP.net]
>>57
ωの定義は?
Γ_0の定義は?

78 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 00:08:17.96 ID:senoENRy.net]
そろそろC/C++に関係ない話だから適切なスレに移動してもらえないか?

79 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 00:15:19.26 ID:saJI7pNE.net]
災害だと思って諦めろ

80 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 04:53:37.10 ID:48axhpAl.net]
コイツ等は
何が楽しくて生きているんだろうか



81 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 08:32:31.28 ID:uweeyuEb.net]
しかし間違いだらけで、見てるだけで苛ついてくるな

82 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 11:35:11.86 ID:3jIQW2qu.net]
糞ハンネ

83 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 18:08:53.79 ID:UuUAOyUA.net]
>>80
間違いだと思う点について具体的に

84 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 18:34:08.77 ID:3yF9COr6.net]
>>48
違う。通常公理系から証明する。

>>50
違う。可算加法性は自明な性質ではない。

>>57
解析学は非可算無限、整数論は可算無限を扱う
無限集合を扱うのは一般的
むしろ有限集合を扱うほうが特殊

>>58
ソボレフ空間とかガン無視かよ



めんどくさいからこのくらいで
ほぼすべてのレスに間違いが含まれてる

85 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 18:40:29.85 ID:UuUAOyUA.net]
>>83
では、糞コテQZが提起している「ド・モルガンこそ公理」については、どう思う?

86 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 18:44:31.66 ID:3yF9COr6.net]
>>84
それも間違ってるよ

87 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 18:49:15.52 ID:UuUAOyUA.net]
>>85
立場を確認する
排中律(二重否定)は認める立場?認めない立場?

88 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/24(月) 19:20:26.89 ID:iUqnpKPO.net]
天才の時間を無駄にするなよ。

89 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 19:22:57.71 ID:UuUAOyUA.net]
>>87
初等整数論だけが数学ではない、中国剰余定理でとまっていては惜しい

90 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2017/07/24(月) 22:07:17.47 ID:Gxl+AYGO.net]
>>47-50
やりたければ公理にした系を考えてもええんやで。
でもまあこのスレの話題として必要なのは手書きで真理値表を書けるレベルの狭い世界の論理だろう、JK



91 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 22:49:36.92 ID:9ObWd1Q9.net]
論理回路とかでまともな無限元のブール代数教えるとこなら、
交換、結合、単位元、補元の公理から証明する手順教える。

92 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 22:51:50.82 ID:mYhfbnvO.net]
と、荒らし共が申しております

93 名前:デフォルトの名無しさん [2017/07/25(火) 10:10:52.25 ID:OkhRIGg6.net]
operator[](int n) をその定義されてるクラス自身で呼び出すにはどうしたらいいんですか?

94 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 10:41:29.07 ID:QLVMoI/q.net]
(*this)[n]

95 名前:デフォルトの名無しさん [2017/07/25(火) 10:49:24.51 ID:OkhRIGg6.net]
サンクスです

96 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 12:05:17.11 ID:M07WjxQ9.net]
>>92
難しく考えなくてもそのまんまだよ
this->operator[](n);
もしくは単に
operator[](n);

97 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 12:22:00.82 ID:s+Qz9lcg.net]
あとから劣後した提案できるって尋常じゃないね

98 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 18:10:25.51 ID:0HSMBoAM.net]
operator()();
俺はこの言語を勉強するのをやめた

99 名前: ◆QZaw55cn4c mailto:sage [2017/07/25(火) 19:38:58.05 ID:CTkA02wP.net]
>>97
こう使う
mevius.2ch.net/test/read.cgi/tech/1434079972/21

100 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 20:05:19.85 ID:M07WjxQ9.net]
>>97
operator彡(゚)(゚)
こう使う



101 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/25(火) 20:35:51.44 ID:hJo+OnkE.net]
尋常小學校

102 名前:デフォルトの名無しさん [2017/07/26(水) 03:01:12.72 ID:73NCM6AX.net]
int main() {
vector<int> v;
v.reserve(10000);
v.push_back(0);
cout << v.capacity() << endl;
vector<int> (v).swap(v);
cout << v.capacity() << endl;
}
(v).swap(v); の文頭のvに付いてる()は何の意味があるんでしょうか?

103 名前:デフォルトの名無しさん mailto:sage [2017/07/26(水) 03:21:52.99 ID:qHYVpVTl.net]
バルタン星人。

104 名前:デフォルトの名無しさん [2017/07/26(水) 04:24:25.95 ID:cw7jpAOD.net]
>>101
vector<int> (v)
までで一時オブジェクトをコピーコンストラクトしてるんじゃ?

で、.swap(v) で中身を入れ替えて、コンパクションするっていうサンプルに見える。
未確認で書いてるので、間違えてたらごめん。

105 名前:デフォルトの名無しさん mailto:sage [2017/07/26(水) 06:18:35.77 ID:qHYVpVTl.net]
  ・V ・
(v).swap(v) フォッフォッフォッ

106 名前:デフォルトの名無しさん [2017/07/26(水) 15:54:35.58 ID:73NCM6AX.net]
>>103
何とか理解できました。ありがとうございます。

107 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/26(水) 20:46:35.22 ID:bC5SPfn2.net]
vector<int> (v).swap(v);

>と( の間が離れてるのが、分かりにくい読みづらい、意地悪な点だな。

108 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2017/07/26(水) 21:25:55.76 ID:cdUQ14Vj.net]
>>106
なんか宣言っぽく見えるよね。

109 名前:デフォルトの名無しさん [2017/07/26(水) 22:56:52.57 ID:vCDZhGQY.net]
int OTL=3;

110 名前:デフォルトの名無しさん mailto:sage [2017/07/27(木) 01:04:28.47 ID:q1rhXXen.net]
> vector<int> (v).swap(v);

C++は糞だな。



111 名前:デフォルトの名無しさん mailto:sage [2017/07/27(木) 06:22:38.44 ID:tCxrViSf.net]
同意

112 名前:デフォルトの名無しさん mailto:sage [2017/07/27(木) 06:23:16.82 ID:tCxrViSf.net]
C++というより、ライブラリだが

113 名前:デフォルトの名無しさん mailto:sage [2017/07/27(木) 06:55:32.44 ID:SUaLVh4Q.net]
>>103
そんな変な文法を考えたヤツ誰だよ?

114 名前:デフォルトの名無しさん mailto:sage [2017/07/27(木) 07:34:51.23 ID:mWPL0ri7.net]
その書き方がわかりづらいからC++11でvectorにshrink_to_fit()が追加されてるわけで

www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#755

115 名前:デフォルトの名無しさん mailto:sage [2017/07/27(木) 17:10:11.12 ID:nKOoAa+D.net]
そんで、mapの場合はどうするんでつか?

116 名前:デフォルトの名無しさん [2017/07/27(木) 19:10:45.43 ID:/VCkXAgy.net]
mapでシュリンクが必要なケースあるの?

117 名前:デフォルトの名無しさん mailto:sage [2017/07/27(木) 19:41:35.37 ID:nKOoAa+D.net]
無いの?

118 名前:デフォルトの名無しさん [2017/07/27(木) 22:33:18.49 ID:wZCn8yX+.net]
無いと思ったから、あるの?って聞いたんだけど。

119 名前:デフォルトの名無しさん [2017/07/27(木) 22:33:51.77 ID:wZCn8yX+.net]
そもそもreserveできないし。

120 名前:デフォルトの名無しさん mailto:sage [2017/07/27(木) 23:08:59.52 ID:8uP2v97Y.net]
>>117
あると思ったから 無いの? なのに
どうして無いのか説明できないアフォなの?



121 名前:デフォルトの名無しさん mailto:sage [2017/07/27(木) 23:34:10.64 ID:5IXklzdW.net]
今流行りのこれか
これからわざとこういうやり取りして荒らすやつ増えるんだろうな

www.honmotakeshi.com/archives/51758414.html

委員「あなたがやっていることの根拠を示してください」
前川「俺のやることに疑問を持つなら疑問を持つ根拠を示せ」
委員「政策を実現するにはそれに基づく根拠が欲しいと言ってるんです」
前川「それだけの疑問を呈するなら疑問の根拠を示せ」

122 名前:デフォルトの名無しさん [2017/07/27(木) 23:43:42.41 ID:KBJFSsyK.net]
>>119
最初からそう言えばいいのに。
そもそもシュリンクが必要になるのかがわからないって事でOK?

123 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 08:07:33.12 ID:VRFX85+t.net]
>>121
最初から一貫した発言しかしてないけど
「最初からそう言えばいいのに」ってアフォなの?

124 名前:デフォルトの名無しさん [2017/07/28(金) 08:22:36.87 ID:aSs6rxS/.net]
コミュニケーション出来てない
明らかに触ってはダメな人でしょ

125 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 08:34:52.56 ID:oIFva6g9.net]
わざとじゃねーの?

126 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 12:38:35.23 ID:WViVOgsq.net]
どっちも説明する気がないから
平行線

127 名前:デフォルトの名無しさん [2017/07/28(金) 12:39:07.07 ID:WvgdGCet.net]
煽り専用の人工無能でしょ

128 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 14:08:59.02 ID:IiZPJKRx.net]
バイナリファイルについて質問します
変数xyzがあったときxyzをまとめてバイナリファイルにすることはできないんでしょうか?
例えば
#include<stdio.h>
FILE *fp;
int main(void) {
fp=fopen("test2.dat", "wb");
int x = 10;
double y = 15.55;
char z[] = { "abcde" };
fwrite(&x, sizeof(x),1, fp);
fclose(fp);
return 0;
}
これでxのバイナリファイルはできると思いますがyzにもそれぞれ専用のファイルポインタを用意して
それぞれ個別に書き出すことしかできないんでしょうか?

129 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 14:46:45.90 ID:wtp1eGJk.net]
fclose()する前に同じfpに続けてfwrite()すれば、同じファイルに書き出されますよ

130 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 15:02:04.83 ID:IiZPJKRx.net]
ありがとうございます。
いっぺんに書くんじゃなくて行を増やして書けばよかったんですね(´エ`)



131 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 21:22:15.86 ID:HyK7cEQc.net]
> char z[] = { "abcde" };
こんな初期化初めて見た
奥が深いな

132 名前:デフォルトの名無しさん [2017/07/29(土) 01:30:09.73 ID:wXH6c2tF.net]
mapで、あるvalueを持つpairだけを別のmapに移す時はどうやればよいでしょうか?

例えば
unordered_map<int, int> map1{
  {0, -10},
  {10, -1},
  {2, 5},
}
があってvalueが負のもの({0, -1.}と{10, -1})をmap1から削除して
map2へ移す、みたいな場合です。

133 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 02:13:30.18 ID:NWxouBfw.net]
C++14まではmapの要素を直接付け替えることはできないのでそのまま
1 ループやalgorithmで該当する要素を見つける
2 その要素のキーと値でmap2に新しい要素を追加
3 古い要素をmap1から削除
4 該当する要素がなくなるまで1-3を繰り返す

134 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2017/07/29(土) 08:10:20.47 ID:HavpCAcr.net]
>>131
std::remove_copy_if を使うのが一番簡単な方法だと思う。

std::remove_copy_if(std::begin(map1), std::begin(map2), std::inserter(map2, std::end(map2)), [](decltype(map2)::value_type x) { return x.second < 0; });

みたいな感じ。

135 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 08:18:43.60 ID:MwwfsD4U.net]
C++のSTLってこういうの好きだけど
ベタに書いた方が絶対楽だよな・・

136 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 08:21:23.24 ID:zJVnUUbX.net]
あとから見てこれなにやってるんだっけ?
ってなりそうで怖い

137 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2017/07/29(土) 08:24:46.31 ID:HavpCAcr.net]
>>134-135
こういう場合に for で回した方がいいというタイプの人は go に移行した方が幸せになれると思う。

138 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 08:27:01.28 ID:N+YJafLA.net]
forで回した方が良い

139 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 08:30:04.61 ID:MwwfsD4U.net]
あとエラるもんなら
とんでもない量の
コンパイルエラー吐くんだよな
もうアホかと

140 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 08:32:03.69 ID:wXH6c2tF.net]
>>132
ありがとうございます。
ideone.com/l4I4Kt
こういう感じでループ回しているときに削除するとうまく行かないので聞いてみました。
イテレータでもうまくいかなくて。

>>133
algorithm使うんですね。こういう書き方知らなかったです。



141 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 09:29:15.29 ID:USfv5Coy.net]
>>135
for文のほうがなにやってるかわからんわ
標準なら何やってるかわからなくてもググれば挙動がわかる
どっちにしても、わかりにくいものは構造化して名前をつけるべきだけどね

142 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2017/07/29(土) 09:35:15.24 ID:HavpCAcr.net]
せやな。
名前重要。

143 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 09:46:53.19 ID:tkUDhhFx.net]
>>139
イテレータを使うならこんな感じ
eraseの返却値をイテレータの更新に使う
ideone.com/PysLw5

144 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 10:19:10.90 ID:zJVnUUbX.net]
>>140
分かりにくいか?
for(auto pair: map1){
if(pair.second < 0){
map2.insert(std::pair<int,int>(pair.first, pair.second);
}
}
for(auto pair: map2){
map1.erase(pair.first);
}

145 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 11:11:01.24 ID:cYfk9kB4.net]
お題改変野郎おつ

146 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 11:14:07.65 ID:zJVnUUbX.net]
>>144
ん?
どこか違うっけ?

147 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 11:15:51.26 ID:bre1+bmg.net]
>>143
うん
そんなコードがプルリクされたらreplace to stl functionとだけ書いて突き返すよ

148 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 11:17:44.82 ID:cYfk9kB4.net]
>>145
>for(auto pair: map2){

149 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 11:19:40.37 ID:bre1+bmg.net]
てかpairなんて変数名使うなよ
誰か頭おかしいやつがusing namespace stdしたらどうすんだよ

150 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 11:21:58.56 ID:bre1+bmg.net]
てか細々とひどいね
こんな短いコードでよくもまぁ無能をここまで晒せるなと思う



151 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 11:23:44.04 ID:zJVnUUbX.net]
>>147
意味わからん
ひょっとしてコード読めてない?

152 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 11:26:00.62 ID:zJVnUUbX.net]
>>148
なんの問題もないけど?
って思ったらいちゃもんしかつけられない奴かよ w

153 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 11:29:49.09 ID:USfv5Coy.net]
>>151
make_pair知らないの?
なんでコピーコンストラクタ使わないの?
てかemplace知らないの?

ifのステートメントの中がひどい []
[ここ壊れてます]

155 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 11:57:02.87 ID:ODSH1Ehs.net]
ことごとく的はずれな指摘で笑たわ

156 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 12:12:55.39 ID:cYfk9kB4.net]
>>150
お前アルゴリズムとか論理に弱いだろw

157 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 12:15:08.54 ID:14mINgXT.net]
プログラム板ってみんなこんな感じなの?
とりあえずバカにする
みたいな

158 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 12:16:28.94 ID:qNmrQnXF.net]
せやで

159 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 13:01:38.77 ID:MwwfsD4U.net]
>>146
なぜ?その理由は?
書くならそこまで書けよ無能

160 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 13:20:13.10 ID:FYOlqRfm.net]
>>157
わけわかんないオレオレコードより、テスト済みの標準ライブラリ関数のほうが信頼できるから



161 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 13:24:20.64 ID:14mINgXT.net]
安易にライブラリを使うから、パフォーマンスがどんどん悪くなるんだな

162 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 13:47:21.71 ID:E5EEKRTu.net]
>>155
自分の知識目一杯使って的はずれなマウンティングしてる奴がいるだけ w

163 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 15:25:53.36 ID:wF9WnZrE.net]
あと、自分がコメントできそうな話題になるとここぞとばかりに知識を披露しようとして、
主題からずれたことを言い出したり、
さらにそれに間違いがあって余計なツッコミや攻撃的コメントを呼び込むのも
よく見る風景。

164 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 15:47:58.67 ID:0zBFZ9bK.net]
さほど広い範囲を読んでるわけじゃないけど、
C++関連は特に殺伐としてる感じはあるな。

165 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 15:56:27.65 ID:gp3BUyJn.net]
>>160 ←こういうのもマウンティングだよな。

166 名前:デフォルトの名無しさん [2017/07/29(土) 16:15:28.13 ID:mj0H/MXI.net]
>>159
まずは意図が伝わるようにと言う意味でシンプルに書くことが重要。
標準ライブラリ使用は最低限のマナー。

チーム開発してると、上記を踏まえずオレオレ判断でパフォーマンスガー言っている人が、一番迷惑なんだよね。

167 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 16:53:05.23 ID:V9CC1YIs.net]
仕事だとメモリ効率や実効速度より開発効率が優先されるからな

168 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 16:56:37.35 ID:USfv5Coy.net]
パフォーマンスどうこうで、標準ライブラリ使わなくても許されるのは、mkl開発チームとか、eigenのコミッターレベル

169 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 17:01:43.15 ID:E0esoNX5.net]
>>164
>まずは意図が伝わるように
ならお前、>>133が何してるか説明出来るんだよな?

170 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 17:07:45.04 ID:zJVnUUbX.net]
>>163
鏡見た方がいいと思うよ w



171 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 17:18:24.12 ID:WkR4K9lF.net]
>>167
>>133はすげーわかりやすいだろ

172 名前:デフォルトの名無しさん [2017/07/29(土) 17:19:42.35 ID:mj0H/MXI.net]
>>167
それが元ネタかー!

すみませんでした _orz
無理っていうか、>>143でおk

173 名前:派ですw []
[ここ壊れてます]

174 名前:デフォルトの名無しさん [2017/07/29(土) 17:20:19.90 ID:mj0H/MXI.net]
てか、パフォーマンス関係ねー

175 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 17:24:23.71 ID:E0esoNX5.net]
>>169
答えられないから回答を逸らすんですねわかります
まさか「あるvalueを持つpairだけを別のmapに移す」なんて言わないことを祈る

176 名前:デフォルトの名無しさん [2017/07/29(土) 17:26:24.48 ID:mj0H/MXI.net]
ん?
でも、よく見たら>>133割りとわかりやすいじゃん?
今、スマホの小さい画面で改行が多いから面食らったけど、2行(かな?)でみれば、とてもシンプルで意図も読み取れるわ。

177 名前:デフォルトの名無しさん [2017/07/29(土) 17:30:02.48 ID:mj0H/MXI.net]
ちょっとテンパったけど、そのレベルなら正直どっちでも構わないな。
コメントがあれば。

178 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 17:50:22.46 ID:E0esoNX5.net]
>>144
どう見ても>>133の方が酷いお題改変なのだが
それをさしおいて>>143に指摘とはこれ如何に

179 名前:デフォルトの名無しさん mailto:sage [2017/07/29(土) 17:53:27.93 ID:14mINgXT.net]
>>165
どうでも良いことにこだわってるあたり、
開発スピードが速いようには見えないなあ

180 名前:デフォルトの名無しさん [2017/07/29(土) 21:53:58.73 ID:JdwUdvlQ.net]
>>127
亀だがバイナリ書き込みは後で読み込むときに構造情報が欠けてることが多いからできれば避けたほうがいい
abcde が可変長になりそうなところとかな



181 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2017/07/29(土) 23:46:27.56 ID:HavpCAcr.net]
個人的には BENCODE がなかなかいいんじゃないかと思ってる。

182 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 12:35:48.46 ID:GR0hOB2I.net]
>>177
>バイナリ書き込みは後で読み込むときに構造情報が欠けてることが多い
欠けているのは>>177の知能だろ

183 名前:デフォルトの名無しさん [2017/07/30(日) 17:25:43.33 ID:w5RmXCUD.net]
enum EMFType
{
MF_INT, // 符号付き整数
};

// いろいろなデータを1つの関数で表示します
void MultiFunc(EMFType type, unsigned int data)
{
switch(type)
{
case MF_INT : cout << (int)data << endl; break;
}
}

int main()
{
int a = -10;

MultiFunc(MF_INT , a);
return 0;
}

実行結果
-10

unsigned int にマイナスの値を渡してるんですが、そのまま出力されます。
これが仕様だとすると、パラメーターにunsigned int を指定する意味はなんなんでしょうか?

184 名前: ◆QZaw55cn4c mailto:sage [2017/07/30(日) 18:36:26.80 ID:wjBL4Xoh.net]
>>180
codepad.org/kjSkQNMa
これが望みの解かどうかはわからないが

185 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 18:49:49.76 ID:xziOu8cb.net]
>>181
なんでcoutでintにキャストしてんの

186 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/30(日) 18:54:45.98 ID:aW4ocSFO.net]
>>180
MultiFuncを作った人にきけば?

187 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 18:57:01.02 ID:wjBL4Xoh.net]
>>182
>>180 に聞いて

188 名前:デフォルトの名無しさん [2017/07/30(日) 20:43:43.49 ID:w5RmXCUD.net]
>>181
ありがとうございます。コンバイラかバージョンの問題ですかね。

>>182
www7b.biglobe.ne.jp/~robe/cpphtml/index.html
ここで勉強してたら出てきたんですが、完全には書いてること理解できてないんで何でかはわかりません。

189 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 20:54:24.26 ID:1HGPNMYb.net]
>>180
cout時にintにcastしているからでは?

190 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 21:21:54.63 ID:wjBL4Xoh.net]
>>185
よく見てくれ,cout << (int)x
の (int) のキャストが問題となっている,なぜ (int) のキャストをしているのかは読み取れないが



191 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 21:40:38.31 ID:K4rJr1Oo.net]
>なぜ (int) のキャストをしているのかは読み取れないが
ふむふむ、これがイケヌマと言う奴だな

192 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 21:42:16.93 ID:IhAKIxVt.net]
オマエ読み取れたの?

193 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 21:46:15.66 ID:K4rJr1Oo.net]
これが読み取れない者はC/C++より国語の勉強をした方がよいのではないか

194 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 21:49:30.37 ID:9ZftmVJd.net]
業務ではよくあるよ

195 名前:

バグか仕様か分らないっての。書いた本人は既にいなくて誰も答えを知らない。
[]
[ここ壊れてます]

196 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 22:21:43.69 ID:pLyoXQEm.net]
どこの業務だよ。仕様残せよ

197 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/30(日) 22:28:24.05 ID:aW4ocSFO.net]
型消し、type eraserだから、データ構造に意味が無ければ、悪い設計だろう。

198 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 22:31:00.66 ID:ynobldaf.net]
>>190
で、なぜキャストしてるの?
読み取れた結果を披露してちょ

199 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 22:31:49.27 ID:K4rJr1Oo.net]
>type eraser
まさか、type erasureのつもりだった!?

200 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/30(日) 22:37:32.57 ID:aW4ocSFO.net]
>>195
間違えました。すみません。



201 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 22:38:07.55 ID:K4rJr1Oo.net]
>>194
パラメーターの型は適当に決めたもので、EMFTypeで指定されたint型で取り出すのが目的だからだろう
「いろいろなデータを1つの関数で表示します」と書かれているのだから

イメージは↓
https://wandbox.org/permlink/WhWaxSM5nHZdAj9n

202 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/30(日) 22:42:59.84 ID:aW4ocSFO.net]
そのインターフェース、なんか意味があるの?

203 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 22:49:59.18 ID:hW0bjdhb.net]
type erasureは意味違うけどね

204 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 23:12:02.27 ID:K4rJr1Oo.net]
これはきっとロベールさんが知恵を絞って考えた、徐々に発展していく例題だったに違いない
と思って調べたら単なる型変換の説明だった

205 名前:デフォルトの名無しさん [2017/07/30(日) 23:35:50.02 ID:w5RmXCUD.net]
>>187
すいません、よく見てませんでした。
unsigned intでひっくりかえった値はintでキャストしなおすと元に戻るんですね。勉強になります。

206 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 00:05:24.36 ID:rlOfWFsH.net]
int ⇔ unsigned intだからそれ程でもないけど
たかが型変換と思って単純そうに見えて実は深い

207 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 04:51:20.26 ID:eXoHYgix.net]
もしかしてunsigned int a = -10が10だと思ってるじゃ

208 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 07:41:44.42 ID:2pZH8HVB.net]
>>184
ごめんアンカミスだ

209 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 08:13:27.51 ID:QJrBCtHy.net]
unsigned intとintの変換って戻る保証あったっけ?
教えてエロい人

210 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 09:37:11.53 ID:8MdXXwK/.net]
ない



211 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 10:27:16.23 ID:b0IxVlKH.net]
そうなの?
補数表現が違うと戻らなくなるんだっけ?

212 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 12:46:28.35 ID:oDbItPw6.net]
いつもの
・現実にはダメな処理系はない
けど
・仕様では保証されない
って奴じゃね?

213 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 17:41:18.97 ID:ULiYNE/a.net]
この速さなら言える
unsigned intが分からない
少なくともunsignedの-10が10じゃないことは分かった

214 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 17:52:47.90 ID:4+hbusvk.net]
俺もunsignedに負数を代入した場合
どーなるのかわかってなかったわ
つーか、そんな処理入れる機会なくね?
わざわざバグったコード書いて
どうなるんですかって聞いているようなもん

215 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/31(月) 18:12:00.47 ID:tXq0mJzu.net]
intが32ビットの整数と仮定すると、
-1==0xFFFFFFFF。
これに1を足すと、オーバーフローして
0==0x00000000
となる。
-2は-1==0xFFFFFFFFよりも1だけ小さいので0xFFFFFFFEだ。

216 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 18:19:04.62 ID:RCGkVO1K.net]
処理系依存な内容とそうじゃない内容はちゃんと区別しよう

217 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 18:23:58.10 ID:2pZH8HVB.net]
>>209,210
仮にこの範囲の整数を扱える型(X型)があったとすると
-4 -3 -2 -1 0 1 2 3 4
unsigned X型はこの範囲を扱える
0 1 2 3 4 5 6 7 8

X型の-1は-1
unsigned X型の-1は8になる

同じ数だけ(この場合9つ)表現できるのは変わらず
unsignedは最小値が0になる

218 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/31(月) 19:07:02.18 ID:tXq0mJzu.net]
符号つき(signed)の値の場合、一番上のビット(最上位ビット)を符号として扱う。そういう決まりになっている。
例えば、0x80000000は一番小さい符号つき32ビット整数になり、0x7FFFFFFFは符号つき32ビット整数で一番大きな数になる。

219 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 19:16:13.46 ID:ULiYNE/a.net]
こんなに一生懸命説明してくれてるのにわからない俺…
すんませんした

220 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 19:18:53.66 ID:aK6EDhQb.net]
>>214
そんな事は決まってない
そういう処理系が多いってだけ



221 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/31(月) 19:18:53.77 ID:tXq0mJzu.net]
-30は、-1==0xFFFFFFFFよりも29だけ小さい数だ。29==16+8+4+1==0x1Dだから、-30==0xFFFFFFFF - 0x1D==0xFFFFFFE2となる。

222 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 19:19:50.58 ID:9Hgupd7z.net]
意外とハマるのはサイズが拡張される場合で

char ch1 = 0xFF;
unsigned char ch2 = 0xFF;

unsigned int int1 = ch1;
unsigned int int2 = ch2;

int1 と int2 は違った値になりよるよ
VCの処理系依存かもしれんが

223 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 19:21:38.34 ID:aK6EDhQb.net]
1の補数、2の補数、符号ビット+仮数
言語上はこれだけある

トラップ表現があったりもする

224 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/31(月) 19:37:10.30 ID:tXq0mJzu.net]
自動車やバイクには走行メーターがついているだろう。走行メーターは0〜9の何桁でどのくらい走ったかを表す。
9999の次が0000になる場合、9999を-1、9998を-2、と考えるとメーターで足し算・引き算を考えることができる。各桁が0〜9になるから、メーターの場合は10進数表示になるがね、
コンピュータの場合は2進数や、16進数で考えることが多い。

225 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/07/31(月) 19:41:04.34 ID:tXq0mJzu.net]
2進数の場合は各桁が0か1になり、2で次の位に繰り上げ。16進数の場合は各桁が0〜9、A〜Fのいずれかになり、16で次の位に繰り上げ。

226 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 19:49:09.33 ID:aK6EDhQb.net]
いつまで機種依存ネタ続けるつもり?

227 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 20:01:22.25 ID:iTQXcHuD.net]
>>220
それは10の補数で負数を表す場合でしょ
そういうアーキテクチャもあるだろうけど、それ以外がありえないわけじゃない

228 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 20:05:38.00 ID:9Hgupd7z.net]
だからさわるなって

229 名前: mailto:sage [2017/07/31(月) 21:11:41.06 ID:VQaCNCGS.net]
1の補数表現ですか,教科書には堂々と載るんですけど,実際には見たことないね‥

230 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 21:44:09.51 ID:zfEccCnj.net]
auto i = -100;
auto u = static_cast<unsigned>(i);
int i2;
std::memcpy(&i2, &u, sizeof(int));

unsigned intを経由してintを取り出す方法はこれしか思いつかなかった



231 名前:デフォルトの名無しさん mailto:sage [2017/07/31(月) 22:53:45.79 ID:SkB3nQWo.net]
触るも何も自演だから嵐が過ぎ去るのを黙って見てるしかないぞ

232 名前:片山博文MZ mailto:sage [2017/07/31(月) 23:31:24.17 ID:tXq0mJzu.net]
仮想世界の住人たちが全て同一人物の自演に見える病気に名前を付けるとしたら、何にする?

233 名前:片山博文MZ mailto:sage [2017/07/31(月) 23:37:22.96 ID:tXq0mJzu.net]
「思念体同一視妄想」と名付けよう。

234 名前:はちみつ餃子 mailto:sage [2017/08/01(火) 00:01:32.28 ID:J7NYj7Ga.net]
思念体が滅びることはない……

死ねんたいwww

235 名前:デフォルトの名無しさん mailto:sage [2017/08/01(火) 02:44:00.93 ID:LRNcLEwd.net]
なるほど・・さっぱりわからん

236 名前:片山博文MZ mailto:sage [2017/08/01(火) 21:04:49.74 ID:iBC54dHR.net]
わからない
わからん
若卵
らんらんるー

237 名前:デフォルトの名無しさん mailto:sage [2017/08/01(火) 21:55:28.88 ID:J7NYj7Ga.net]
わかんない → 和姦ない → 強姦ばかり

238 名前:片山博文MZ mailto:sage [2017/08/01(火) 22:00:50.36 ID:iBC54dHR.net]
だじゃれモードかよ

239 名前:片山博文MZ mailto:sage [2017/08/01(火) 22:05:37.08 ID:iBC54dHR.net]
2進数を下の位から4桁ごと区切ると、簡単に16進数に直せるぞ。
2の4乗は16だから、2進数の4桁が16進数の1桁に相当する。

240 名前:片山博文MZ mailto:sage [2017/08/01(火) 22:12:21.56 ID:iBC54dHR.net]
#include <stdio.h>
int main(void) {
int i;
printf("10進数と16進数\n");
for (i = 0; i < 30; ++i) {
printf("%d => 0x%x\n", i, i);
}
return 0;
}



241 名前:片山博文MZ mailto:sage [2017/08/01(火) 22:15:21.90 ID:iBC54dHR.net]
C/C++では、2進数出力は少し難しい。ビット演算が必要になる。

242 名前:片山博文MZ mailto:sage [2017/08/01(火) 22:20:52.25 ID:iBC54dHR.net]
void print_binary(int n) {
int i;
for (i = sizeof(int) * 8 - 1; i >= 0; --i) {
if (n & (1 << i)) putchar('1');
else putchar('0');
}
}

243 名前:片山博文MZ mailto:sage [2017/08/01(火) 22:55:18.84 ID:Oo5iWDLT.net]
#include <stdio.h>
int main(void) {
int i;
printf("符号あり => 符号なし => 16進\n");
for (i = -10; i <= 10; ++i) {
printf("%d => %u => 0x%x\n");
}
return 0;
}

244 名前:片山博文MZ mailto:sage [2017/08/01(火) 22:56:59.82 ID:Oo5iWDLT.net]
>>239
訂正。
#include <stdio.h>
int main(void) {
int i;
printf("符号あり => 符号なし => 16進\n");
for (i = -10; i <= 10; ++i) {
printf("%d => %u => 0x%x\n", i, i, i); //訂正。
}
return 0;
}

245 名前:デフォルトの名無しさん mailto:sage [2017/08/01(火) 23:06:29.76 ID:mGfRGHrE.net]
>>240
%u に int 渡してんじゃねーよ

246 名前:片山博文MZ mailto:sage [2017/08/01(火) 23:19:17.88 ID:Oo5iWDLT.net]
>>238
www.wdic.org/w/TECH/CHAR_BIT

247 名前:片山博文MZ mailto:sage [2017/08/01(火) 23:26:14.17 ID:Oo5iWDLT.net]
%huなんて知らなかったなあ。
https://stackoverflow.com/questions/8699812/what-is-the-format-specifier-for-unsigned-short-int

248 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 00:27:59.29 ID:AGgV01p7.net]
>>238
C++のときはstd::bitsetも使えるぞい
https://cpprefjp.github.io/reference/bitset/to_string.html

249 名前:片山博文MZ mailto:sage [2017/08/02(水) 00:33:11.36 ID:hTaTWBJY.net]
>>244
情報ありがとう。

250 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 17:58:47.10 ID:denJnq0F.net]
ぞいってなー



251 名前:デフォルトの名無しさん [2017/08/02(水) 22:14:43.24 ID:TeM237FQ.net]
class CManiac {
private: char* m_pc;
public:
virtual ~CManiac() {
cout<<"destr "<< this << " : " << &m_pc << endl;
delete[] m_pc;
}
CManiac() : m_pc(new char[1]) { cout<<"constr "<< this <<endl;}
void getAdrs(){ cout<< this <<" : "<< &m_pc << endl; }
};
int main() {
vector<CManiac> vecmaniac;
vecmaniac.resize(3);
vecmaniac[0].getAdrs();
vecmaniac[1].getAdrs();
vecmaniac[2].getAdrs();
  return 0;
}
constr 0x22fe40
destr 0x22fe40 : 0x22fe44
0x3b1678 : 0x3b167c
0x3b1680 : 0x3b1684
0x3b1688 : 0x3b168c
destr 0x3b1678 : 0x3b167c
destr 0x3b1680 : 0x3b1684
destr 0x3b1688 : 0x3b168c

vectorに自作クラスのインスタンスを入れるとき、このコードだとm_pc;が指すアドレスが2重開放になるとかで
デフォルトコンストラクタとコピーコンストラクタとデストラクタの3つが必須だと書いてあったのですが、エラー無しで出力できます。
デストラクタのところで<<m_pc;と書いても、何故か文字化けしてしまうのでアドレスが分からないんですが
本来、resizeを使ってインスタンスを生成したら、m_pc(new char[1])で作った領域は3つとも同じになるということですか?
あと、最初に呼び出されている0x22fe40 は何のインスタンスなんですか?回答宜しくお願いします。

252 名前:片山博文MZ mailto:sage [2017/08/02(水) 22:27:48.20 ID:tJX9Zx+g.net]
new char[1]は、要素数1の動的配列へのポインターで、中身は初期化されていない。

253 名前:片山博文MZ mailto:sage [2017/08/02(水) 22:33:06.29 ID:tJX9Zx+g.net]
<< m_pcと書くと、当然m_pcは、C文字列として解釈されるが、初期化されておらず、ヌル終端とは限らないので、
文字化けする。

254 名前:片山博文MZ mailto:sage [2017/08/02(水) 22:35:13.01 ID:tJX9Zx+g.net]
教訓。生ポインターは使うな。std::stringやstd::vectorなどを使え。

255 名前:片山博文MZ mailto:sage [2017/08/02(水) 22:46:24.97 ID:tJX9Zx+g.net]
resizeは、引数なしのコンストラクターでオブジェクトを作成して、それをvector内部にコピーする。
このコピーの際にコピーコンストラクターが使われ

256 名前:る。コピーコンストラクターは記述されていないから、暗黙のものが使われる。
それはポインターの中身をコピーしていないから、問題がある。
[]
[ここ壊れてます]

257 名前:片山博文MZ mailto:sage [2017/08/02(水) 22:57:09.01 ID:tJX9Zx+g.net]
よくわからなければ、
CManiac(const CManiac& cm)
{ ... }
というコピーコンストラクターを書き加えてみるとよい。

258 名前:片山博文MZ mailto:sage [2017/08/02(水) 22:59:09.90 ID:tJX9Zx+g.net]
代入の
CManiac& operater=(const CManiac& cm)
{
...
return *this;
}
も追加。

259 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 23:05:54.19 ID:qrhQzK+m.net]
unsigned intなどを使って何かいい事有るのか?普通にint使えばいいだろ?

260 名前:片山博文MZ mailto:sage [2017/08/02(水) 23:06:30.72 ID:tJX9Zx+g.net]
IDEのデバッグ機能を使えば、std::vector::resizeなどのソースコードも読めるよ。



261 名前:片山博文MZ mailto:sage [2017/08/02(水) 23:08:15.66 ID:tJX9Zx+g.net]
>>254
符号なし整数の比較が出来る。負の場合を考えずに済む。

262 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 23:10:24.82 ID:qU91jTb3.net]
>new char[1]は、要素数1の動的配列へのポインター
んなこたーない

263 名前:片山博文MZ mailto:sage [2017/08/02(水) 23:11:05.31 ID:tJX9Zx+g.net]
符号ありよりも大きな範囲を扱える。ビット演算やビットフィールドで便利。

264 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 23:44:31.73 ID:qU91jTb3.net]
この実行結果を見て>>251の回答が瞬時に出てくるのはひょっとして凄い奴なのではないか?
と一瞬でも思ってしまった自分が恥ずかしい

265 名前:デフォルトの名無しさん mailto:sage [2017/08/02(水) 23:59:09.86 ID:qU91jTb3.net]
ライブラリ仕様の変遷を理解した上で質問者に回答を合わせる
などという高度な対応がクソコテにできる筈も無かった

266 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 00:21:51.89 ID:1LfxTpLV.net]
>符号ありよりも大きな範囲を扱える
確かにそうだな
言語仕様の規格上は

267 名前:片山博文MZ mailto:sage [2017/08/03(木) 00:37:28.83 ID:YO3k3fE8.net]
>>251
コピーコンストラクターじゃなくて、代入でした。すみません。

268 名前:片山博文MZ mailto:sage [2017/08/03(木) 00:44:37.38 ID:YO3k3fE8.net]
>>262
あ、コピーコンストラクターは、C++03の方で、C++11なら、ムーブコンストラクターとムーブ代入が使えるから、少し動作が違うんだった。

269 名前:ねこまじ [2017/08/03(木) 00:45:34.22 ID:t0J1S2SM.net]
Youtuberヒカルが月収を明らかに!!おはよう朝日です出演
https://www.youtube.com/watch?v=RLZGrqQnnZc
第1回案件王ランキング!YouTuberで1番稼いでるのは誰だ!
https://www.youtube.com/watch?v=asF2wQ2xhjY&t=61s
ユーチューバーの儲けのカラクリを徹底検証!
https://www.youtube.com/watch?v=FUSb4erJSXE&t=504s
【給料公開】チャンネル登録者4万人突破記念!YouTuberの月収公開!
https://www.youtube.com/watch?v=Y7DAQ0RKilM&t=326s
誰も言わないなら俺がYouTuberのギャラ相場を教えます
https://www.youtube.com/watch?v=E4q-vaQh2EQ&t=118s
YouTuberになりたいのは馬鹿じゃない!YouTuberになる方法
https://www.youtube.com/watch?v=Fr0WXXZRMSQ

最高月収5000万円だとさ。年収じゃなくて「月収」な
誰でも参入可能だからおまえらもyoutubeに動画投稿したほうがいい
顔出したくないならラファエルみたいに仮面かぶればいい
手っ取り早く視聴数稼ぐには有名ユーチューバーへの物申す系動画がオススメ
ゲーム実況はニッチだから人気ユーチューバーのネタをパクればいい

270 名前:片山博文MZ mailto:sage [2017/08/03(木) 00:48:11.43 ID:YO3k3fE8.net]
ってことは、C++11の場合は、
CManiac(CManiac&& cm)
{ ... }

CManiac& operater=(CManiac&& cm)
{
...
return *this;
}
を書くんだね。これで完璧。



271 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 00:48:42.44 ID:cUZMqwjs.net]
>>257
違うの?

272 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 01:02:12.67 ID:cUZMqwjs.net]
あ、動的配列じゃなくてヒープのアドレスとってるだけよということかな

273 名前:片山博文MZ mailto:sage [2017/08/03(木) 01:02:16.06 ID:YO3k3fE8.net]
C++11のemplace_backを忘れてた。コピーせずに、vector内部で直接構築されるんだった。

274 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 07:14:24.41 ID:jHHnzd5n.net]
>>266
「アドレス」でなく「ポインター」という言葉を使っているので正しくない
要素数1の動的配列の先頭要素へのポインター

275 名前:デフォルトの名無しさん [2017/08/03(木) 13:14:53.27 ID:vWCSRcUD.net]
>>248
コピーコンストラクタ無しのm_pcが同じアドレスを参照している確認取れました。
丁寧な解説ありがとうございました。

276 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 14:40:42.21 ID:xqHGpC9q.net]
ふえぇぼうよー先生の本凄く読みずらいよ・・・

277 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 16:53:01.55 ID:2WeFShGG.net]
>>241
言いたいことはわかるけど
キャストしたところで何もしないぜ?

278 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 16:58:53.44 ID:2WeFShGG.net]
何もしないってのは吐き出されるコードが不変て意味ね
個人的にはキャストするけど

279 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 20:14:02.94 ID:Wy5AX0em.net]
intが32bitな64bit環境下だとして
printfの可変長引数で32bit整数を64bitに自動拡張するときの
拡張のされ方が変わるんじゃね?
ただし%uによって32bit分しか見に行かないから無視してよいけど
コード不変とはならないんじゃね?

280 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 20:21:13.08 ID:D1Re6UdQ.net]
%z と %d の差ですかい?



281 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 20:24:42.71 ID:Wy5AX0em.net]
いや、64bitに自動拡張してスタックに積む際に

282 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 20:28:36.06 ID:D1Re6UdQ.net]
int が32bit なら 可変長引数部でスタックに詰むとき
暗黙で 64bit に自動拡張はやらんのじゃないの?

283 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 21:31:57.89 ID:2WeFShGG.net]
やったら破綻する

284 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 22:25:13.00 ID:2WeFShGG.net]
嘘ですサーセン

285 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 22:54:52.47 ID:84Bc5dj3.net]
>>273
そんな保証はないよ

286 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 23:29:16.77 ID:2WeFShGG.net]
保証は無いね
x64の場合でもキャストしようがしまいが0拡張になるけど
差が出るとしたらどんな場合?

287 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 23:48:26.53 ID:Wy5AX0em.net]
常に0拡張は信じがたい
負数の時おかしくなるだろ・・・

288 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 23:49:27.73 ID:2WeFShGG.net]
intが32bitの処理系の話ね
32bitのintを64bitに符号拡張するのはダメでしょ

289 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 07:09:12.01 ID:KzbqP8qx.net]
>>282
>負数の時おかしくなるだろ・・・
ならねーよ
printfは32bitしか取り出さねーんだから

290 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 08:30:27.75 ID:oD3njs5y.net]
64bit で引き出したうえで 32bit しか採用しないのか
32bit で引き出すだけなのか

後者は2個目いこう狂うわけ



291 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 08:46:19.49 ID:SS0ANIEQ.net]
64bitに自動拡張してスタックって、x64はpush eaxしたら8バイトpushされんの?

292 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 08:47:48.89 ID:Q7buFUOM.net]
8、16でも前者でしょ

293 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 08:48:26.38 ID:Q7buFUOM.net]
push raxになる

294 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 08:53:09.50 ID:Q7buFUOM.net]
というわけでビッグエンディアンは糞である

295 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 09:16:15.84 ID:SS0ANIEQ.net]
int32にしてもスタックやキャッシュは倍の速度で消費されるのかよ。

296 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 09:27:05.86 ID:Q7buFUOM.net]
キャッシュは確認してないけど
スタックはポインタ幅で消費されるね

297 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 09:31:06.85 ID:Q7buFUOM.net]
実装依存だとは思う
VisualStudioではそうだっつーだけ

298 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 12:56:51.39 ID:+PWQy8Ni.net]
実装依存じゃない
x86-64の仕様

299 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 12:57:32.28 ID:+PWQy8Ni.net]
普通、引数の受け渡しはスタックじゃなくてレジスタ使うけど

300 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 13:15:35.79 ID:SS0ANIEQ.net]
呼出規約については知らないのか。



301 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 14:31:21.93 ID:PHBV9/TP.net]
呼び出し規約は実装依存ではないけどアーキテクチャ依存でもないよ
そして、引数の受け渡しにレジスタをどう使うかというのは呼び出し規約と関係なく実装依存
さらに、引数はスタックに積まれるし、それはレジスタどうのこうのとは関係のない話

302 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 14:49:43.29 ID:SS0ANIEQ.net]
何を言ってるかさっぱり意味が分らないや。

303 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 14:56:40.96 ID:oD3njs5y.net]
引数を { 頭から 末尾から } { レジスタ スタック } につんで
つんだ引数の巻き戻しを { 呼び出し側 呼ばれた側 } で行う

304 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 18:15:41.13 ID:fFEm/UGM.net]
>>296
呼び出し規約がアーキテクチャーに依存しないなんてことはあり得ない

305 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 18:17:54.06 ID:5d5G+9Ac.net]
>>296はどうしようもない低能
その低能にマジレスみっともない

306 名前:デフォルトの名無しさん [2017/08/04(金) 18:24:58.70 ID:gG3ajqK7.net]
>>296
レジスタ少ないx86ではスタックだが、x86_64では第1引数から第7引数までキッチリどのレジスタに入れろって決まってる。
これをアーキ依存と言わずしてなんと言うのか。

307 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 19:06:39.89 ID:gMHFD1Iy.net]
その規約をやぶって、全部スタックに乗せる、という呼び出し規約を自分で実装していいですか?

308 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 19:13:12.05 ID:07Vnvfe5.net]
規約は他のプログラムと協調するためだけのもの。
他のプログラムと絡まないんなら好きにすればいい。

309 名前:デフォルトの名無しさん [2017/08/04(金) 19:20:42.44 ID:gG3ajqK7.net]
>>302
別にAPI単位の規約だから好きにすれば良いけど、スタックだと32bitよりメモリ喰うし増えたレジスタ活かさずメモリとやり取りだから関数呼び出しが多いほど速度に差が出るよ。

310 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 19:22:07.45 ID:PHBV9/TP.net]
>>301
勉強になったわ



311 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 19:37:44.52 ID:9p5UOFbs.net]
アセンブラで書くならともかく、
既存のコンパイラで自己流の呼び出し規約を使うって可能なのかな。

312 名前:デフォルトの名無しさん [2017/08/04(金) 19:43:40.82 ID:gG3ajqK7.net]
レジスタとか出てる時点でアセンブラやけどね。
高級言語からは同じに見えてもアセンブラからAPI呼ぶ時に混乱の元だから規約になってるんだろう。

313 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 19:47:10.77 ID:LmZvF4Bx.net]
>>306
自己流の呼び出し規約を使うのは自己流のコンパイラだけだろ
それが既存かどうかは知らんけど

314 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 19:49:02.44 ID:fFEm/UGM.net]
アセンブラでリーフ関数を呼ぶとき位だな
自己流が役立つのは

315 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 20:12:22.52 ID:B2ZVqR3g.net]
pro*cって何のために存在するの?
普通にc言語のコードにSQL埋め込めばよくね?

316 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 20:15:41.79 ID:d/io8eQ7.net]
>>301
第6引数までじゃね? 普通は rdi rsi rdx rcx r8 r9
rax も浮動小数の個数に使うが
windowsだけは rdx rcx r8 r9 だった気がする。

317 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 20:27:46.30 ID:fFEm/UGM.net]
floatやdoubleが混ざれば

318 名前:デフォルトの名無しさん mailto:sage [2017/08/04(金) 23:32:26.83 ID:ajRTrwbv.net]
>>310
普通はCにSQL埋め込むなんてできないだろ。
SQL文を送ってコンパイルする関数を呼んで実行する関数を呼んで結果を取得する関数を呼ぶので
かまわないならPro*Cなんて必要ない。

それにしてもなんで今頃Pro*Cなんだろうか。とっくに廃止されたかと思ってた。

319 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 01:02:35.26 ID:wHnek147.net]
よくわからないんだけどSQLと連動できるプログラム言語ってあるの?

320 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 01:36:09.75 ID:AmDvMFkm.net]
Transact-SQLとかのことか?



321 名前:はちみつ餃子 mailto:sage [2017/08/05(土) 02:01:06.28 ID:mmL6pr8y.net]
Linq とか

322 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 13:32:17.23 ID:9ltGhnE7.net]
>>314
SQL埋め込みコボルが世の中に何百万行残ってるとおもってんだ

323 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 17:30:23.26 ID:eD6LHYAo.net]
>>293
そりゃそうか
失礼しました

324 名前:デフォルトの名無しさん mailto:sage [2017/08/06(日) 15:44:19.07 ID:4cVoKrwP.net]
コボルかー
じゃjavaとかpythonとかC++やCで大量データを扱おうと思ったら何らかのアルゴリズムでデーターベース自作するしかないの?
それともそういう目的だとすべからくLinqとかつかってるの?

325 名前:デフォルトの名無しさん mailto:sage [2017/08/06(日) 16:33:45.26 ID:k6XOSsfa.net]
ORまっぱ

326 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 00:24:32.53 ID:9fB0IwUX.net]
大量のデータを処理したいのならPLSQLとかのdb上で動作するやつじゃないの?

327 名前:デフォルトの名無しさん mailto:sage [2017/08/07(月) 00:26:46.20 ID:DdwwpY1/.net]
DB操作用のクラスが標準ライブラリにあるから、その言語はSQLをサポートしてると思ってるのだろう。

328 名前:デフォルトの名無しさん mailto:sage [2017/08/08(火) 21:38:02.52 ID:9+bCDZAx.net]
const char ex1[] = "test";
const char ex2[] = { 't', 'e', 's', 't', '\0' };
auto ex3 = "test";
auto& ex4 = "test";
auto&& ex5 = "test";

ググってみると、ex1とex2は完全に等価、ex3はconst char*?
ex4とex5はconst char[]だけどex1、ex2と等価ではない?
どういうことッスか?なんかよー分からんです。

329 名前:デフォルトの名無しさん mailto:sage [2017/08/08(火) 21:44:21.88 ID:RV4q7wps.net]
変数名の上にマウスポインターを持って行く
ぐらいは試したのだろうか

330 名前:はちみつ餃子 mailto:sage [2017/08/08(火) 22:10:21.09 ID:FFmZneRO.net]
誰もかれもがモダンな統合開発環境を使ってると思ったら間違いやで。



331 名前:片山博文MZ mailto:sage [2017/08/08(火) 22:12:27.93 ID:m3/ZcJyF.net]
早くナウいモダンボーイになれよ

332 名前:デフォルトの名無しさん mailto:sage [2017/08/08(火) 22:13:12.16 ID:RV4q7wps.net]
>>325
その通りだ
では
ideone.com/GtYLLG
この結果を見てわからなければ出家するしかない

ついでにex1,2は関数が実行される度に配列が作られる

333 名前:片山博文MZ mailto:sage [2017/08/08(火) 22:16:15.22 ID:m3/ZcJyF.net]
配列への参照というのが分かりにくいね。

334 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 18:30:53.88 ID:hewgQard.net]
using F = void () &;
struct A { void f() & {} };
F A::*const &mp = &A::f;

参照もこのぐらい複雑になるとコンパイラーですら正しく実装できないものが出てくる

335 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 20:42:43.33 ID:deJRgLks.net]
初心者歓迎スレはいつから難読コードスレになったんだ?

336 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 23:21:19.78 ID:HVjwey6J.net]
難読禁止スレではないし
それより言語を断らずにc++限定の話すんなや

337 名前:デフォルトの名無しさん mailto:sage [2017/08/09(水) 23:58:04.92 ID:1RczvVHb.net]
ぷらぷらは意図しない難読化しやすいよなぁ

338 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 00:19:15.22 ID:iih/xgGV.net]
おまえらは意図してドヤ顔でオナニーコード貼って理解できないなら出家しろとか言ってるからな。

初心者相手にマウンティングとか見てて恥ずかしい。

339 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 07:19:08.51 ID:9leEGZbL.net]
バカにマウンティングしてるお前や俺よりマシだろ w

340 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 07:42:54.68 ID:0ifqJKrS.net]
d.hatena.ne.jp/yupo5656/20060907/
この話ってグローバル変数の時だけと思っていいですか?
void f(){ const char g[] = "asdf"; }
だと毎回初期化する分、損になりそうに思うんですが



341 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 07:57:39.32 ID:OxRJE4uH.net]
普通は最適化されて何の問題もないだろうけど

組み込み用の一部の糞コンパイラとかで使う可能性があるなら書き換えておいた方が良いかもね

342 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 08:00:25.98 ID:OxRJE4uH.net]
極端に悪くなる可能性のあるコードにしない
汎用性のあるコードを書く時の基本

特定の環境だけならその環境でテストしてみればわかること

343 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 08:05:23.26 ID:PWbZqU7d.net]
>>335
だからstatic付けろって書いてあるっしょ

344 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 12:55:02.15 ID:XSzwBP/X.net]
リテラルに名前付けたいだけなら
auto&&var=リテラル
何も考えずこれでええw

345 名前:はちみつ餃子 mailto:sage [2017/08/10(木) 13:19:12.39 ID:eseR3mB4.net]
せやろか

346 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 14:56:24.20 ID:R7slyUqA.net]
はいそうです

347 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 16:20:23.29 ID:K3yW/cOR.net]
もしかして#defineで定数用意するよりそっちの方がかっこいい?

348 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 16:58:59.12 ID:R5q9oGzu.net]
マクロ多用するとデバッグ面倒にならね?

349 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 16:59:23.11 ID:9PTjWwFP.net]
#define A 100 ←存在が害悪の化石老人
auto &&A = 100; ←ODRを考えない短絡思考
constexpr int A = 100; // ←ふつうの人
constexpr auto &&A = 100; // ←ちょっとヘンな人

350 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 18:17:00.74 ID:OxRJE4uH.net]
組み込みCだとdefineしか出来なかったりするんだよ



351 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 18:23:30.24 ID:0YJhJ81N.net]
>>344
ODR って何の略?

352 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 18:53:23.23 ID:cpubt7xV.net]
>>346
ODRとはOne Definition RuleのことでC++の重要なルールである。
Cの仮定義と異なりC++ではインライン関数やテンプレートを除き
「定義」が複数あってはならない。
この多重定義の禁止と一部の例外を定めたルールがODRと呼ばれる。
例えばauto && A = 100;が記述されたヘッダファイルを
二つの翻訳単位からincludeしたとすると
二つの翻訳単位でAが定義されることになりエラーとなる。
詳細は処理系のマニュアルを見よ。

353 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 19:40:58.66 ID:1RrigXav.net]
もしかしてヘッダファイルにconstexpr auto &&A = "lkjdslkjf";とか書くのって合法?
#define 名前 定数としてたやつは全部constexpr auto &&名前 = 定数で置き換えられる?

354 名前:デフォルトの名無しさん mailto:sage [2017/08/10(木) 21:11:04.47 ID:yu1iQyxx.net]
>>348
内部リンケージなのでODRには違反しない
翻訳単位ごとに実体が異なるのでアドレスが異なると困る場合には使うべきでないが
これは旧来のstatic constやdefineでも変わらない

355 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 03:47:43.97 ID:eOUFNbYQ.net]
#define→enum→const→constexpr
定数書くのに変わり杉です
理想論いらないです#define溢れた現実世界見よ

356 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 08:37:53.72 ID:NrUav3sg.net]
>>350
老害の見苦しい言い訳乙
ディープラーニングとか言っても理解できないんでしょ?涙拭けよ

357 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 08:55:50.68 ID:xt3khzo9.net]
constexprにしたほうがいいものがconstになってるのは結構あるけど、defineなんてほぼ見ないけどな

358 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 11:58:39.97 ID:vOciZ7Dc.net]
>>351
Aで詐欺でもしてるんですか?

359 名前:はちみつ餃子 mailto:sage [2017/08/11(金) 13:32:11.00 ID:eZ0/1svY.net]
さすがに #define は殺そう

360 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 14:16:58.81 ID:Tw4iEl8C.net]
組み込みのチープな世界を知らないんだな



361 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 14:29:14.52 ID:Ngnf1AZe.net]
知る必要すらない

362 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 14:37:28.25 ID:Tw4iEl8C.net]
リッチな環境限定のスレじゃないから
環境依存OK

363 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 14:39:12.01 ID:Tw4iEl8C.net]
知る必要がない人が大部分だろうが
ここはそういう人限定のスレではない

364 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 14:40:43.01 ID:Tw4iEl8C.net]
>>354 みたいなのを見ると、視野が狭いと思ってしまう
色々な事情で色々なコードがある

365 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 14:43:55.42 ID:Tw4iEl8C.net]
Cに移植する可能性がゼロであるコードをC++上で新規でdefineで書いてたら老害だと思う

366 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 15:18:06.60 ID:BFfVWgAm.net]
組み込みCだとstatic const使えてもアセンブリレベルで
即値にならないので#defineは常識
環境依存スレで多様性否定する奴は去れ

367 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 15:54:54.01 ID:99wg1jHM.net]
>>355
どこのコンパイラ使ってるか書いてみ

368 名前:はちみつ餃子 mailto:sage [2017/08/11(金) 16:37:53.27 ID:eZ0/1svY.net]
>>361
だからそういうコンパイラを殺そうぜっていう話な

369 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 19:54:31.22 ID:+jIwXf8Q.net]
constとconstexprの違いがよくわからない

370 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 20:11:06.67 ID:TX++PaV2.net]
動的か静的かの違い?



371 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 20:26:59.57 ID:xY0P43RN.net]
ROM に書ける内容だったら constexpr
RAM に置かなければならないのなら const

372 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 20:35:58.34 ID:+GdUPlS/.net]
ROMって見たこと無いけど実在するの?

373 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 22:35:43.38 ID:nYt6U0do.net]
>>323
分かるヤツ使ってればいいだろ

374 名前:デフォルトの名無しさん mailto:sage [2017/08/11(金) 22:38:20.04 ID:+GdUPlS/.net]
>>364
どちらもコンパイル時に決まるものも決まらないものも扱うUNKO仕様なので常人が理解できないのは致し方ない
一つ知っておくべきなのは「constexprの変数はコンパイル時に決まるもののみ」ということ

375 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 06:07:41.79 ID:Bi4KH0eW.net]
>>367
一般人はRAMも見たことないよ

組み込み用マイコンだと、フラッシュROMからそのまま実行したりする
コードもconstデータもROMに置いてそのまま実行出来る

376 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 08:39:04.62 ID:kmz0IeX9.net]
メモリ増設の時ぐらいしかスロット見ないし
え?別の話?

377 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 08:43:37.90 ID:4bZijuJS.net]
光学メディアもROM、RAMか

378 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 08:45:12.28 ID:W5hpPQ56.net]
デシタルネイティブ「RAMもROMを見たことがない」

379 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 09:18:14.87 ID:l8v9tpAX.net]
>>373
> デシタルネイティブ「RAMもROMを見たことがない」
デバイスの話なのか
チップの話なのか
ダイの話なのか

380 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 11:23:24.91 ID:cYvxwySm.net]
>>374
そんなこともわからんのかジジイは
「どんなものかは知らんがRAMとかROMとか呼ばれるモンを見たことがない」
ってことだ
それ以上の意味はない



381 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 11:30:23.35 ID:Rv1gs3bL.net]
CDショップやDVDレンタルショップがあってもそこに並んでいるのがROMだと認識できない無知なだけでは

382 名前:はちみつ餃子 mailto:sage [2017/08/12(土) 14:15:09.06 ID:5zwa3GdH.net]
>>376
いまどきの若者は CD も DVD も使わんのやで。

383 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 14:27:13.69 ID:sYSoZbpb.net]
CDROMなら知ってるよ

384 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 15:36:58.80 ID:B05a5g6/.net]
まあスマホのスペックにはROMとRAMの容量が書いてあるけど
殆どの利用者は理解してないな

385 名前:はちみつ餃子 mailto:sage [2017/08/12(土) 16:26:44.03 ID:5zwa3GdH.net]
スマホの表記で ROM って言ってるの、そもそも ROM じゃないだろっていう。

386 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 17:41:32.36 ID:ORwFQQja.net]
フラッシュはEEPROMの一種だからな

387 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 18:25:30.05 ID:Bi4KH0eW.net]
フラッシュはROMの一種

388 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 22:15:11.32 ID:KtFjlZWy.net]
class C {
private:
static int secret;
public:
friend int peep() {return secret;}
};
このpeepはどうやって呼び出すのが正解なんだぜ?

389 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 22:18:47.73 ID:3DdLvbHE.net]
てかそれコンパイル通る?

390 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 22:25:08.16 ID:KtFjlZWy.net]
>>384
コンパイルは通るんだがまるで飲み込まれたようだぜ
c.peep();
peep();
C::peep();
どれも反応しない



391 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 22:28:18.66 ID:3DdLvbHE.net]
へー、通るんだ。
とりあえず、peep()はメンバー関数じゃないから引数にCを渡すなりするのが普通の使い方だろう。

392 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 22:33:38.16 ID:l8v9tpAX.net]
>>380
「そもそもROM」ってなに?
マスクROMしかダメとか?

393 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 22:41:10.73 ID:KtFjlZWy.net]
おおお
Cクラス渡すと通った
class C {
private:
static int secret;
public:
friend int peep(C data) {return secret;}
};
int PosCalc(BOOL flag) {
C data(0, 0)
int count = peep(data);
//いろいろ計算
}
ダミーでインスタンス渡すってことなんだな

394 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 22:44:09.18 ID:WjSPvpbD.net]
friendの意味分かってる?

395 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 22:53:16.34 ID:Yi4OBpEw.net]
ROM 不揮発メモリ
RAM 揮発メモリ
リードオンリー何それ

396 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 23:05:04.34 ID:Bi4KH0eW.net]
MRAMとかFRAMは不揮発

397 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 23:05:42.05 ID:qm/cOPpP.net]
>>383
ideone.com/qc8SUA

398 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 23:10:35.92 ID:3DdLvbHE.net]
secretはstaticだったか。見落としてた。

399 名前:はちみつ餃子 mailto:sage [2017/08/13(日) 00:36:14.04 ID:B4YDUmld.net]
>>387
Read Only つってるのに、意味が拡大して結局それどういう意味なんだよっていう

400 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 01:36:36.53 ID:HI8S2XNx.net]
文脈で判断しないと。CでROMつったら不揮発性メモリのこと。CDROMのことではない。



401 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 01:39:15.30 ID:PA7iDDOj.net]
それにしてもfirendって付けた関数の方にボディーを書くことが出来るんだな
キモ

402 名前:片山博文MZ mailto:sage [2017/08/13(日) 01:59:58.88 ID:8O7/DK3E.net]
CでぇーROMまんてぃっく

403 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 06:29:34.48 ID:03rMAOAx.net]
>>395
それは違う

404 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 06:30:06.63 ID:03rMAOAx.net]
>>396
friendじゃなくてもかけるけど

405 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 07:55:49.45 ID:WSSr83j3.net]
>>390
ReadOnlyMemory

406 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 08:21:05.43 ID:49RznEc3.net]
揮発不揮発は関係ない
読み込みと同等の速度で普通に書き込みが出来るか
Cの場合、普通の代入やmemcpyで普通に書き込み出来るかどうか

407 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 09:45:28.87 ID:HI8S2XNx.net]
>>398
おまえのマイコンにはCDROMが内臓されてるのかよ。馬鹿は休み休みいえ。

408 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 10:05:31.19 ID:HI8S2XNx.net]
>>401
また頓珍漢なことを。

409 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 10:16:39.11 ID:TSMbvEPJ.net]
>>395
メモリの不揮発性ってのは意味合いが違うぞ。
フラッシュメモリは不揮発性だがROMではない。

410 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 10:25:56.46 ID:HI8S2XNx.net]
EEPROMの一種だろうが。組み込み経験ない奴はもうレスすんな。



411 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 10:37:54.73 ID:TSMbvEPJ.net]
組み込み経験と何の関係がw

412 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 10:38:05.69 ID:PA7iDDOj.net]
>>399
普通friend指定はこのようにするとおもう
www.sirochro.com/note/cpp-class-friend-function/

それを
ideone.com/qc8SUA
のように出来るのはキモいと思うが

413 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 11:19:48.45 ID:HG5dPUko.net]
>>404
フラッシュメモリはROMの仲間だけど…

414 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 11:20:22.74 ID:md5XkZ0n.net]
EEPROMはROMなのか?

415 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 11:31:45.02 ID:HG5dPUko.net]
不揮発性だけどROMでしょ

416 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 20:43:58.81 ID:Tf2liO6H.net]
そりゃ揮発性のROMって意味ないから...

417 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 21:09:32.11 ID:1akT1/u1.net]
肉抜きのステーキとかチーズ抜きのチーズバーガーみたいなもの?

418 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 23:37:23.43 ID:b2PcXx/4.net]
そういうこと言うから豆腐ステーキとか書きたくなる

419 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 23:41:05.82 ID:WikyJvVl.net]
>>356
そういう仕事をするハメになったら
タラタラ文句言うだけで成果出せなくてもいいの?

420 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 23:45:20.52 ID:WikyJvVl.net]
ん?天抜きとかたのまないの?



421 名前:デフォルトの名無しさん mailto:sage [2017/08/13(日) 23:51:34.49 ID:TSMbvEPJ.net]
天ぬきは天ぷら抜きの天ぷら蕎麦じゃないからな。

422 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 00:40:01.90 ID:NpV9/t44.net]
世の中知らんやつらが多いな

423 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 00:46:16.17 ID:NpV9/t44.net]
フラッシュもEEPROMもROMと呼ばれる
ROMの語源はRead Only Memory
でも、今は消去や書き込みが可能なメモリ

424 名前:ノも使われるようになった

読み書きともランダムアクセスが可能で、アクセス時間も読み込みと書き込みで大きな差が無いものがRAM
DRAMやSRAM, MRAM, FRAMがこの範疇

そうでないものがROM
NAND, NOR, EEPROMなんかはROMという扱い
[]
[ここ壊れてます]

425 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 00:59:13.70 ID:qET1a6fj.net]
いろんな人がいるね。
俺の中では電源切っても覚えてるかどうかの違いだよ。

426 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 01:00:55.60 ID:NpV9/t44.net]
MRAMはROMか?
FRAMはROMか?

427 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 01:16:56.43 ID:qET1a6fj.net]
ROMです(俺の中ではね)

428 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 01:33:45.85 ID:IT2ffc23.net]
ID:qET1a6fjが非常識なのはよく分かったけどあまり言いふらさない方が生活し易いと思うよ

429 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 01:37:55.14 ID:IeoGyZA4.net]
もう少し役立つ話題にしろよ

430 名前:デフォルトの名無しさん [2017/08/14(月) 04:51:13.03 ID:qbtpazWw.net]
template <typename T>
class DataStoreArray
{
public:
explicit DataStoreArray(std::size_t size) : mValueArray(new T[size]) {}
~DataStoreArray() { delete [] mValueArray; }
inline T operator[](std::size_t index) const
{
cout << "from primary : T : " << index <<endl;
return mValueArray[index];
}
inline T& operator[](std::size_t index)
{
cout << "from primary : T& : " << index <<endl;
return mValueArray[index];
}
private: T* mValueArray;
};
int main()
{
static const int size = 3;
DataStoreArray<int> iStoreArray(size);
for (int i = 0; i < size; ++i)
{
iStoreArray[i] = i * 10;
}
}
from primary : T& : 0
from primary : T& : 1
from primary : T& : 2
iStoreArray2[i] = i * 10;で[]をオーバーロードした時
戻り値がT&のほうが呼び出されるのはなんででしょうか?



431 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 05:23:42.65 ID:P3rVXCaa.net]
class Point {
public:
Point() {}
int x, y;
};

std::vector<Point*> vec;
vec..push_back(new Point());

こんな感じに作られたvectorの中のPointを解放するにはどうしたらいいでしょうか
以下のようなコードを考えて実行していたところ、free_base.cppというところで例外が発生しました
内容は「block Error reading register value.」です
for (unsigned int i = 0; i < vec.size(); i++) {
delete vec[i];
}

432 名前:424 [2017/08/14(月) 05:24:58.54 ID:qbtpazWw.net]
>>424
自己解決しました。

433 名前:デフォルトの名無しさん [2017/08/14(月) 05:58:41.65 ID:qbtpazWw.net]
>>425
タイプミスとは思うけどvec..push_backのドット2つ付けてるのが原因じゃ

434 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 18:57:13.14 ID:6kKovBuY.net]
>>427
それではないです

435 名前:片山博文MZ mailto:sage [2017/08/14(月) 19:38:37.75 ID:0VcPF6xv.net]
>>425
コンパイラーを変えてみたら?

436 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 20:02:20.41 ID:cPbpYqjZ.net]
↑バカ

437 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 21:00:06.87 ID:2BlD9S+P.net]
>>425
ここに書いてない部分に問題がある気がする

438 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 21:09:59.18 ID:4UD3Pot4.net]
>>431
delete済みのポインタを更にdeleteしてたりしてな

439 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 22:15:23.49 ID:IeoGyZA4.net]
>>425
stackoverflow.comで聞くといいよ

440 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 22:21:54.47 ID:i3ERgNqH.net]
2chにコード書きこんで質問するんなら
そのコードで問題が再現するのかどうなのかぐらい確認してから
書き込んだ方が良いだろうな、常識的に



441 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 23:12:49.50 ID:G751meAI.net]
でも2chだからなー

442 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 23:24:57.28 ID:gV3KeQMV.net]
普通は再現する最小限のコードこさえてる時点で
たいていはバグの原因に気付いて質問やめる

443 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 00:30:11.65 ID:ILMibSrs.net]
> block Error reading register value

これ何のエラー?

444 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 01:01:30.84 ID:xb8goknd.net]
>>437
WindowsのHeapFreeが出したりするエラーで基本的にはメモリをぶっ壊してる事に起因するらしい
ただしリビルドしたら治ったとかいう話もあったりしてなんだか分からない

445 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 01:17:41.90 ID:ILMibSrs.net]
なら、流行の方法は知らないけど、ポインタを最初にNULLできちんと初期化して
NULLチェックしてからdeleteして、deleteしたら忘れずにNULLで初期化すれぱいいんじゃないの。

446 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 01:36:52.39 ID:RtDnkjIA.net]
スマポ使え

447 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 01:43:30.18 ID:z7TEyY+0.net]
>>439
deleteするときのNULLチェックていらないよね
NULL(nullptr)のdeleteは何も起こらない保証があるから使い終わった後にNULL代入するのはよくやるけど

まぁ今どきのC++なら素直に>>440だね

448 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 02:48:07.41 ID:ILMibSrs.net]
調べたらいっぱいあって余計に混乱しそうだわ
auto_ptr
unique_ptr
shared_ptr
weak_ptr

449 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 06:24:37.22 ID:/mWh256Z.net]
>>442
ナマポで自分でやるのがいいよね

450 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 08:15:54.91 ID:GzAS59pw.net]
>>442
auto_ptr ⇒ オワコン、使用禁止
unique_ptr ⇒ 共有しないならこれ
shared_ptr ⇒ 共有するならこれ
weak_ptr ⇒ はて?いつ使うんだこれ



451 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 08:22:05.26 ID:nyBipa/m.net]
なんか循環参照がどうとか言う時に使う

452 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 08:37:37.53 ID:X4XuSaPF.net]
weak_ptrってかシンプルなreference_ptrみたいなのがほしい

453 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 10:08:07.69 ID:JqN6tr9G.net]
それなら生ポで良いじゃん

454 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 15:03:52.07 ID:cAweUVNO.net]
話題に便乗して。
new,delete満載の既存のコードをスマポに置き換えてくコツみたいのってあります?
作り直したほうが早いのかな

455 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 18:45:11.19 ID:tu7eHngw.net]
shared_ptrか生ポの入ったvectorを基底クラスにアップキャストするスマートな方法おしえてください
割と使うくせに良い方法が思いつかない

456 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 19:01:49.84 ID:Q70B1fQS.net]
>>448
p = malloc()

p = std::make_shred<てきとー>() に置き換えて delete() を消す…

457 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 23:43:12.59 ID:VOm+amDT.net]
アップキャストは特に何もしなくても必要になれば勝手に安全にアップキャストされるから
アップキャストするスマートな方法って質問の意図が良くわからない
というか、安全に勝手にアップキャストされるのは静的型のメリットの一つだし

458 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 00:01:22.48 ID: ]
[ここ壊れてます]

459 名前:2E64Am1a.net mailto: あーやっと質問の意味が分かった
vectorをvectorごとアップキャストして別のvectorに代入するのか
そんなことしたいと思ったこともなかったから分からなかったわ
アップキャストするときにアドレスをオフセットしなきゃならない場合があるから
勝手にはしてくれないんじゃないかな
たしかC#は勝手にしてくれるんだっけか
[]
[ここ壊れてます]

460 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 00:25:49.33 ID:2E64Am1a.net]
なにかstd::の中に便利なものが用意されているかもしれないが
template< typename _t, typename _u >
void copy( std::vector<_t> &dst, std::vector<_u> &src )
{
  auto size = src.size();
  dst.resize( size );
  auto dst_ptr = dst.data();
  auto src_ptr = src.data();
  for( size_t i = 0; i < size; ++i )
  {
    dst_ptr[ i ] = src_ptr[ i ];
  }
  return;
}
このような感じの適当なテンプレートでも作って対応したらどうですかね
もうちょっと汎用性を持たせることも出来るけど、std::listとかまず使わんし
vector専用ってことで良いんじゃないかな



461 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 00:44:05.66 ID:2E64Am1a.net]
あ〜でもデフォルトのアロケータにしか対応しないのはアレか

template< typename _t, typename _u >
void copy_vector( _t &dst, _u &src )



template< typename _t, typename _u, typename _v, typename _w >
void copy( std::vector<_t, _u> &dst, std::vector<_v, _w> &src )

の方が良いのかね

462 名前:片山博文MZ mailto:sage [2017/08/16(水) 00:49:08.01 ID:N/6IcKLl.net]
x.assign(y.begin(), y.end());

463 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 01:52:38.36 ID:wWWqM4+K.net]
典型的なautoの弊害コードだな。

464 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 15:14:24.51 ID:mnlpMbS3.net]
strcmp で長さ0の文字列同士を比較した場合の結果は規定されてますか?

465 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 16:09:03.15 ID:53LlWcIm.net]
>結果は規定されてますか?
Yes
ISO/IEC 9899:2011 7.1.1/1では終端ヌルはstringの一部なので同じと見なされるだろう
ISO/IEC 14882:2014 21.8のstrcmpはCの規格丸投げなので同じだろう

466 名前:457 mailto:sage [2017/08/16(水) 16:17:21.15 ID:mnlpMbS3.net]
ありがとうございます

467 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 19:58:01.86 ID:SkaUp3/b.net]
>>454
こういうtemplateやtypenameが入り混じったc++のソースってc#好きの俺には耐えられん。ごちゃごちゃしていて見た目が美しく無いよね。

468 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 20:00:25.84 ID:SkaUp3/b.net]
ああ、454さんを批判する意図は無いのでお間違いなく。

469 名前:デフォルトの名無しさん [2017/08/16(水) 21:21:06.13 ID:64ASz8nj.net]
int main() {
std::deque<int> deq(10);
const std::deque<int>::size_type size = deq.size();
for (int i = 0; i < static_cast<int>(size); ++i) { deq[i] = i; }
std::cout << deq.front() << std::endl;
}
配列のサンプルコードで
const std::deque<int>::size_type size = deq.size();
こういう記述を良く見るんですが、
int size = deq.size();
では駄目なケースとかあるんですか?

470 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 22:14:04.28 ID:1Ba2PBWP.net]
テンプレートのウザイ仕様です
型に依存したコードにならざるをえないのに、
使えと強要するような型定義



471 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 22:15:53.93 ID:1Ba2PBWP.net]
ていうか、キャストしてるから動作は同じだな

472 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 22:45:16.00 ID:zl8YLx97.net]
それより
auto size = deq.size();
for (int i = 0; i < size; i++ );
で比較の部分に警告が出るのを何とかして欲しい

473 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 22:48:56.53 ID:TFzMtZDz.net]
なぜ、decltype(size)とすら書かないのか…

474 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 22:54:21.64 ID:zl8YLx97.net]
for (decltype(size) i {}; i < size; i++);
ごめん、生理的に無理

475 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 22:56:56.26 ID:HDO3jlPo.net]
>>467
じゃあ、やめときな
生理的にあわない言語だったんだよ
さようなら

476 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 02:50:59.58 ID:POHMQxDJ.net]
どっちもsize_tじゃアカンの?

477 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 03:45:02.07 ID:sil69yD8.net]
この手の話をする時間が勿体ない
c++の言語仕様に悩む時間が無駄
俺も頃合みて捨てるわ

478 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 03:47:16.62 ID:6E9r52D/.net]
組み込み、OS、ドライバを書く言語ではなくなったな。

479 名前:はちみつ餃子 mailto:sage [2017/08/17(木) 03:49:09.87 ID:K5IWxEsn.net]
>>469
あかんよ。
この場合、 deq の型はたぶん deque を想定してるんだと思うけど、
deq.size() の返却値が size_t である保証はないはず。 (他のコンテナでも同様)
この型はあくまでも deque::size_type なので、
まあ一般的には size_t と同じになるだろうけど厳密に言えばそれをあてにするのはよろしくない。

480 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 06:22:12.53 ID:zzoRHhsR.net]
sizeとdeq.size()が同じ型である必要はない
sizeがdeq.size()の値を保持出来れば何でもいい
charでもビットフィールドでも



481 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 07:08:05.04 ID:6E9r52D/.net]
グダグダ感が半端ないな。そりゃ全てを捨ててJavaやC#を作りたくなるわ。
でもJavaやC#がC++と同じ道を歩んでて笑える。

482 名前:462 [2017/08/17(木) 08:47:14.10 ID:XAlxh4c7.net]
とりあえず万全を期すためにってやつみたいですね。
レスありがとうございました。

483 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 08:12:05.04 ID:Df++WDQ/.net]
[var1 var2] = func();
みたいに返り値2つにする方法ってないですか

484 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 08:19:11.14 ID:cQGhZEXD.net]
二つを含んだ構造体やクラスを返す
引数にアドレスや参照を渡してそこに書いてもらう
グローバル変数経由で返す
ファイル経由で返す
...

485 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 08:25:33.13 ID:jeMQJBsl.net]
>>476
std::tupleでググれ

486 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 08:40:55.93 ID:nZKbkzFD.net]
いいかげんCとC++分けようぜ

487 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 09:18:42.99 ID:tz1eiY37.net]
>>476
有ります

488 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 09:21:26.56 ID:tz1eiY37.net]
きっと昨日Visual C++をバージョンアップして
できるようになったのが嬉しかったに相違ない

489 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 11:50:59.94 ID:CFJX4XlT.net]
初心者歓迎スレなんだから、>>480みたいな小学生の悪ふざけみたいなレスはやめよう。
すでに真っ当な回答も出ているのに。

490 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 13:03:51.12 ID:Df++WDQ/.net]
>>477-478
ありがとうございます
tuple使おうと思います



491 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 13:07:19.75 ID:jeMQJBsl.net]
>>483
ついでにstd::tieもググっとくといいかも

492 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 21:34:14.61 ID:dvMMsT1N.net]
初歩的な質問で申し訳ないのですがC言語のおすすめの開発環境はなんでしょうか
調べてみたら結構種類があって自分で選ぶことができないです

493 名前:片山博文MZ mailto:sage [2017/08/18(金) 21:39:48.25 ID:sjvn+N2b.net]
>>485
リッチな環境が望みなら、
Visual Studio 2017。
貧乏人は
MSYS2とテキストエディタ。

494 名前:デフォルトの名無しさん [2017/08/18(金) 21:41:06.02 ID:yRxu02Qs.net]
意見が割れそうだけど、迷うくらいなら、winならvisualstudio, macならxcodeでも使ってみては
取り敢えずデバッガが手軽に使えれば何でもいい気はする

495 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 21:41:55.55 ID:enWn3c7M.net]
その前にそちらの環境を

496 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 22:18:09.85 ID:dvMMsT1N.net]
>>486
>>487
ありがとうございます!
visual studioでやります!

497 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 22:46:00.68 ID:FB1E6DTF.net]
学生時代と就職当初はC、現在はJavaとCsharpを主にやっています
最近C++を独学で勉強しようと思って調べはじめたした
印象ですが、これは言語作った人はどうみても天才で変態なんじゃないかと思いました
言語仕様としてはJavaなんかの方が広いかも知れないけど…
奥深さというか、底無し沼な予感というか最強なのでは?との印象を持ちました
2ちゃんねるなんかで見るかぎりあまり人気のある言語では無さそうですが、これはJavaなんかでも同じでWeb屋さんとかが言ってる気がしました

以上が自分の現時点での感触なのですが、大きく外れてはいませんでしょうか?
釣りとかでは一切ないです

498 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 22:56:37.18 ID:R7MrN97k.net]
さいきょーだとかの漠然とした印象とか持つんじゃなくて、それぞれの言語の長所短所とか、どういうケースで使われているとか、そういうのをちゃんと調べたら?

499 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 23:03:57.12 ID:w2enVJbE.net]
C++は言語ヲタク的には際限なく楽しいけどそれだけ
今直ぐ実現したい何かがある時はpythonかphpで済ませちゃうw
お仕事の人はそんな自由ないだろうからガンダムしかない

500 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 23:52:59.71 ID:B0LmSygc.net]
>天才で
ものは言いようだな
複雑な概念を分かりやすく整理できる人間はこんなUNKO言語は作らない



501 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 05:46:25.10 ID:65TMOtSV.net]
新機能を使いたがる馬鹿は採用しません。

502 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 11:11:21.66 ID:2Vqw9aXW.net]
>>486
意味わからん
Community Editionは無償だぞ

503 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 11:37:47.76 ID:fJjUBUKN.net]
C++は天才の言語と言うよりは、無駄に意識高い人の言語。
関係ないけど京都出身のプログラマはC++使ってる奴多い印象。
一見さんお断り的な文化が合ってるんだろう。

504 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 11:48:31.10 ID:w9JmRxmV.net]
>>496
C++11later になってからいっそうひどくなりました。テンプレート周りはもうわけわからん、翻訳じゃなくきんとした和書はでないものですかね

505 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 11:54:49.03 ID:4VaJZBkL.net]
>>495
きっとライセンスのことなんて考えたことないんだよ

506 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 12:10:40.40 ID:zAuNzUDU.net]
>京都出身のプログラマ
ぷぷぷっ

507 名前:片山博文MZ mailto:sage [2017/08/19(土) 12:35:47.59 ID:cKMZzj+K.net]
まだWindows XPを使っている人が居るかも知れないから。

508 名前:デフォルトの名無しさん [2017/08/21(月) 00:35:19.32 ID:3vfGh3Or.net]
まぁ、島根だか鳥取だかの出身のプログラマはruby大好きなイメージと同じだよな。

509 名前:デフォルトの名無しさん mailto:sage [2017/08/21(月) 08:26:40.74 ID:zEm/QKUv.net]
ruby はやめて python にするよ‥

510 名前:デフォルトの名無しさん mailto:sage [2017/08/21(月) 16:02:51.68 ID:ZisHBz7l.net]
嫌、そこはALGOLだろう



511 名前:デフォルトの名無しさん mailto:sage [2017/08/22(火) 09:50:47.77 ID:q1PzJh5l.net]
c/c++の簡単版があればいいんだが
rustはあまりにも機能が多い

512 名前:デフォルトの名無しさん mailto:sage [2017/08/22(火) 10:53:41.18 ID:NZxMNqD7.net]
スレチだけどオープンソースのAlgol68ってあるんだな

513 名前:デフォルトの名無しさん mailto:sage [2017/08/22(火) 11:29:16.92 ID:KZ6Dh/Z1.net]
>>504
java「呼んだ?」

514 名前:デフォルトの名無しさん mailto:sage [2017/08/22(火) 11:29:39.34 ID:COEJtZVq.net]
C++はベターCとして使うのが最も生産的だと思いました。

515 名前:デフォルトの名無しさん mailto:sage [2017/08/22(火) 17:29:10.69 ID:NIBb7Mxl.net]
auto使ってる奴見るとイタイ奴だなと思いました。

516 名前:デフォルトの名無しさん mailto:sage [2017/08/22(火) 21:27:29.17 ID:hmTXL6wT.net]
auto に問題があるの?

517 名前:デフォルトの名無しさん mailto:sage [2017/08/22(火) 22:18:17.39 ID:nZXv/xRm.net]
別に痛い奴だと思われるとガソリン代が上がったりするわけじゃないからね

518 名前:デフォルトの名無しさん mailto:sage [2017/08/22(火) 22:31:49.37 ID:gH/fspX5.net]
型名 変数名 = ... だとデコボコするんで、ついつい
auto 変数名 = ... をズラズラっと並べたくなる
でも、書き終わってから読み直すと、あれ?逆に読みにくい?とか
どーでもいいとこで悩んでしまう

519 名前:デフォルトの名無しさん mailto:sage [2017/08/23(水) 08:09:55.25 ID:Rd2CDMDC.net]
C# の var 論争再び w
老害ってほんと進歩しないのな

520 名前:デフォルトの名無しさん mailto:sage [2017/08/23(水) 08:51:20.73 ID:wn9e0tbq.net]
老害って何歳から?



521 名前:デフォルトの名無しさん mailto:sage [2017/08/23(水) 10:35:28.29 ID:Bqf1nBHj.net]
>>512
https://github.com/aspnet/Home/wiki/Engineering-guidelines

522 名前:デフォルトの名無しさん [2017/08/23(水) 12:45:56.26 ID:svL9mCb4.net]
年齢関係なく、単に馬鹿ほどvar好き。論理的思考ができない。

523 名前:デフォルトの名無しさん mailto:sage [2017/08/23(水) 18:28:16.03 ID:Bqf1nBHj.net]
>>515
https://github.com/aspnet/Home/wiki/Engineering-guidelines

524 名前:デフォルトの名無しさん mailto:sage [2017/08/23(水) 18:28:57.19 ID:5WGHPwEM.net]
>>514
これはガチなの?実はアンチパターンで釣られましたねってことはないだろうな?w

FruitFlavor flavor = fruit.GetFlavor();
var flavor = fruit.GetFlavor();

前者の方が読みやすいような気がしてしまう。
今時ならIDEのアシストあるし関係ないか?って気がしないでもないけど
考えるほど分かんなくなる〜

525 名前:デフォルトの名無しさん mailto:sage [2017/08/23(水) 18:30:10.67 ID:Bqf1nBHj.net]
>>517
MSのOSSリポジトリ覗いてみ

526 名前:デフォルトの名無しさん mailto:sage [2017/08/23(水) 18:42:34.12 ID:svL9mCb4.net]
ID:Bqf1nBHj  な? 馬鹿だろ。

527 名前:デフォルトの名無しさん mailto:sage [2017/08/23(水) 18:53:12.02 ID:Bqf1nBHj.net]
>>519
なにが?

528 名前:デフォルトの名無しさん mailto:sage [2017/08/23(水) 18:59:53.02 ID:HlA0mWJs.net]
C++ 標準委員会のドワンゴ江添は、職務質問の手荷物検査を拒否したら、
警官10人に、現場で1時間半以上、拘束されたらしい

捜査でもない、任意の行政処分なのにw

それで東京都を訴えた

529 名前:デフォルトの名無しさん mailto:sage [2017/08/23(水) 19:04:14.64 ID:svL9mCb4.net]
日頃から発言がおかしい勘違い君だからな。

530 名前:デフォルトの名無しさん mailto:sage [2017/08/23(水) 19:07:29.72 ID:Rd2CDMDC.net]
>>517
そう言う単純な奴ならたいして変わらんので>>515みたいな変化を嫌う老害はvarを使いたがらない
Dictionary<string, Dictionary<string, string>> M = new Dictionary<string, Dictionary<string, string>>();
とか使い始めたら同じの2個もいらんやんってなる



531 名前:デフォルトの名無しさん [2017/08/23(水) 19:13:12.59 ID:svL9mCb4.net]
ここ数年、どのスレで論破されるとキレて老害連呼しだす人がいたが、
おそらく、ID:Rd2CDMDC は同一人物だろう。

532 名前:デフォルトの名無しさん mailto:sage [2017/08/23(水) 19:34:08.26 ID:/4+aEImc.net]
右辺にクラス名が現れるときだけauto使う派
FruitFlavor flavor = fruit.GetFlavor()
auto unko = (Unko)GetFuck()

533 名前:片山博文MZ mailto:sage [2017/08/23(水) 19:36:20.34 ID:8VCPyRKy.net]
複雑な型は事前にtypedefして使う派。

534 名前:デフォルトの名無しさん mailto:sage [2017/08/23(水) 19:36:35.05 ID:GX5TSqZj.net]
ラムダ式のときもauto使うしなー

535 名前:デフォルトの名無しさん mailto:sage [2017/08/23(水) 19:40:35.97 ID:GX5TSqZj.net]
>>526
C++11以降ならtypedefよりusingがよいぞい
https://msdn.microsoft.com/ja-jp/library/dn467695.aspx

536 名前:デフォルトの名無しさん mailto:sage [2017/08/23(水) 19:57:11.83 ID:VR+2stBC.net]
老害は過去のレスには詳しいw

537 名前:デフォルトの名無しさん [2017/08/23(水) 20:13:58.21 ID:elGjkRqx.net]
restrictなんかもそのうちdstのsrc言及有無、srcのdst参照有無を縛る修飾に成るんだろうな

538 名前:デフォルトの名無しさん mailto:sage [2017/08/24(木) 05:55:50.39 ID:5zDLSTW7.net]
>>525
同意

関数が何を返すか分かるから右辺が関数の場合でも構わないけど
関数の戻り値にauto使う奴らは殲滅

539 名前:したい []
[ここ壊れてます]

540 名前:デフォルトの名無しさん [2017/08/24(木) 09:53:17.83 ID:FefNdqnS.net]
タイプが面倒というPGはコメントも書かないし、単体テストも端折るし、
他の人が書いたソースにバグがあるかどうか真剣に読まない。バグ製造機。
プロジェクトにこういう人が一人でもいると、全体の品質が下がるばかりか
全体の士気まで下がるから厄介。態度の悪さを指摘すると老害連呼のウイルスプログラマ。



541 名前:デフォルトの名無しさん mailto:sage [2017/08/24(木) 18:33:33.36 ID:dK94ZXMf.net]
>>532
他人のコードのバグを見つけるとか極悪じゃないか?

542 名前:デフォルトの名無しさん mailto:sage [2017/08/24(木) 19:29:06.97 ID:++6qy4SY.net]
>>533
えっっ?
最近はコードの机上検証はしないって?

543 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 14:56:45.51 ID:nyf+izFi.net]
>>531
ちょっと聞きたいんだけど、
std::vectorをprivateメンバに持つクラスに、vectorのサイズを返すメンバ関数を作る場合、
返値の型はstd::vector::size_typeにするの?
それとも適当にsize_tとかで返しちゃう?

前者だとprivateメンバの型が外側に漏れてる感じが気持ち悪くて嫌だし、
後者は型が違うのが嫌だから、
autoで返しちゃいたいんたけど、殲滅されるべきなのかな

544 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 15:13:47.84 ID:g+9HiqWa.net]
>>535
typedefかusingを使う

545 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 17:04:11.95 ID:mWX/padL.net]
intでいいよ

546 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 17:08:02.77 ID:mWX/padL.net]
メンバ関数ごとに型が違うなんて使いづらすぎる

547 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 17:28:28.06 ID:te52+8O3.net]
intは流石にだめだろ

548 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 17:47:23.39 ID:mWX/padL.net]
intでサイズ的に十分ならint

549 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 17:48:31.18 ID:mWX/padL.net]
>>539
なぜ?

550 名前:片山博文MZ mailto:sage [2017/08/25(金) 18:03:18.25 ID:M7y+0IYN.net]
>>541
sizeof(int) == 4 && sizeof(size_t) == 8という環境がある。
intは符号あり、size_tは符号なし。



551 名前:デフォルトの名無しさん [2017/08/25(金) 18:06:14.26 ID:KodDhcxm.net]
size_tを符号なしにした馬鹿は誰だよ。

552 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 18:15:01.16 ID:mWX/padL.net]
>>542
だから、
intで収まるならintで

553 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 18:19:04.85 ID:te52+8O3.net]
>>544
もとからintならあれだが、いちいち別の型であるintにキャストする積極的な理由はなんだ?

554 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 18:20:08.57 ID:mWX/padL.net]
intをオーバーする心配をするなら
size_tをオーバーする心配も
メモリが足りない心配も
処理が遅すぎて使い物にならない心配も

555 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 18:20:36.17 ID:te52+8O3.net]
>>546
そうじゃなくてわざわざ型変換する理由は何?

556 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 18:21:19.25 ID:mWX/padL.net]
統一

557 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 18:25:11.29 ID:mWX/padL.net]
>>542の環境の場合、多くの場合ムダにデカい変数を扱うことになる

もちろん、巨大なデータを扱う可能性があるならムダではない
と同時に、>>546も心配する必要がある

558 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 18:26:03.20 ID:te52+8O3.net]
>>548
何と何を統一するの?

int n = static_cast<int>(v.size());
という面倒な表記?それとも
int n = v.size();
とかいう-Wall で死ぬ表記?

auto n = v.size();
って書かずにキャストをどうしてもしたいのはなぜなのか

559 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 18:30:18.05 ID:mWX/padL.net]
クラスを使う人が、内部的にvectorを意識する必要もないし、それようにわざわざ専用の型を使う必要もない

intは他の処理でも多く使われているので、使う側からすれば一番変換が少ない

巨大なデータを扱う処理に関する記述で、size_tで統一してるならそれでも
符号無しで統一してるのも考えにくいけど

560 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 18:35:08.21 ID:mWX/padL.net]
>>550
そういう面倒なことをクラスのユーザーにさせないため



561 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 18:48:22.24 ID:s9vD7wq8.net]
ID:mWX/padLみたいな前近代的なマが早くくたばりますように

562 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 19:08:25.29 ID:te52+8O3.net]
>巨大なデータを扱う処理に関する記述で、size_tで統一してるならそれでも
符号無しで統一してるのも考えにくいけど

STLのsizeはsize_tで統一されてんのにお前が乱してるんだろw

563 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 19:21:24.07 ID:g+9HiqWa.net]
>そういう面倒なことをクラスのユーザーにさせないため

どんな理屈だよ
vectorをラップしたクラスにat()やoperator[]を設けたらint指定でアクセスするのか
ユーザは負数に成り得る変数を注意しながら使えってか
何のための型だよ

564 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 19:27:33.63 ID:wHQvIY8a.net]
>vectorをラップしたクラスにat()やoperator[]を設けたらint指定でアクセスするのか
あたりめーだ
真人間ならラップは手段であって目的じゃねーから
>ユーザは負数に成り得る変数を注意しながら使えってか
バカ乙
計算をミスらないことと演算がオーバーフローしないことだけ注意すんだよ

565 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 19:38:23.61 ID:mWX/padL.net]
>>554
STLを意識させないためにクラスで包んでるんだろうに
意識させるならパッケージング失敗では?

566 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 19:38:41.32 ID:g+9HiqWa.net]
>>556
>あたりめーだ
>真人間ならラップは手段であって目的じゃねーから
ごめん、意味分からん

>計算をミスらないことと演算がオーバーフローしないことだけ注意すんだよ
だから、わざわざvector::size_typeなものをintに変換する必要がないじゃないの
0からmax_size()までの範囲なんだからさ

567 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 19:40:58.71 ID:g+9HiqWa.net]
>>557
だからtypedefやusingを使うって話だよ

568 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 19:41:24.55 ID:mWX/padL.net]
vectorから他の実装に変えたらクラスの仕様も変えるのか?

569 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 19:42:44.43 ID:mWX/padL.net]
>>559
いちいちメンバ関数ごとに型を定義する?
本気で言ってるの?

570 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 19:47:10.01 ID:mWX/padL.net]
クラスやメンバ関数ごとに型を定義したら、
それらの数値を複数用いて演算した結果はどうすんの?
まさかauto?



571 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 19:50:17.50 ID:mWX/padL.net]
クラスが値に関して責任を持つ
当たり前

クラスが値や型に対して責任を持たずにただ値をスルーパスするだけの糞クラスなんかは
ローカルで個人で使う物だけにとどめておきな

572 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 19:51:00.23 ID:mWX/padL.net]
ただメールを転送するだけの役に立たない糞上司と同じ

573 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 20:00:01.80 ID:g+9HiqWa.net]
>>561
?
クラス内に
typedef typename std::vector<T>::size_type size_type
でいいんじゃないの

574 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 20:14:31.61 ID:mWX/padL.net]
>>565
vector以外のデータは無いっていう前提?
または、クラスで扱うサイズをすべてそれで統一?

仮にそうだとして、
じゃあ別のクラスのsize_typeや他の型と演算した結果はどういう型にするつもり?

575 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 20:16:04.43 ID:mWX/padL.net]
使う側に考えさせる
使う側の手間を考えない実装

576 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 20:18:17.34 ID:mWX/padL.net]
vectorをそのまま継承した程度のクラスなら、
当然vectorのインターフェースを保つべきと思うよ
今回はvectorはただのデータのひとつ

577 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 20:19:47.38 ID:mWX/padL.net]
実装上、たまたまvectorを使っただけ
もしかしたら変えるかも

といった、ごく普通のクラス設計だと仮定した場合の話

578 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 20:26:53.78 ID:cjqQUnES.net]
てか普通コンテナのサイズはsize_typeでとるだろ
別のクラスのsize_typeもsize_typeで取れ

勝手にintにキャストしてwarningまみれにすんな死ね

579 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 20:29:55.07 ID:mWX/padL.net]
コンテナはただのクラス内のデータのひとつ
内部の設計事情を外部に出す必要はない

580 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 20:32:07.80 ID:mWX/padL.net]
>>562 >>566 に対して、何も回答がない



581 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 20:32:27.95 ID:g+9HiqWa.net]
>>566
>vector以外のデータは無いっていう前提?
実装を替える必要があるってのは後で作り変えるって意味?それって設計の問題で関係なくね?
静的動的問わずポリモーフィズムするって意味なら最初からそういった設計をするでしょ
今回の話はvectorをラップしているクラスの話でしょ、何で関係ない話を持ち込むの?

>または、クラスで扱うサイズをすべてそれで統一?
size_typeで統一されるならそれでイイんじゃないの?君の言うintに統一と何ら変わらない
それなら内包しているvectorと同じsize_typeを使った方

582 名前:のが余計な記述も減るしバグも減る

>じゃあ別のクラスのsize_typeや他の型と演算した結果はどういう型にするつもり?
それって君の言うint統一でも同じじゃね?

何か話がどんどんズレていない?
[]
[ここ壊れてます]

583 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 20:33:01.08 ID:cjqQUnES.net]
お前はそれでいいんじゃないか?
intで出せばいいじゃん
他のコンテナと整合取れないから使われないだけで、法に触れてるわけでもないし

584 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 20:37:36.90 ID:mWX/padL.net]
>>573
私の書き込みの前提は >>568 >>569

クラスの中にvectorやlistや他のコンテナのデータもあるかもしれない
それぞれが、コンテナ独自のサイズの型を定義してるかもしれない
コンテナが返すサイズを加工して返すかもしれない
比較的大きなクラスの話

ただvectorを包んだだけなら当然vectorのインターフェースを継承すべき

585 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 20:51:59.32 ID:g+9HiqWa.net]
>>575
何その後出しの仮定
取り敢えず、君が幾らでも解釈を広げていくなら話す意味ないわ

それにそのクラス使いたくないわ
絶対何もかも詰め込んだ糞クラスだと思うわ

586 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 21:41:43.35 ID:KodDhcxm.net]
stlが糞ならautoも糞。これだけ。

587 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 22:47:35.80 ID:Eu3G8mvr.net]
auto g() {
 // auto最高や
}

588 名前:片山博文MZ mailto:sage [2017/08/25(金) 22:49:29.48 ID:M7y+0IYN.net]
ご利用は計画的に

589 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 23:42:52.91 ID:Eu3G8mvr.net]
auto 計画通り() -> auto {}

590 名前:はちみつ餃子 mailto:sage [2017/08/26(土) 00:15:55.89 ID:pK4duJs2.net]
int でいーんと違うかな? (違う)



591 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 00:18:45.88 ID:m69mKCvs.net]
この強烈な加齢臭
昭和生まれはお帰りください

592 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 02:07:31.06 ID:YVaPdeR/.net]
平成もあと数年だが在位64年は無茶苦茶長いよな

593 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 02:50:01.47 ID:h4RGPr+8.net]
C++ Core Guidelines より
ES.106: Don't try to avoid negative values by using unsigned
https://github.com/isocpp/CppCoreGuidelines/blob/v0.8/CppCoreGuidelines.md#Res-nonnegative
ES.107: Don't use unsigned for subscripts
https://github.com/isocpp/CppCoreGuidelines/blob/v0.8/CppCoreGuidelines.md#Res-subscripts

594 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 11:13:16.50 ID:mPuoCwlf.net]
↑便所の落書き

595 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 18:00:34.61 ID:WfLpSPQA.net]
size_tって何だっけ?
最近c#脳なので忘れた

596 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 22:37:42.94 ID:XR3UemNV.net]
きっと何かのサイズだろう
rsize_tが出てきたあたりで規格を読むのがめんどくさくなった

597 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 23:05:29.50 ID:4huu8k7X.net]
unsigned int

598 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 23:27:40.18 ID:gTZoGI5S.net]
xmlだったかloggerだったかのヘッダオンリーライブラリでsize_t絡みのワーニングを
消そうとintをsize_tに変更すると別の場所にワーニングが出て、そこも直すとまた別
の場所にの繰り返しで使うのやめたことがあった。

599 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 10:50:45.03 ID:D1yS1ByC.net]
インクルードディレクトリの優先順位変えたらうまくいったり

600 名前:デフォルトの名無しさん [2017/09/02(土) 17:05:03.82 ID:Vkplowcj.net]
opencv.jp/cookbook/opencv_img.html#image-resize
ここのソースコードをコピペしてコンパイルしようとしたのですが
関数 `cv::Mat::release()' 内:
test.cpp:(.text._ZN2cv3Mat7releaseEv[_ZN2cv3Mat7releaseEv]+0x47): `cv::Mat::deallocate()' に対する定義されていない参照です
collect2: error: ld returned 1 exit status
このようなエラー文が出てしまいます
使っているOSはdebian stretchです
/usr



601 名前:/include/opencv2には必要なファイルはありました
コンパイルオプションを色々調べて試したのですがうまく行きませんでした
どのようにコンパイルすればいいのでしょうか
[]
[ここ壊れてます]

602 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 17:46:32.93 ID:Ti9M8tGK.net]
>>591
エラーメッセージの通り、定義されてない関数を呼んだんでしょ
必要なライブラリをリンクしてないんじゃないの?

603 名前:デフォルトの名無しさん [2017/09/02(土) 17:57:11.82 ID:Vkplowcj.net]
解決しました
すみませんでした
ライブラリのリンク方法をきちんと理解してなかったみたいです

604 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 01:01:10.24 ID:HP/Rq3By.net]
もちろん、具体的にどうやって解決したかは書きません

605 名前:デフォルトの名無しさん [2017/09/03(日) 02:48:50.72 ID:hOhj+ods.net]
>>594
-l のあとにopencv_必要なライブラリで解決しました
g++ test.cpp -lopencv_core -lopencv_imgproc -lopencv_highgui

606 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 23:14:47.80 ID:SkKZ7pGs.net]
g++はソースでライブラリを指定できないの?

607 名前:デフォルトの名無しさん [2017/09/04(月) 09:53:17.44 ID:MN7/X5Lc.net]
ソースでリンクとかvisual studioかよ

608 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 17:26:13.07 ID:SopTNKp+.net]
質問です
DLLの中で宣言したvectorを呼び出し側のEXEから使うのにスマートな方法は
どんな方法がありますか?

609 名前:デフォルトの名無しさん [2017/09/05(火) 17:29:23.60 ID:b+ZxWLYj.net]
class CFirstClass {
public: virtual const char* GetString() const = 0;
};
class CNinja : public CFirstClass {
public: virtual ~CNinja();
virtual const char* GetString() const;
};
class CMaster : public CFirstClass {
public: virtual ~CMaster();
virtual const char* GetString() const;
};
class CJohnin : public CNinja, public CMaster {
public: virtual ~CJohnin();
};
CNinja::~CNinja(){ }
CMaster::~CMaster(){ }
CJohnin::~CJohnin(){ }
const char* CNinja::GetString() const { return "忍者"; }
const char* CMaster::GetString() const { return "マスター"; }
int main() {
CJohnin johnin;
cout << dynamic_cast<CNinja&>(johnin).GetString() << endl;
cout << johnin.CMaster::GetString() << endl;
return 0;
}

GetStringの戻り値charから*を消したらエラーになるんですが、
これがポインタじゃなければならない理由は何でしょうか?

610 名前:片山博文MZ mailto:sage [2017/09/05(火) 18:18:30.94 ID:HWiXORhG.net]
>>599
文字と文字列は違う。C文字列は、ヌル文字で終わる文字配列、または文字の並びへのポインタ。



611 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 18:37:05.61 ID:WkIFt9xI.net]
* は、ポインタ

まさか君は、ポインタを知らないのか?w

612 名前:デフォルトの名無しさん [2017/09/05(火) 18:37:39.05 ID:b+ZxWLYj.net]
>>600
>または文字の並びへのポインタ。

これはきちんと理解できてませんでした。大変勉強になりました。ありがとうございます。

613 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 18:43:08.96 ID:2NcRAW/h.net]
>>600
> または文字の並びへのポインタ
お前がポインタを勉強しなおしてこい

614 名前: mailto:sage [2017/09/05(火) 18:44:45.37 ID:fgaIXgJY.net]
>>599
>return "忍者"
だから char * で受けないといけない

615 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 18:50:39.70 ID:6fI5wuGG.net]
そして リテラルの "文字列" って static で保持しなくていいの? までテンプレ

616 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 19:50:20.12 ID:duOUbFWD.net]
>>603
>文字の並びへのポインタ
をchar**と解釈したのか?
ちょっと気になった

文字の並びの先頭アドレス
でどうだろう

617 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 20:01:40.54 ID:D99g/mXF.net]
>>603
片山先生になんて失礼な態度なんだ

618 名前:片山博文MZ mailto:sage [2017/09/05(火) 20:08:04.50 ID:HWiXORhG.net]
>>607
先頭アドレスと言う方が正確だよね。先生と呼ぶのはやめようね。個人崇拝禁止ってルールだから。

619 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 22:30:28.03 ID:NIuXE25q.net]
片山先生www

620 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 22:59:11.90 ID:nPfvfHCk.net]
文字列リテラルがchar*に勝手に変換されてるのかよ。糞言語だな。



621 名前:片山博文MZ mailto:sage [2017/09/05(火) 23:20:23.43 ID:HWiXORhG.net]
戦国武将を崇拝する事は人●しを崇拝する事になるし、ハッカーを崇拝する事はハッキングを崇拝する事になる

622 名前:
個人崇拝にとらわれず、正しい道を歩まねばならない。
[]
[ここ壊れてます]

623 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 23:28:12.79 ID:j8EMa+Cj.net]
>文字列リテラルがchar*に勝手に変換
そんなクソ言語はCだけ

624 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 23:58:54.60 ID:duOUbFWD.net]
>>612
char const*なりconst char*ならおk?

625 名前:612 mailto:sage [2017/09/06(水) 00:03:55.15 ID:Ta85KmCo.net]
>>613
それなら別にええやろ

626 名前:613 mailto:sage [2017/09/06(水) 00:06:53.44 ID:lX1AC/o9.net]
日が変わったのね

領海いや了解です
まぁ歴史的理由とは言えクソではある
ROM化するときもどっちだよ?ってな話にはなるね

627 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 00:18:48.47 ID:6Ek+YiOk.net]
>>613
char[] = "samurai";

はどうなるんだよ。欠陥だらけの言語だな。

628 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 06:42:27.45 ID:lz1Lh31S.net]
それのどの辺が欠陥?

629 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 09:50:26.00 ID:3N8FGDgc.net]
char hoge[] = "samurai";
const char hage[] = "harakiri";
無問題

630 名前:デフォルトの名無しさん mailto:sage [2017/09/07(木) 22:47:37.15 ID:jsOYkjhe.net]
↑どうしようもないバカ



631 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 00:52:21.25 ID:vi4Hog1L.net]
これから勉強しようと調べたら、C#やってたのに、見慣れない文法が俺的に意味不明過ぎて草
取り敢えず書かないとわかんねーなw

632 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 00:55:11.66 ID:z9zmzhsM.net]
https://ideone.com/y8mZJo
初心者です
クラスのメンバ変数に別のクラスを持つ場合、
実体かポインタのどちらで持った方が良いのでしょうか?

Data1(別のクラス)、Class1(実体で持つ)、Class2(ポインタで持つ)がその部分です
Class2の方がサイズが小さかったのでこちらの方が良いのですか?
それとも、使う側がメモリ使用量を削減したければ、
使う側がmain関数の変数dやeのような使い方をしてくれるだろう、
ということを期待して、余計なことはせずにClass1のようにするべきですか?

また、ポインタで持つ場合、Data2とClass3のような極端な場合
(実体で持った場合とポインタで持った場合の違いが4バイトしかない)
でもポインタで持つべきですか?

633 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 01:42:32.16 ID:T0c8eZQl.net]
この場合は実体で持ったほうがいいと思う

ポインタのほうがサイズが小さいって言ってるけど、あくまでも型のサイズであって使ってるメモリはポインタのほうが多くなってるよ

データがデータを持つクラスと同時に生成され同時に消えるものなら実体のほうが楽だし

634 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 01:54:33.88 ID:3vC4jpKo.net]
既に回答があるけど
実体で持つべきかポインタで持つべきかはもっと複雑な要因で決まる

C++は他の言語と違ってクラスのインスタンスを実体で持てる変わった言語で
それはそれで便利だから基本的には実体で持って構わない
理由はトラブルが無いから

ポインタで持つ場合は、他所から与えられたり、動的に差し変わったり、他所と共有したり
ややこしいことがしたい場合はポインタで持つ
一応「ややこしいこと」の中に君が求めている「サイズを減らしたい」も含まれる
例えば巨大な画像データなどを複数のクラスで共有してメモリ使用量を削減したい場合など
そのようなつもりがないのであれば、実体で持って構わない

635 名前:はちみつ餃子 mailto:sage [2017/09/08(金) 04:08:54.89 ID:lqryTDOd.net]
まあ、まずは意味的な妥当性を考えるべきかな。
よほど大量にオブジェクトを作るのでなければ
少々のメモリ使用量の差なんてどうってことない。
そのクラスで定義したい概念に一致してるかが重要だろう。

636 名前:デフォルトの名無しさん [2017/09/08(金) 22:03:27.48 ID:TiXktDhC.net]
>>621
ケースバイケース

実体で持つ利点:
開放漏れやコピーし損ないがない

ポインタで持つ利点:
他の言語と同じ感覚で使える
大きなプロジェクトで再コンパイルの無駄な時間を減らせる

637 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 00:41:38.80 ID:hNauHrr/.net]
みなさんありがとうございます
これからは状況に合わせてどれが適切かどうか考えて実装します
今回(621のコードではない)は、621のコードのようにサイズも小さく、
他のクラスと共有するようなデータを持っているクラスでもなく、
そのメンバを所有しているような概念だったので、
メンバ変数は実体で持つことにしました

638 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 04:29:22.24 ID:gq9mYezw.net]
ポインタで持つと、プログラミングが難しい

ただし、後でインスタンスが作られる場合は、ポインタで持つ。
外側・内側のインスタンスの、寿命が異なる場合

639 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 04:30:46.35 ID:iRgkNuJM.net]
アドレスの演算しないなら参照でいいじゃん。

640 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 08:33:28.36 ID:DK1wXlQ9.net]
生き死にのタイミングが別・ちょっとずれて欲しい
そういう場合はポインタしかやりよがない?かな?



641 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 09:57:17.57 ID:IRAdfO5M.net]
寿命のタイミングが違うときポインタで持たせるって、
ポインタをnullで初期化してsetterつけるってこと?
そんな糞クラス絶対使わないわ…

642 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 11:41:44.39 ID:bRNSjth4.net]
↑バカ
>ポインタをnullで初期化してsetterつけるってこと?

643 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 11:43:16.35 ID:3oRTPGwk.net]
寝起きで意味不明ですた

644 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 11:43:45.11 ID:3oRTPGwk.net]
誤爆

645 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 12:06:21.98 ID:arXtWn5o.net]
ボインター使わなくてもC++が組めるのに安堵した

646 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 12:15:47.61 ID:OV/mK/gQ.net]
C/C++の場合、初心者の方がポインタが好きで、多用する傾向があるよね

647 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 12:36:18.85 ID:arXtWn5o.net]
書店やネットで調べたらポインタの話題が必ず出るし、メモリリークになるから、ポインタ使わないと言語が使えません的な雰囲気があった

648 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 12:57:49.50 ID:X7OoIJoK.net]
そこでメモリポインタですよ

649 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 12:58:17.28 ID:D8z5xRC+.net]
低レベルな処理はポインタ必須
上しか書かないなら生で使わないことも可能

650 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 13:07:28.29 ID:4g0rauvm.net]
>>638
いつも考えるんですけれども低レイヤーでもポインタを使わないことは可能なんでしょうか?ポインタを使わないけれども低レイヤまで対応している言語はなんでしょうか



651 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 13:34:55.85 ID:ayit12uD.net]
いつも思うのだがポインタ恐怖症って何なのか?

652 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 13:55:13.28 ID:xEPuJyU1.net]
低レベルな処理でポインタが便利と言われるのはなぜか
言葉で語るのは大変なのでコードで語ろう
hoge *p = (hoge)nanika_no_memory_block;
p->piyo = 100;
これが出来る言語は、あまりない

653 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 14:50:04.88 ID:4g0rauvm.net]
>>641
うわさの rust ではどうでしょうか?

654 名前:はちみつ餃子 mailto:sage [2017/09/09(土) 15:46:41.32 ID:yY9TM3ez.net]
低水準に寄り過ぎると「アドレスを表す整数」だったりして、
(ポインタ相当の操作は可能なものの、)
言語としてのサポートが全然なかったりするので、
ポインタってのは妥当な落としどころだよなー

655 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 18:56:49.96 ID:SQs0JGyk.net]
>>641
Ada もできたはず

656 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 19:48:57.56 ID:xEPuJyU1.net]
>>641はちょっとコードをミスってしまった
訂正するほどでもないと思うが一応直しておく

hoge *p = (hoge *)nanika_no_memory_block;
p->piyo = 100;

C形式のAPIとの互換性のためにアドレス値が扱える言語は多いが
>>643の言う通り、アドレスを表す整数、ってだけの場合も多い
他の高級言語はオブジェクトに色々な機能を持たせるために
複雑なメモリレイアウトをしているものなので
適当なメモリブロックのアドレスを適当にキャストして
まるで、ネイディブオブジェクトであるかのように扱う、ということが出来

657 名前:ノくい
(C++ですら仮想関数テーブルを持っているとアウト)
なので、素のメモリブロックを扱う場合はC/C++のポインタが便利
C言語はナカナカにツボを押さえた設計になっている
[]
[ここ壊れてます]

658 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 03:56:34.58 ID:gLmtVUjO.net]
int main(void) {
int a, b, c;
char x[100] = { NULL };
while (1) {
〜処理〜
printf("終了します。何かボタンを押してください\n");
scanf("%s", x);
if (x != NULL)
break;
else if("\n")
break;
}
return 0;
}

ループを抜ける処理でこんな感じで書いてるんですが
これだと何らかの文字列+エンターキーを押さないと抜けれないんですよね・・・
printf("終了します。何かボタンを押してください\n");
のあとエンターキーを押すだけでもループ終了して終わる方法はないですか?

659 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 04:09:14.61 ID:w2UiNhNS.net]
getchar();

660 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 13:06:33.76 ID:3KJHgwTr.net]
fgetsで1行読んで、余分な入力ごと読み捨て。



661 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 13:24:31.62 ID:tCo7CGq4.net]
> char x[100] = { NULL };

> if (x != NULL)

Qの炎上学習法か何か?

662 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 13:50:18.25 ID:rGvjr77j.net]
Q は C++ メインでやってるよ
mevius.2ch.net/test/read.cgi/tech/1434079972/

663 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 14:16:47.62 ID:tCo7CGq4.net]
>Q は C++ メインでやってるよ
自分のことQっていうの、キモいぞ

664 名前:デフォルトの名無しさん [2017/09/14(木) 18:48:11.80 ID:aF7eMqZx.net]
c言語で書かれた稼働しているプログラムの中のある変数のアドレスを取得したいです
プログラムを一切変更しないでこれを実現させることはできるのでしょうか?

665 名前:片山博文MZ mailto:sage [2017/09/14(木) 18:49:32.29 ID:qDyTdV0Q.net]
>>652
Windowsなら「プロセスメモリー」で検索。

666 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 18:51:23.24 ID:QiPMm0Hr.net]
最適化でレジスタに割りあたっちゃった変数はアドレスとれない

667 名前:デフォルトの名無しさん [2017/09/14(木) 18:59:38.50 ID:aF7eMqZx.net]
>>653
すみません
環境はlinux2.6です

668 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 19:24:54.84 ID:N62cmPAo.net]
アドレスを取る理由は?
ほんとはなにしたいの?

669 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 19:27:33.65 ID:T7H5P+6p.net]
そもそも自動変数なら>>654の話もあるし複数回呼ばれる関数なら呼ばれる度に異なるかもしれない
更に再帰とかマルチスレッドなら同時に複数存在してるかもしれない

670 名前:デフォルトの名無しさん [2017/09/14(木) 20:49:36.03 ID:aF7eMqZx.net]
ある関数ポインタに任意の関数を代入して実行させたいのですが
プログラム内の変数同士の相対的なアドレスを調べるというのも難しいのでしょうか?



671 名前:片山博文MZ mailto:sage [2017/09/14(木) 20:52:51.63 ID:qDyTdV0Q.net]
>>658
ソースもデバッグ情報もなければ、逆コンパイラを使ってアドレスを調べるくらいしか思い付かない。

672 名前:デフォルトの名無しさん [2017/09/14(木) 21:10:46.05 ID:aF7eMqZx.net]
自己解決しました
お騒がせしてすみません

673 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 22:09:02.75 ID:eKK5ja5H.net]
関数内にあるクラス定義の型だけ違う関数ってどう作れば良いんですか?

void Command::add()
{
Command cm;->これをCommand2 cm;にしたい
以降処理を記載

}
初歩的な質問ですいません。
同じ関数を何個も作る必要があり手間です><
ロベールとかを見ても仮想関数とかアップキャストとか継承とかオーバーライドとかひと通り見ましたがわかりません。

674 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 22:17:41.81 ID:vjSz//mI.net]
関数テンプレート
マクロ
defineして#include

675 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 23:51:59.63 ID:eKK5ja5H.net]
問題解決しました。
ありがとうございます。

676 名前:デフォルトの名無しさん [2017/09/15(金) 02:25:25.95 ID:z+aMp6by.net]
>変数同士の相対的なアドレス
引き算してはならない。ただし、同一の配列の要素どうしなら、引き算は、意味ある

677 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 02:39:59.15 ID:NePdqYQx.net]
何かをハッキングしようとしてますね。

678 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 05:27:31.76 ID:qOhstmGW.net]
staticなメンバしかないクラスがあるんですけど
これもうnamespaceでいいですよね?

679 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 09:53:35.90 ID:Rd6409Qg.net]
いいよ

680 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 12:08:47.50 ID:LbVH6Dx6.net]
ADLとかとの兼ね合い



681 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 17:45:57.17 ID:s+L1DjZB.net]
>>667
>>668
なるほど参考になりました。

682 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 23:02:46.17 ID:JcByp9p4.net]
>>664
>>変数同士の相対的なアドレス
>引き算してはならない
んなこたーない

683 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 23:11:51.68 ID:F2zb0zkw.net]
C/C++的にはダメ

684 名前:はちみつ餃子 mailto:sage [2017/09/17(日) 01:58:27.90 ID:jnHDU3kL.net]
まあ動いちゃうときも多いと思うけど、やっちゃ駄目だよー

685 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 02:12:21.90 ID:2kxiy1Rb.net]
ダメな例出して

686 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 05:58:54.94 ID:lvKagVu8.net]
>>673
int a;
int b;
auto c = &b - &a;

687 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 06:01:41.65 ID:2kxiy1Rb.net]
auto使いはやっぱり馬鹿だった。

688 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 06:19:33.65 ID:lvKagVu8.net]
バカとしか書けないのかよ w

689 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 12:32:24.59 ID:/dX18QMc.net]
>>671
だめなこんきょ出して

690 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 12:49:17.96 ID:lvKagVu8.net]
>>677
規格嫁



691 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 12:51:42.31 ID:/dX18QMc.net]
出せねーんだろププ
auto使いはやっぱり馬鹿

692 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 13:02:11.76 ID:ZH0tEj4R.net]
自分だけはバカじゃないという前提

693 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 13:31:56.70 ID:/dX18QMc.net]
お、自分のばかを自覚したんだね
はいよくできました

694 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 14:23:53.26 ID:dpOLvFr5.net]
性格超悪そう

695 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 18:01:33.39 ID:dpEZdIyz.net]
ここで問題です。
 struct A { int x1, x2; } a;
 auto d = &a.x1 - &a.x2;
これは規格違反でしょうか

696 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 19:10:18.83 ID:iyMogwhx.net]
#include <stddef.h>
offsetof(type, member-designator);

697 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 20:31:22.48 ID:e7NF75Gx.net]
変数内のレイアウトと 異なる変数のギャップと同じに取り扱っていいものなのかな

698 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 20:47:23.92 ID:7AbJQaK5.net]
現行規格の5.7/p6では未定義動作となっていて
他に許可する記述は見つけられなかった

699 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 22:50:49.91 ID:lvKagVu8.net]
規格も読めないアホにつける薬はないってことかな w

700 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 04:40:38.13 ID:v1M3pcaa.net]
こういうアホな話になるのはauto使いはscript kiddie脳だから。
処理系に対する理解が皆無。



701 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 05:41:38.61 ID:eqWC6Q8G.net]
具体的な指摘もできないアホ乙

702 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 22:38:10.49 ID:NO4WPNQ6.net]
>>675
ちなみに聞くけど
cが何型なのか知ってるよな?

703 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 01:28:21.18 ID:31UnpjJ8.net]
な? auto使いは馬鹿だろ。

704 名前:デフォルトの名無しさん mailto:sage [2017/09/26(火) 01:34:34.23 ID:piJXswiP.net]
>>671 >>686
で終了なのに
なにか文句を付けなきゃ気がすまない人がいるみたい

705 名前:デフォルトの名無しさん mailto:sage [2017/09/26(火) 07:25:15.69 ID:mhsU1MGa.net]
> ダメな例出して
って啖呵きったらさくっと出されて発狂中

706 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 06:34:18.36 ID:OnyIuiaa.net]
頭が悪すぎて相手にされないauto使いかわいそう。

707 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 09:28:21.53 ID:asC30w7v.net]
>>692
アドレスの話をしていたのにポインターの例にすり替えられた
と言われる恐れがあるので5/p4も加えておかないと
但し符号有り整数で減算した場合には未定義動作にならない

708 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 09:29:48.92 ID:asC30w7v.net]
○ 符号無し
× 符号有り

709 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 11:48:00.61 ID:OnyIuiaa.net]
どうやらauto使いというのはCにおける未定義の意味を勘違いしてるようだ。
まだほとんどコードを書いたことがない初心者なのだろう。

710 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 11:53:50.86 ID:OnyIuiaa.net]
> 他に許可する記述は見つけられなかった

面白い発想だな。Cを高級言語だと思ってんだろうな。これは笑える。



711 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 12:00:13.05 ID:hAn/VwKR.net]
>>671 >>686 で終了
納得できない人がいるみたいだけど

実質問題無いのはその通り
問題がある事例を私は知らない

ただ言語の規格上は未定義

712 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 12:36:06.37 ID:OnyIuiaa.net]
メモリがリニアでないバンク方式やセグメント方式の処理系を知らないとは無知だな。
far、near知らないとか最近勉強し始めたのだろう。

Cは低級言語。処理系依存を書く言語。
コンパイラが勝手に処理系に依存した定義をしろってこと。

713 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 14:25:01.86 ID:hAn/VwKR.net]
nearだろうがfarもセグメント方式だろうが
a-b+b=a+b-b=aになるけど
ほとんどの環境で

なんてことは知らないか

714 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 14:29:11.52 ID:hAn/VwKR.net]
> 処理系依存を書く言語。
わざわざ依存した書き方をしなくていい
依存しないでデメリットなくかけるなら依存しない方法をとるのが普通

ていうか、
言語的に保証されてないアドレスの減算の処理などコンパイラの説明書に普通書いてないが、
誰が責任を取るつもり?

715 名前:はちみつ餃子 mailto:sage [2017/09/27(水) 16:20:12.02 ID:yRzprl02.net]
強力な最適化コンパイラはプログラマが未定義を踏んでいないことをあてにした最適化をすることがある。
「ほとんどの環境で大丈夫」なんていうのは現代では思い込みだよ。 全然大丈夫じゃない。

716 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 17:12:16.04 ID:7dA/9JOQ.net]
未定義の動作だからその文丸ごと消しちゃっても構わないよね
って最適化がかかってバグった話は、どこかで読んだな

717 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 18:35:30.13 ID:Ep3hxvTm.net]
>>703
offsetofとかいうマクロの中身を見てみようか

718 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 18:37:06.64 ID:Ep3hxvTm.net]
いずれにしろ、
言語上未定義なコードをわざわざ書くのはアホ
>>700とか

719 名前:はちみつ餃子 mailto:sage [2017/09/27(水) 20:20:25.41 ID:yRzprl02.net]
>>705
何を言いたいんだ?
offsetof の中身が何を意味してるって?

720 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 20:32:56.04 ID:r7aVrRwL.net]
バカにマジレスみっともない



721 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 21:11:03.19 ID:hAn/VwKR.net]
>>707
中身見た?

722 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 21:14:39.99 ID:7dA/9JOQ.net]
offsetofはコンパイラメーカーが用意するものだから
意味合いが違ってくるのでは?

723 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 21:15:50.58 ID:hAn/VwKR.net]
なにも考えずに互換性を減らすコードを書くのはアホ

使う環境が限られているのに、互換性を理由に明確なメリットがあるコードを避けるのもアホ

724 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 21:17:57.15 ID:m77m4D83.net]
また未定義、未規定、処理系定義の違いもわかってない>>700が暴れてるのか
autoに粘着してるところを見ると新しいものについていけなくなった老害なんだろうな w

725 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 21:18:58.16 ID:7dA/9JOQ.net]
それとoffsetofに何の関係が?
offsetofはコンパイラメーカーが用意したんだろうから
少なくともそのコンパイラでは動くようになってる
だからといってどうこうという話は一切ない

726 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 21:22:31.36 ID:hAn/VwKR.net]
offsetofは>>703への反論

727 名前:デフォルトの名無しさん [2017/09/27(水) 21:26:08.14 ID:7dA/9JOQ.net]
>>714
>>703とoffsetofに何の関係が?
offsetofはコンパイラメーカーが用意したんだから
少なくともそのコンパイラで動くようになってる
これをもってして、どうこうという話はない

728 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 21:38:58.24 ID:hAn/VwKR.net]
offsetofがどうやって出来たかも知らんとは
じゃあ逆にうまく動かない具体例を知ってる?
たいてい内部は

729 名前:スだの整数演算だぞ []
[ここ壊れてます]

730 名前:はちみつ餃子 mailto:sage [2017/09/27(水) 21:51:01.70 ID:yRzprl02.net]
>>716
いいえ。 たとえば GCC は __builtin_offsetof を持っていて、 offsetof マクロはこれに展開されます。



731 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 22:05:03.95 ID:7dA/9JOQ.net]
だからoffsetofはコンパイラメーカーが用意したもので
自分たちが自分たちの製品用に用意したんだから動くのは当たり前だろ?
offsetofは動くが(そりゃコンパイラメーカーが用意したんだから当たり前)
だから何なんだ?

nullptrが好きみたいだから
https://cpplover.blogspot.jp/2015/12/blog-post_21.html
↑を読んでみると良い
それもじっくり読んだほうが良い
こういった不慮の事故があるから未定義動作は避けるべきというのは当たり前では?
↑のプログラムが未定義動作で最適化でコンパイラで削除されるのに
offsetofは最適化されずに残るってのは非常に興味深い微妙な部分なんだよ
やってることはヌルポインターの参照で同じことなんだがな
こんなのさじ加減なんで、何が起こるか分からない

732 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 22:44:20.00 ID:Ep3hxvTm.net]
>>717
具体例は?

733 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 23:48:58.08 ID:/q7ePKPV.net]
具体例が無いと>>702-704,718の懸念は認められない。
などと思っているならこいつはとんだアホウだ

734 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 06:23:37.76 ID:kmv+HSxh.net]
具体例が出ないことは>>701の証拠となる

735 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 06:28:56.63 ID:kmv+HSxh.net]
つまり>>700の否定だ

736 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 06:46:37.21 ID:0QfR7+Yk.net]
そもそも>>717は具体的な例だし>>719の考える具体例ってなに?

737 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 07:37:45.60 ID:kmv+HSxh.net]
元は>>652だな
それに続く>>658の1部だけを抜き出して>>664の書き込み
目的がこの時点でそれて、これ以降アドレスの減算の話になる

ダメな例ってのはアドレスの減算を行って実際にうまく動かない例
オフセット分を戻すことで有効アドレスで使うことになるので、>>701で実際に元に戻らない環境を多く示せばいい

言語規格上保証されてないことは>>670>>677以外は知っている

738 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 10:53:55.67 ID:Ktm1uHRp.net]
それとoffsetofが何の関係があるのか、と聞いているわけだが

739 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 11:32:16.87 ID:Q/eIhlb2.net]
offsetofは未定義とされるコードが処理系のライブラリ内で使用されていた例。
「具体例」は単に実際に問題となる例を出せと言っているだけ。
両者は無関係だが>>705>>715を理解する知能が無かったのが残念。

740 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 11:35:32.70 ID:mxHsq9Is.net]
offsetofと同様の自作マクロがたくさん使われてる
ということを知らないとは

ていうか、順番が逆だ

色々な所で使われてるから標準化された



741 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 11:37:25.53 ID:mxHsq9Is.net]
>>725
offsetofの中身を見れば関連がわかる

742 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 11:46:41.60 ID:cnz4JX/W.net]
きっと>728の使ってるコンパイラでのoffsetofの定義には我々の想像も付かない何かが書いてあるんだよ。
他の人の使ってるコンパイラでも同じことが書いてあるはずだと思ってる理由はわかんないんだけど。
>728はその「offsetofの中身」を明示して話すといいんじゃないかな。知らんけど。

743 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 12:01:16.61 ID:Q/eIhlb2.net]
>>727
>色々な所で使われてるから標準化された
お前のパソコンに保存されてる自作マクロには興味ないけど、
offsetofは機能性を規格化しただけで実装は規格化されてないぞ

744 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 12:44:17.37 ID:mxHsq9Is.net]
0番地を構造体のアドレスにキャストして、メンバのアドレスに変換して、それをそのまま整数にキャストする

ってマクロ、昔は一般的に使われてたんだけど
知らないか

>>701の根拠のひとつ

いずれにしろ、
反例がひとつも出て来ないようじゃそんな根拠もいらないね

745 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 12:45:47.97 ID:mxHsq9Is.net]
>>700はトンチンカンで、
>>703も説得力ゼロ

ってことで

746 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 14:59:31.87 ID:RoqMj8TI.net]
ぬるぽ使った自作offsetofがすべての処理系で正常動作するとは限らない
って話じゃないのけ?

747 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 16:36:34.69 ID:P9MlpSyZ.net]
ぬるぬるぽっぽっぽ

748 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 18:14:43.67 ID:Ktm1uHRp.net]
>>726
offsetofはコンパイラベンダーが用意したのだから動くのは当たり前では
俺らからしたら、未定義動作、処理系依存、実装依存、であっても
コンパイラベンダーからしたら、仕様なのでは?
特にコンパイラベンダーは究極的にはコンパイラの仕様を変更することも
出来る立場なので

749 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 18:44:25.04 ID:kmv+HSxh.net]
>>733
ほとんどの環境でうまくいく
だから良く使われている

そうじゃないっていうなら
うまくいかない例を出して

っていう話

750 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 18:45:14.20 ID:kmv+HSxh.net]
>>735
壊れたレコードプレーヤーか?



751 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 18:47:54.52 ID:Ktm1uHRp.net]
壊れたレコードでも何でもいいけど
説明求む

752 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 18:52:01.14 ID:kmv+HSxh.net]
日本語が通じない人に説明は不可能
おれは>>726じゃないし

753 名前:はちみつ餃子 mailto:sage [2017/09/28(木) 18:52:29.72 ID:pSALrJPI.net]
なんでそんなに仕様に違反したいんだ?
仕様に違反すべきではないってことにそんなに根拠が必要か?

754 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 18:52:32.31 ID:kmv+HSxh.net]
とりあえず落ち着いてスレを読み返しな

755 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 18:54:33.80 ID:kmv+HSxh.net]
>>740
違反したいなんて思ってるのは>>700くらい

メリットがあれば違反することもある
簡単な代替手段があれば違反しない

756 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 18:57:08.19 ID:kmv+HSxh.net]
そもそも、どの環境でも正しく動く保証がある意味のあるコードなんてないから
どのコードもある程度環境を前提としてる

757 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 19:09:22.17 ID:Ktm1uHRp.net]
そんな唐突な、そもそも論は、要らないだろ
程度問題だろ
C/C++の仕様的にはNGでも、コンパイラの仕様書にOKって書いてあればOKなんじゃね?
例えば int は 32bit 整数ですって書いてあれば、そういう製品仕様として納得するし
ただ、offsetofをもってしてOKと言えるのかどうか

758 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 19:14:42.61 ID:kmv+HSxh.net]
だからダメな例を出せって
>>699に対して反論したいなら

759 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 19:16:02.07 ID:kmv+HSxh.net]
コンパイラの仕様書に書いてないよ普通
ポインタのビット数が書いてあるだけで

760 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 19:19:48.44 ID:Ktm1uHRp.net]
>だからダメな例を出せって
そしたら逆にコンパイラの仕様書でOKって書いてある例を出せ
って話になるでしょ
無ければグレーゾーンになるわけだ
まさに未定義



761 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 19:30:52.46 ID:kmv+HSxh.net]
日本語が通じない人が多いなあ

とおもったら同じ人か

762 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 19:38:01.58 ID:DuCN1h4Q.net]
>>745
だから>>717で反例でてるだろ
C++で&演算子を定義されたら簡単に破綻する
https://stackoverflow.com/questions/400116/what-is-the-purpose-and-return-type-of-the-builtin-offsetof-operator/406941#406941

763 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 19:41:37.10 ID:kmv+HSxh.net]
またトンチンカンな例を
話の流れくらい理解してから書け

764 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 19:50:55.33 ID:Ktm1uHRp.net]
そりゃ誰もお前の中だけの勝手な話の流れなど知ったことではないだろ

765 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 20:20:35.35 ID:N5fP/7zq.net]
>>750
トンチンカンとしか言えないなら黙ってろよw

766 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 21:45:26.80 ID:kaEtfd73.net]


767 名前:純な話、ベンダー提供のマクロで言語仕様上保証されないような使い方がされていたとして、
そのマクロ自体の動作はベンダーが保証しても同じコードがそのマクロ外で保証されるわけじゃないよね。
実際には動くかもしらんけど。
[]
[ここ壊れてます]

768 名前:デフォルトの名無しさん mailto:sage [2017/09/28(木) 22:24:40.88 ID:1QGPZBPb.net]
最近また片山老人が暴れてんの?

769 名前:片山博文MZ mailto:sage [2017/09/28(木) 23:35:41.44 ID:Msp1dHAD.net]
昔は学生運動が一大イベントだった。鉄砲の音が聞こえたら、学生たちが一斉に走り回る。それは軍隊のように団結力のある集団だった。

770 名前:片山博文MZ mailto:sage [2017/09/29(金) 00:24:14.89 ID:BT8GgIQb.net]
って昔話でもさせるのか?



771 名前:はちみつ餃子 mailto:sage [2017/09/29(金) 00:55:18.83 ID:qoI7k83w.net]
>>753
「こんな最適化するのか!」って思うようなピンポイントな最適化は有るから、
逆にピンポイントな例外だってありそうよね。

772 名前:デフォルトの名無しさん mailto:sage [2017/09/29(金) 06:49:45.56 ID:hLpF+zSQ.net]
>>753
マクロとそれを展開したソースで動きが異なるってこと?
さすがにそれは考えにくいと思うけど

773 名前:デフォルトの名無しさん mailto:sage [2017/09/29(金) 10:16:34.25 ID:xgACZlxS.net]
>>736
すべての環境で動作する保証が無い=環境依存

774 名前:デフォルトの名無しさん mailto:sage [2017/09/29(金) 11:32:53.08 ID:7lA4sLJU.net]
お前らが何を話しているのかわからん
相手に何を伝えたいのか
お前らは何を訴えたいのか
何も見えてこない
俺がないならもうやめろ

775 名前:デフォルトの名無しさん mailto:sage [2017/09/29(金) 12:45:07.45 ID:tIQyCYwJ.net]
俺の主張は>699

776 名前:デフォルトの名無しさん mailto:sage [2017/09/29(金) 12:46:04.43 ID:tIQyCYwJ.net]
主張内容に興味無いけど

777 名前:デフォルトの名無しさん mailto:sage [2017/09/29(金) 21:46:50.94 ID:1R/L2hD7.net]
>>761
またおバカループかよ w

778 名前:デフォルトの名無しさん mailto:sage [2017/09/29(金) 22:31:02.23 ID:+VZzhu5A.net]
>>761>>671の『C/C++的』の意味が共有できているといつから思っていた

779 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 01:55:47.47 ID:+yH9ha/d.net]
ちょっと不可解な部分があったから質問させてくれ

string型のデータをサーバに送信したくてOSSの関数に渡しているんだが、
データが一部壊れてしまう
問題のコードは、

string str = "{id:abc, ... , }"
void* payload = (void*) str.c_str();
send(payload, str.length());

これをやると、先頭の5バイトがうまく入らない
いくら考えても全然理由がわからず、意味のないことだと思いつつも以下のコードを書いてみたら何故かうまくいった

string str = "{id:abc, ... , }"
char* tmp = (char*)malloc(str.length() * sizeof(char) + 1);
strcpy(tmp, str.c_str());
payload = (void*)tmp;
send(payload, str.length());

下のコードを使えばうまく動いてるから問題ないんだけど、上のコードがダメな理由がわからずすごく気持ち悪い。
何か上の例だとまずい部分があるのかな?

送信関数は以下
send(void* payload, size_t length);

環境はVC++ 2012
Windows 7 64bit

ちなみに、同じコードを別環境(gcc 4.4.7 Cent OS 32bit)で動かすと、両方うまくいった

780 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 02:12:16.55 ID:/jgYbdHq.net]
>>765
c_str()ってどんな関数?



781 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 02:45:21.56 ID:mQbjCOfm.net]
非同期やbufferedの関数を正しく使えてないんだろ
たしか以前にboost.asioかなんかの同じような質問をきいたことがあったような

782 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 06:20:03.02 ID:BNa/frNM.net]
ASIOといえば
Audio Stream input output

783 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 07:12:02.93 ID:7qICbiUO.net]
そのインターフェースで非同期なのに 内部で実体のコピーをとってない場合とかだと
実際に送信完了するまで 渡した引数の実体が生きて

784 名前:髟K要があるね []
[ここ壊れてます]

785 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 09:19:09.47 ID:fdjE74yE.net]
void *型を使う意図について

786 名前:765 mailto:sage [2017/09/30(土) 10:38:13.12 ID:+yH9ha/d.net]
みんな回答ありがとう。

>>766
string型のメソッドで、文字列をconst char*にするやつ

>>767,769
非同期送信にはなってるんだけど、sendの後に送信結果を受け取る関数を呼んでる。
そのあとでpayloadは解放されるようになってるから、送信完了までは実体は生きてると思う

>>770
OSSの関数がそう定義されてるから変換したんだ


{id:abc. ... , }
のうち先頭5文字の{id:aがおかしくなってるんだよね・・
Wiresharkでみると、バイトコード88ってなってたけどなんでそうなったのかが全然わかんない

787 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 10:53:58.34 ID:V/gsXwon.net]
>sendの後に送信結果を受け取る関数を呼んでる。
>そのあとでpayloadは解放されるようになってる

ならそのsendのバグか他でのメモリ破壊だろ
そのコード自体には問題はない

788 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 11:13:57.36 ID:8c7P82E8.net]
>>771
まず
> send(payload, str.length());
を実行する時にpayloadの指す先が正しいか切り分けしなよ

789 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 11:28:17.88 ID:tI4TVI1o.net]
問題点の切り分けは大事だな
元のソースを問題が再現する最小限のところまで切り詰めてみるとか
その過程で問題が起きなくなったら関係ないと思って切り詰めたところが原因だろうし

790 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 13:47:25.00 ID:jk0Saihc.net]
どうおかしくなってるのか分からない
"{id:abc, ・・・"が"XXXXXbc, ・・・"となる(ascii 88 = 'X')ってことなのか



791 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 23:34:44.40 ID:WG2DMprw.net]
すいません
メモ帳ソフトのTextTreeみたいに
タブを並べられて、そのタブごとに個別のツリーを格納するには
どうしたらいいんでしょうか?
ttp://www.vector.co.jp/magazine/softnews/080129/images/n08012931b.gif

なんでここで聞くかというと
TextTreeの開発者のコメントに
「wxWidgets」をいじっていたので、これを使って作ってみようと思った、というのがあって
そのwxWidgetsのHPに
wxWidgets is a C++ library〜
と表記されていたからです。

普通のメモやテキストエディタは
ツリー>タブ>メモという構成ですが
Texttreeのような
タブ>ツリー>メモという構成が希望ということです。

またTextTreeは、リッチテキストが扱えるものの
文字が65535バイト以上入力できず、それ以上は入力しても消えてしまうバグを抱えていて
どうしてそのような不具合になるのかも知りたいのですが…

792 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 23:53:50.61 ID:xUuIbR05.net]
>>771
> そのあとでpayloadは解放されるようになってるから、送信完了までは実体は生きてると思う

str.c_str() 渡した場合は str の寿命や変更で解放されることになる。
他のどこかで解放されるようになってるとしたら、そんなところに渡してはいけないと思う。

どこかで free されることになってるなら、 malloc したポインタを渡さないと
正しく動かないということで >>765 の結果で当然に思う。

「OSSの関数」というなら具体的な関数を明示すればもっと状況がわかるのに。

793 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 00:34:39.70 ID:QEgiuasJ.net]
>>776
wxWidgets固有のことは知らないけど
タブごとにツリーを用意して各タブに対応する子ウィンドウに配置するだけでしょ
もしくはツリーを一つだけ用意してタブ切り替えのたびに中身を書き換えればいいんじゃない

794 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 02:46:34.57 ID:CsBQRyQX.net]
>str.c_str() 渡した場合は str の寿命や変更で解放されることになる。

いやだから、payload==str は送信結果を受けてから
開放してるって本人は言ってるのでは?

795 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 08:09:58.98 ID:a+6SxdIf.net]
明示的に解放しないstringの方はそこを意識してなかった可能性もあるんじゃね?
非同期ってことは>>765でsendした関数からは一旦抜けてるでしょ?

796 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 09:03:15.51 ID:XhBoqkon.net]
>>776
1つの方法としては
タブが切り替えられる毎にイベント発生するから
タブAが押されたらダイアログAを表示してそれまでに表示されてたダイアログは非表示にする
ダイアログ毎にツリーとリッチエディットを用意したらいい

あとWin32APIスレの方がいいよ

797 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 09:35:07.78 ID:JA+cHEn5.net]
>string str = "{id:abc, ... , }"
>void* payload = (void*) str.c_str();

>>780はpayloadを明示的に解放すんのかよ

798 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 09:52:09.27 ID:a+6SxdIf.net]
してない可能性を挙げたのに「すんのかよ」って俺に言われてもなw

799 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 10:26:50.12 ID:7TdPvZgo.net]
>>780
>>771
>> 非同期送信にはなってるんだけど、sendの後に送信結果を受け取る関数を呼んでる。
>> そのあとでpayloadは解放されるようになってるから、送信完了までは実体は生きてると思う
ってあるからその可能性は低いと思う

800 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 10:32:30.15 ID:qINK5MH4.net]
vc2012だとC++11への準拠はどうなんだろ
c++11以降はc_strも実体を指す保証があるようだけど、
以前は関数内のstatic変数みたいな実装してた気がする・・



801 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 11:40:53.20 ID:Q5nZisR/.net]
>>784
初心者歓迎スレだし可能性は少なくない
GC言語で育ったならポインタをスマポのような何かと勘違いしてるかもしれない
さらにその文章から思い込みだけで検証していないのは明らかだし

802 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 11:49:29.48 ID:o4fxg+Ov.net]
可能性を言い出したらなんでもあり
不毛なレスは止めようよ

803 名前:デフォルトの名無しさん mailto:sage [2017/10/03(火) 17:35:19.79 ID:ZgS0QfuG.net]
>>785
>関数内のstatic変数みたいな実装してた気が
んなわきゃない

804 名前:デフォルトの名無しさん mailto:sage [2017/10/03(火) 18:51:26.51 ID:kBDRpd1G.net]
>>788
どういう実装だった?

805 名前:デフォルトの名無しさん mailto:sage [2017/10/03(火) 19:50:33.30 ID:VzAuCmWc.net]
shared_ptrを戻すメンバ関数があるんですが
引数の条件に一致する物が無い場合、空というのが分かるshared_ptrを返したいんです。
どう書けばいいですか?

806 名前:片山博文MZ mailto:sage [2017/10/03(火) 19:52:37.35 ID:TFSQFt7Y.net]
ヌルポインター返してgetメソッドで確認。

807 名前:デフォルトの名無しさん mailto:sage [2017/10/03(火) 19:59:11.57 ID:VzAuCmWc.net]
ありがとうございました!

808 名前:はちみつ餃子 mailto:sage [2017/10/03(火) 22:45:38.84 ID:7OuP8h6T.net]
std::optional を使った方がよくない?

809 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 15:03:07.29 ID:B6Js2yoS.net]
>>788
いちいち古いVC入れ直すのめんどいから覚えてるんなら書いてほしいんだが

あと>>765が解決したのかどうかも知りたい

810 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 21:20:20.65 ID:eGyO5ooe.net]
初心者的質問で申し訳ないですが、libファイルの検索仕方を教えて下さい。
includeファイルはgrepかければ見つかりますが、リンクするとき、静的ライブラリ、libファイルの検索はどうすればいいか分かりません。
とりあえず、怪しい奴を片っ端からリンクしますが、それもどうかと思います。
マニュアルに書いてある訳でもないので皆さまどうされてるのか気になります。



811 名前:片山博文MZ mailto:sage [2017/10/04(水) 21:27:51.47 ID:HMkkIXOi.net]
>>795
bgrep使え。リンク方法が書かれているマニュアルを買え。

812 名前:775 mailto:sage [2017/10/05(木) 07:26:13.70 ID:/WMFst6h.net]
ありがとうございます。
ネットで調べるのがメインなので、つい、本はケチってしまいました
bgrepは入れられないので-aでなんとかしてみます

813 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 21:03:39.22 ID:MEVeuXK3.net]
>>794
string s1, s2;のc_str()が共用なわけあるかドアホ
VC++6の時からインスタンス

814 名前:のメモリ返すわ []
[ここ壊れてます]

815 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 21:31:37.51 ID:Px1fI0/v.net]
いちいちけなさんと会話も出来んのかゴミクズが
へー、じゃあ寿命は保証されてるわけか、そんなことはなかったはずだが
>>765の問題は寿命の問題だと思うが、ケチつけるなら正確に書いてくれる?
混乱を招くだけのイチャモンとか何の役にも立たんわ

816 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 23:47:16.81 ID:7Cw6eX8p.net]
c_strは実態をさすけど変更するなって書いてなかったっけ?

817 名前:デフォルトの名無しさん mailto:sage [2017/10/06(金) 00:14:51.51 ID:M5Ph95zK.net]
03以前は変更された後にc_str()を使うのも、そもそも内部で連続してる保証も無かったはず
今調べたけどdata(), c_str()の呼び出しでも変更される可能性があるらしい(11は大丈夫

818 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 00:46:39.10 ID:AU7JWIym.net]
ポインターを覚えたけど、使いどころが思い付かない
誰か教えて……

819 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 02:11:18.12 ID:El+Xr4aF.net]
>>802
一個のサイズが10KBほどある構造体のソートにでも使えよ

820 名前:デフォルトの名無しさん [2017/10/07(土) 15:35:22.92 ID:cqowZFEs.net]
それポインタじゃなくて整数でよくない



821 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 16:29:02.76 ID:jvf7kHO4.net]
ポインタと整数じゃ概念が違う
整数をアドレスを指し示す用途で使いますよってのがポインタだし

822 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 17:29:30.12 ID:jg4p8iD7.net]
変数とポインターでメモリをずっと使うか取り除くかの違い?

823 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 17:49:35.28 ID:vj+NLXIf.net]
>>802
mallocの戻り値とかsprintfの引数とかで使えばええねん

824 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 19:03:08.66 ID:AU7JWIym.net]
みなさんありがとうございます
規模の大きいデータで使うみたいですね
後は他の関数を飛び越えてアクセスしたい時とか

825 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 11:15:35.68 ID:2tobGFFt.net]
>>805
配列のソートだったらアドレスよりインデックスの方が概念的に適切だろ?

826 名前:デフォルトの名無しさん mailto:sage [2017/10/10(火) 15:59:13.06 ID:3nxFazlM.net]
p==p_rgh + rho*gh;
とあるのですが意味がわかりません。
p=p_rgh+rho*gh;であるべきと思うのですが、==と=が使い分けされているので
タイプミスではなさそうです。どなたかよろしくお願いします。

827 名前:片山博文MZ mailto:sage [2017/10/10(火) 16:10:57.64 ID:RmsAElXw.net]
>>810
「p==p_rgh」は、pとp_rghが等しいとき1 (true)になり、等しくないときゼロ (false)になる。

828 名前:片山博文MZ mailto:sage [2017/10/10(火) 16:14:41.98 ID:RmsAElXw.net]
>>810
演算子「==」より演算子「+」の方が結合が強いんだった。
「p==p_rgh + rho*gh」は、pとp_rgh + rho*ghが等しいときtrueになる。

829 名前:デフォルトの名無しさん mailto:sage [2017/10/10(火) 19:02:14.11 ID:z98emhq8.net]
>>810
問題のその式が、if文のカッコの中ではなく、普通に式文としてセミコロンで終わる1行として書かれているなら、ただの誤記の可能性が高いと思うよ。

830 名前:デフォルトの名無しさん mailto:sage [2017/10/10(火) 19:04:42.99 ID:3nxFazlM.net]
>>812
ご回答ありがとうございます。が、やはりわかりません。
たとえば、
if (p==p_rgh + rho*gh)
{

}
や、q=p==p_rgh + rho*gh;とかならわかるのですが、


p==p_rgh + rho*gh;

と独立しているのでどんな処理をしているのか・・・



831 名前:デフォルトの名無しさん mailto:sage [2017/10/10(火) 19:11:07.30 ID:+PpsJNG1.net]
>>814
その本をさらせ、話はそれからだ

832 名前:片山博文MZ mailto:sage [2017/10/10(火) 19:12:17.54 ID:RmsAElXw.net]
>>814
そのように独立していれば何もしない。何もしない文をわざわざ複雑に書くことは意味がないので、代入を間違って書かれたと考えられる。

833 名前:はちみつ餃子 mailto:sage [2017/10/10(火) 20:29:28.41 ID:ISsQMV5w.net]
operator== をオーバーロードしてたらなんかすることもあるのでは。

834 名前:デフォルトの名無しさん mailto:sage [2017/10/10(火) 20:44:10.61 ID:9u7+xOBM.net]
そのコードでググったら流体シミュレーション系のライブラリが出てきたけど
=の誤植っぽいな

835 名前:デフォルトの名無しさん mailto:sage [2017/10/10(火) 22:40:42.03 ID:0CEF1oXw.net]
>>817
あるかもしれんが、それを書いた奴は底意地が悪いにもほどがあるなw

836 名前:デフォルトの名無しさん mailto:sage [2017/10/11(水) 23:12:25.71 ID:0+NB42kW.net]
糞オーバーロードは死刑で

837 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 08:00:09.14 ID:sPruOUUO.net]
パズルとか頭の体操みたいな意味では
キチガイじみた演算子オーバーロードも面白いんだけどね。

これを業界用語で
"Proving Grounds of the Mad Overload" と呼んだりする。

838 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 08:59:40.90 ID:ILNtvg14.net]
>>817
#define p if(0
#define gh 1) printf("あるわけねーだろ、ぼけ\n")
って定義されてるかもね

839 名前:デフォルトの名無しさん [2017/10/13(金) 01:27:13.01 ID:DZqiVJRN.net]
p ghってなに

840 名前:はちみつ餃子 mailto:sage [2017/10/13(金) 01:31:48.78 ID:cp+QXhjx.net]
>>823
常識的にはやるはずのないことを可能ではあると指摘した私への皮肉だよ



841 名前:デフォルトの名無しさん [2017/10/13(金) 01:43:21.69 ID:DZqiVJRN.net]
で、p ghってなに?

842 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 02:20:13.79 ID:vXJvgE+6.net]
少し遡れよ

843 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 06:55:33.00 ID:kwktlkZb.net]
>>414 の最後のコード部分からの文脈なんだけど…。

この式が何を計算するプログラムか情報が欲しいってことかな。
あるいは "pgr" や "ggrks" みたいなネットスラングと思ったのかも。

844 名前:デフォルトの名無しさん [2017/10/13(金) 07:59:25.08 ID:IEqvHxzW.net]
ぷげはー

845 名前:827 mailto:sage [2017/10/13(金) 11:29:02.31 ID:kwktlkZb.net]
いかんいかん、重要なアンカーを間違えたわ。
もちろん 414 は誤りで 814 と書くつもりだった。

「一連の流れでの p や gh は >>814 に出てる識別子」ってことね。

846 名前:デフォルトの名無しさん [2017/10/13(金) 11:34:16.38 ID:qDJA92iZ.net]
>>829
なるほど
前を見てなかったわ

847 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 13:55:38.78 ID:c4RRY+Fs.net]
webings.net/c/cal/
ここのソースコードをバーチャルスタジオにコピペしてビルドして実行してもHTML形式で表示してくれないんですが
HTML形式で表示するには何が必要なんですか?

848 名前:片山博文MZ mailto:sage [2017/10/14(土) 13:59:57.61 ID:WLIJLkzn.net]
>>831
拡張子が.htmlまたは.htmのテキストファイルとウェブブラウザー。

849 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 13:59:58.35 ID:c4RRY+Fs.net]
ヴィジュアルスタジオでしたすみません

850 名前:片山博文MZ mailto:sage [2017/10/14(土) 14:02:26.81 ID:WLIJLkzn.net]
>>831
そのプログラムは、ウェブサーバー側で実行されることを想定している。



851 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 14:03:11.84 ID:c4RRY+Fs.net]
自分のPCでは無理ですか?

852 名前:片山博文MZ mailto:sage [2017/10/14(土) 14:04:07.85 ID:WLIJLkzn.net]
>>835
ローカルでウェブサーバーを動かせばいい。

853 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 14:04:57.37 ID:c4RRY+Fs.net]
難しいですね・・・

854 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 14:27:50.51 ID:c4RRY+Fs.net]
苦Cまでは勉強したんですがどういう本読めばそういうの勉強できますか?

855 名前:片山博文MZ mailto:sage [2017/10/14(土) 14:33:48.58 ID:WLIJLkzn.net]
ウェブサーバーのインストールくらいは本を読まずに小学生でもできる。
ウェブサーバーについて知りたいなら「ウェブサーバーとは」で検索。
ウェブサーバー側のプログラムは、標準出力にHTMLを出力するただのコンソールプログラムか、スクリプトプログラムだ。
ブラウザーでウェブサーバーにアクセスすると、ウェブサーバー経由で出力されたHTMLが見れる。

856 名前:片山博文MZ mailto:sage [2017/10/14(土) 14:43:24.68 ID:WLIJLkzn.net]
"Content-type: text/html\n\n"
これは、httpヘッダーというものだ。これはHTMLテキスト以外にブラウザーと対話するためのデータだ。
httpヘッダーは、二つの改行コード("\n\n")で終わる決まりになっている。

857 名前:片山博文MZ mailto:sage [2017/10/14(土) 14:56:36.99 ID:WLIJLkzn.net]
ウェブについてはウェブ技術関連だから、C/C++とは別の話になる。スレ違いだから、ウェブ技術板へ行った方がいいかも知れない。

858 名前:片山博文MZ mailto:sage [2017/10/14(土) 15:03:37.69 ID:WLIJLkzn.net]
スレ違いのため、誘導します。

インターネット質問スレ64 [無断転載禁止]2ch.net
mevius.2ch.net/test/read.cgi/internet/1500505753/
ここのスレでウェブサーバーとHTTPの仕組みについて質問するといいよ。

859 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 15:10:51.07 ID:jjVQLoTb.net]
いい加減に書き込みで文字化けするブラウザなんて捨てろよ

860 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 17:42:42.94 ID:3MCmUjcj.net]
>>839
>>840
>>841
>>842
ありがとうございます
web関連の知識になるんですね
他の分野とC言語を結ぶ知識の仕入れ方って難しいですね・・・
最近DBの本を読んでますがこれと何らかの言語を結びつけるような知識の仕入れ方もよく解りません
苦C読んでさぁつぎ何読めばいいのって感じになります



861 名前:片山博文MZ mailto:sage [2017/10/14(土) 17:50:52.07 ID:WLIJLkzn.net]
>>844
Web関係をやりたいのかい? WebではCはあまり使わないよ。使うなら、JavaScript, Java, PHP, Python, RoR, SQLぐらいかな。

862 名前:片山博文MZ mailto:sage [2017/10/14(土) 18:09:28.74 ID:WLIJLkzn.net]
C/C++でWebやるなら、Win32API直接叩くか、cURLのような汎用のライブラリーを使うか、SQLiteかMySQLでデータベースにアクセスするくらいかな。

863 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 18:41:27.96 ID:3MCmUjcj.net]
>>845
webやりたいって言うか上のサイト見たいな事をC言語でもできることにびっくりしたんです

864 名前:片山博文MZ mailto:sage [2017/10/14(土) 19:05:03.99 ID:WLIJLkzn.net]
Cはバッファオーバーフローが起こりやすく基本的に安全じゃない言語であり、バイナリーは、ロックの問題があり、またポータブルじゃないから、サーバー側のアプリではあまり使わない。

865 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 20:01:26.45 ID:kY4tNrcH.net]
安全安全って、お前らバグ仕込みの達人かよ…

866 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 20:17:34.14 ID:q9IpA67V.net]
int c=0;
for(;;) c++;

これだけでバッファオーバーフローって起きるんですか?

867 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 20:23:02.85 ID:4H9yAKfY.net]
無限ループだけどバッファーの確保領域を突破してアクセスするようなコードを吐き出すことは無い
と思う

868 名前:片山博文MZ mailto:sage [2017/10/14(土) 20:43:46.00 ID:WLIJLkzn.net]
>>850
簡単に分かりやすい例を挙げると、外側から来た任意の長さの文字列でstrcatやsprintfなどを使うと危険。
危険な関数は使用禁止してセキュリティの強化された関数に置き換えないといけない。

869 名前:片山博文MZ mailto:sage [2017/10/14(土) 20:59:09.10 ID:WLIJLkzn.net]
だが、残念ながら、教育現場ではバッファの長さを考慮しないsprintfやstrcatを教えているところが今でもある。
標準のC言語ではセキュリティは低いと考えた方がいい。

870 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 20:59:25.10 ID:MqT/JM+M.net]
>>850
アクセスして良いメモリ範囲を越えてしまうバッファオーバーフローと、数値型の変数で表現可能な範囲を超えるオーバーフローは別の話。
そのソースで問題になるのは後者。



871 名前:片山博文MZ mailto:sage [2017/10/14(土) 21:16:55.49 ID:WLIJLkzn.net]
ちっ、俺がstrsafeを移植しないといけないか。

872 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 23:37:16.03 ID:q9IpA67V.net]
>>851-854
ということは、255サイズのリングバッファ作りたいときって

unsigned char buffer[255] = {0};
unsigned char head=0, tail=0;

unsigned char pop(){
if(head==255) head = 0;
return buffer[++head];
}

void push(unsigned char data){
if(tail==255) tail = 0;
buffer[++tail]=data;
}

このサイズチェックのif文なくても大丈夫ってことですか?

873 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 23:48: ]
[ここ壊れてます]

874 名前:06.29 ID:oz/gRrlj.net mailto: お前の例だと255でゼロになるけど
オーバーフローの場合は256でゼロになる
よって必要
[]
[ここ壊れてます]

875 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 00:30:38.33 ID:9R+c2v2L.net]
ひでーコードだ。

876 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 00:40:58.16 ID:4m9/y95n.net]
headがぶっ壊れそう

877 名前:片山博文MZ mailto:sage [2017/10/15(日) 05:20:33.19 ID:3VVV/TO4.net]
>>856
#define BUFSIZE 255
unsigned char buf[BUFSIZE] = {0};
size_t head = 0, tail = 0;

void push(unsigned char data)
{
assert(head < BUFSIZE);
buffer[head] = data;
++head;
if (head >= BUFSIZE) head = 0;
}

unsigned char pop()
{
unsigned char ret;
assert(tail < BUFSIZE);
ret = buf[tail];
++tail;
if (tail >= BUFSIZE) tail = 0;
return ret;
}

878 名前:デフォルトの名無しさん mailto:sage釣 [2017/10/15(日) 09:46:01.53 ID:TMBfPksM.net]
>>856
head &= 255; でチェック不要

879 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 10:09:16.14 ID:IWZc9Obf.net]
単なる例なんだろうけど、バッファサイズ=255って中途半端だな。
buffer[255]にセンチネル置くんならわかるが。

880 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 11:47:13.03 ID:uX83yxiA.net]
>>860
片山センセイ!
unsigned char buf[BUFSIZE] = {0};
て書いてある本と
unsigned char buf[BUFSIZE] = {};
て書いてある本があるんですけど同じでしょうか!?



881 名前:片山博文MZ mailto:sage [2017/10/15(日) 11:57:22.80 ID:3VVV/TO4.net]
>>863
https://cpplover.blogspot.jp/2010/09/blog-post_18.html?m=1

882 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 12:04:53.73 ID:t/hnbV6s.net]
>>861
というポカをするからif分で書いとけよ。
アンド演算子が使えるならコンパイラが
勝手にやってくれる。

883 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 13:58:06.01 ID:Mr2SylDC.net]
すこし譲って % 演算子で

884 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 02:26:41.08 ID:0Qezg1+a.net]
除算より条件分岐の方が速い定期

885 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 06:49:20.44 ID:IzFutT5/.net]
>>856
リングバッファの容量を256バイトにして、
バッファ領域を unsigned char buffer[256] = {0}; と
ちゃんと256バイト分確保すればサイズチェックは不要になるな。

ただし unsigned char の値範囲が 0 - 255 っていう「普通」の環境であること。
char が9ビットとか16ビットの機械/コンパイラもあるんだよね。

886 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 07:00:03.02 ID:IzFutT5/.net]
それにしても >>856 は何やらモヤモヤするコードだと思ったら…

バッファサイズが 255 と半端な値
リングバッファのアクセス関数が push() / pop() て名前
インデクス操作が前置++
tail と head が互いを追い越す可能性(バッファあふれの可能性)

まだあるかな。

887 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 08:04:32.95 ID:iBTaJQF1.net]
>char が9ビットとか16ビットの機械/コンパイラもあるんだよね。
え゛?まじで

888 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 08:18:16.95 ID:ipy+DI/z.net]
>>869
buffer[1] 〜 buffer[255] を使う
っていう大きな問題がある

889 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 08:49:21.72 ID:IzFutT5/.net]
先に == 255 の判定をして 0 に戻すから
範囲外の buffer[255] にアクセスする危険があるのか。

インデクスに前置++は見慣れなくて気色悪い、じゃ済まない問題だな。

890 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 12:53:13.92 ID:TeGVYWUh.net]
>>871
buffer[1] 〜 buffer[254] までじゃね?
まあそれはそれでもやもやするけど w



891 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 12:59:13.25 ID:TeGVYWUh.net]
>>870
俺も実機は見たことないけど

パーソナルコンピューターでは一般に8ビット長だが、DEC PDP-10、IBM 7090、ACOS-6の動作するNECのメインフレームなど、36ビットワードマシンでは1バイトが9ビットであり、charも9ビット長となっている。
www.wdic.org/w/TECH/char

892 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 16:13:16.23 ID:mLqrsWtl.net]
>>872
危険ていうか
一周すれば確実にアクセスする

>>873
え?

893 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 16:14:16.39 ID:mLqrsWtl.net]
>>874
char16bitならもうちょっと身近に

894 名前:デフォルトの名無しさん mailto:sage釣 [2017/10/16(月) 20:14:57.67 ID:e0xkLpP0.net]
>>870
DSPとかだと40bitなんてのもあるよ

895 名前:デフォルトの名無しさん [2017/10/16(月) 21:01:51.62 ID:JAGwlDmF.net]
>>877
ほんとに?

896 名前:はちみつ餃子 mailto:sage [2017/10/16(月) 21:19:32.17 ID:8llzdgRf.net]
>>870
ISO などでは 2008 年に 1 バイトは 8 ビットという定義を決めた。
diode.matrix.jp/LEGEND/BYTE.htm
1 バイトが 8 ビットではない (それなりに広く使われている) アーキテクチャが事実上消えたのは決め手のひとつだと思う。

C でこの定義を採用すると明記されているわけではないので、
C の言語仕様としては依然として処理系定義という扱いのはずだし、
何かの用途に特化したプロセッサでは変則的なものはいくらでもありうるんだけど、
自分で書くプログラムでそこまで想定することはまず無いわな。

897 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 22:10:25.19 ID:7CHwAcHs.net]
処理系を言わないならx86と勝手に解釈していい。charは8bitじゃない処理系もあるとかナンセンス。

898 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 00:03:46.71 ID:gPfxTVwW.net]
vector<string> a;
for(auto i=0; i<20; ++i) a.push_back(" ");
// vector<string> b;
// b.push_back(" ");
て、なんかおかしな所ある?デバッガで size がやたら大きな値になる…
下2行コメント外すと想定どおりになる…もう、わからん

899 名前:はちみつ餃子 mailto:sage [2017/10/17(火) 01:11:42.94 ID:xlsZVRp9.net]
>>881
実際いくつになって、
自分はどういうのを想定してるのか書けよ。
俺らはお前が何を想定してるのか知らんがな

900 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 01:15:35.02 ID:hVetZd8l.net]
そういうときはな。デバッガで調べるんだよ。



901 名前:デフォルトの名無しさん [2017/10/17(火) 04:44:35.63 ID:AOvKqYYR.net]
PICはcharが6ビット。

902 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 07:19:31.01 ID:nwT4mK5H.net]
>>881
size関数のアドレスを表示しているとエスパーしてみる

903 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 08:33:10.47 ID:HbTCC5+E.net]
>>879
えっ?
まだまだ存在してるよ

904 名前:デフォルトの名無しさん [2017/10/17(火) 09:15:45.07 ID:EtZfCwzt.net]
>>879
いや、組み込みの仕事してれば普通にあるから。
してなければ、普通に無いってのも間違いでは無いが、言い切るものでもない。

905 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 09:48:13.45 ID:s7U5ZpjM.net]
だな

906 名前:はちみつ餃子 mailto:sage [2017/10/17(火) 10:10:10.17 ID:xlsZVRp9.net]
>>887
それは「用途を特化したアーキテクチャ」ではなくて汎用的で広く使われているコンピュータなの?
組込み系って普通は何か用途を特化してるものと思うんだけど。

907 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 12:07:40.67 ID:XkjDmgw/.net]
VC で Release ビルドでデバッグトレースしてたりして
あれ、ソースレースできちゃうけど、あまりあてになんねーし

908 名前:デフォルトの名無しさん mailto:sage釣 [2017/10/17(火) 12:09:50.70 ID:kRPJAKch.net]
コンピューターの定義次第やな

株や証券取引に広く使われているFPGAはどういう扱いなの?
CUDAはどうなの?これらもC言語と称している言語で書くが?

この先は宗教戦争になるから止めれ

909 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 13:01:09.70 ID:qd6dTZ1I.net]
「コンピューター」に限定する必要もない
スレタイ見よう

910 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 18:28:45.12 ID:hVetZd8l.net]
verilogやHLSLのどこがC言語なんだよ。



911 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 18:47:35.04 ID:HbTCC5+E.net]
>>893
そんなことを書いてるのはお前だけ

912 名前:デフォルトの名無しさん [2017/10/17(火) 21:42:56.86 ID:0HMqhgUO.net]
>>889
汎用とか特化に食いついてるのではなくて、「事実上消えた」ってところと、「自分で書くプログラムでそこまで想定することはまず無いわな」の部分に食いついているんだけどね。

913 名前:デフォルトの名無しさん [2017/10/17(火) 21:46:38.99 ID:0HMqhgUO.net]
組み込みの世界が特化という点は反論しないし、ぶっちゃけどうでもいい。
でも、特化してるからって、別に消えてないし、仕事で普通に気にしてるし。

914 名前:はちみつ餃子 mailto:sage [2017/10/18(水) 02:21:26.88 ID:8euWiZGY.net]
>>895-896
「それなりに広く使われているアーキテクチャとしては」と限定して書いているのは、
そうでないアーキテクチャでは残っていることは承知しているという意味だよ。
自分ってのはまさに「私」のことなので実際気にする場面に遭遇したことがないし、
それをどうこう言われても俺に組込み系の仕事をして欲しいというのでもなけりゃ何の意味があるのかわからん。

915 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 04:12:20.13 ID:aws8n6lY.net]
C/C++てもう組込用途しか需要無いんですか?

916 名前:はちみつ餃子 mailto:sage [2017/10/18(水) 04:51:52.35 ID:8euWiZGY.net]
んなこたーない。

917 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 05:22:14.83 ID:Wqkl1Wvb.net]
JavaやC#、その他の高級言語、スクリプト言語で済むならそこにはC/C++の出番はない。
組み込み、OS、ドライバ、ハード寄り専用言語と思っていい。

918 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 06:54:18.33 ID:lHCL+31V.net]
>>897
日記のつもりならチラ裏にでも書いとけ
お前が遭遇するかどうかなんてどうでもいい

919 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 07:45:33.63 ID:AKs1AZwU.net]
個人的な主観をさも一般論かのように書かれるのは迷惑だな

920 名前:デフォルトの名無しさん [2017/10/18(水) 08:56:09.82 ID:at3yxigr.net]
>>897
特化してることと、広く使われてるって事は、互いに背反しないんだけど?
君の中では、特化=狭い、と言う定義なのなら、この話はこれでおしまいでいいよ。



921 名前:デフォルトの名無しさん [2017/10/18(水) 09:00:16.16 ID:at3yxigr.net]
>>897
あともう一つ、君の今いる世界が、世間一般とは限らないから。

922 名前:デフォルトの名無しさん [2017/10/18(水) 10:03:33.10 ID:NAca40Iu.net]
並行世界か。

923 名前:はちみつ餃子 mailto:sage [2017/10/18(水) 11:38:55.90 ID:8euWiZGY.net]
>>902
「思う」とか書いてるの、感想以外の何物でもないじゃん。
書いてないことを勝手に読み取るなよ。

924 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 11:55:04.11 ID:LfPioRS3.net]
8bitでない処理系とかの話になるとすぐ荒れるよな
客観的に見ると、噛み付いてる組み込みの連中の方が支離滅裂だよ
脊髄反射する前に一連のレス読み直した方がいい

925 名前:デフォルトの名無しさん [2017/10/18(水) 12:15:35.97 ID:NAca40Iu.net]
VSはよく出来てるからMSから取り上げて国連で管理するべき。

926 名前:デフォルトの名無しさん [2017/10/18(水) 12:16:43.65 ID:NAca40Iu.net]
国連移管後のVSは戦略物資として利用者を追跡するべき。

927 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 12:54:25.64 ID:lHCL+31V.net]
>>907
> 脊髄反射する前に一連のレス読み直した方がいい
ブーメラン乙 w

928 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 13:11:40.64 ID:oy9jxwBz.net]
907だが、本気でそう思うなら頭沸いてるぞ

929 名前:デフォルトの名無しさん [2017/10/18(水) 15:39:35.53 ID:NAca40Iu.net]
病院に連れて行ったほうが良い。

930 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 20:02:41.54 ID:3bYwz/rX.net]
armとインテルだけで世界が回ってると思ってるのかな



931 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 21:03:18.48 ID:lHCL+31V.net]
本気でそう思うからお前らがまず受診してこいよ w
お前らの世間狭すぎるだろ

932 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 23:53:45.00 ID:oy9jxwBz.net]
>>879
>アーキテクチャが事実上消えた
組み込み系じゃない俺でもさすがに消えてないとは思うが、
まず基本的に1バイトの定義がはっきりして、さらにコンピュータの性能進化とともに
特殊な処理系が減っていくならそれ自体は良いことじゃねーの?
>>868辺りからの流れに対して無意味な罵倒してるのはお前らだろ
特殊な処理系を知ってるのがお前らのアイデンティティなの?ww

あと
>>895
>「自分で書くプログラムでそこまで想定することはまず無いわな」
俺もまず想定しないよ、リトルエンディアンですら気にしたことない
気にするのは必要になってからだ、まず必要にならないのに想定してコスト増やすのはただの給料泥棒

933 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 23:59:19.56 ID:oy9jxwBz.net]
間違えた、ビッグエンディアンだった
リトルエンディアンの環境でしか書いたことないし、俺の場合は多分今後も無いので。

934 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 00:31:08.38 ID:4jS9VIw9.net]
Cが使われるような用途ではバイナリレベルの話は必須のはずだが。IF仕様で必ず指定あるだろ。

935 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 08:27:23.91 ID:hylRky7G.net]
引っ込みつかなくなった井の中の ID:oy9jxwBz 乙 w

936 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 09:17:54.41 ID:Guom/JOK.net]
さすがに>>880は乱暴過ぎると思うぞ

937 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 11:09:01.22 ID:Ka5Awqhg.net]
>>ID:lHCL+31V=ID:hylRky7G
>>901
>>910
>>914
>>918
いや、全部ブーメランしてんのお前だから

938 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 12:45:12.45 ID:hylRky7G.net]
>>919
まあcharが8bitはまだわかるけどx86決め打ちとかあり得んよな
よほど井の中の蛙扱いされたのが悔しかったみたいだ w

939 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 13:08:04.36 ID:Ka5Awqhg.net]
俺は>>880じゃないし
他人のレス(>>919)を自分の煽りに利用するなクズが

ハードの制約や特殊な環境というのがCPUにしか無いと思ってる辺り、井の中の蛙はお前
手加減してやってるうちに黙るか謝れ
とっくに論破されてるだろ?

940 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 14:15:39.49 ID:qgTZ/C3n.net]
普通に自信あるなら論点のみ論破して後スルーでよくね?



941 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 21:51:19.20 ID:AKvCLhcx.net]
> ハードの制約や特殊な環境というのがCPUにしか無いと思ってる
引っ込みつかなくなって話をそらそうと必死だな w

942 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 23:46:58.92 ID:6TDKNKTM.net]
ハネウェルの9ビットは汎用コンピュータだけどな

943 名前:はちみつ餃子 mailto:sage [2017/10/21(土) 00:01:02.62 ID:piER3a9b.net]
多くの職をなるべく均等に育成する方針でいたんだけど、
まずはどれでもいいからレベル上げして高レベルの宝の地図をゲットしたら育成なんていくらでも出来るな。
完全に失敗だわ。
仕方がないのでウォルロ北東の高台ではぐれメタル相手にレベル上げしてる。

944 名前:はちみつ餃子 mailto:sage [2017/10/21(土) 00:01:29.50 ID:piER3a9b.net]
>>926
すまん。 誤爆した。

945 名前:デフォルトの名無しさん mailto:sage [2017/10/21(土) 01:26:13.78 ID:01QdRZD5.net]
どのスレか特定してやる

946 名前:デフォルトの名無しさん mailto:sage [2017/10/21(土) 08:05:22.19 ID:RIH/f2PJ.net]
ドラクエ9かな

947 名前:デフォルトの名無しさん mailto:sage [2017/10/21(土) 09:07:27.71 ID:FoEY9rcC.net]
ウォルロ
確定ですね

948 名前:デフォルトの名無しさん [2017/10/27(金) 15:14:51.06 ID:BaiBMwP3.net]
typedef size_t size_type;
こういうコードを良く見るんですが、これは何のためにやってるんでしょうか?

949 名前:片山博文MZ mailto:sage [2017/10/27(金) 15:26:11.40 ID:xRxq9X9w.net]
>>931
型を抽象化して、型の切り替えを楽にするためさ。

950 名前:デフォルトの名無しさん mailto:sage [2017/10/27(金) 15:47:51.76 ID:C4KpdBNl.net]
conanのようなパッケージマネージャってどうなの?
使ってる人ー?



951 名前:デフォルトの名無しさん [2017/10/27(金) 16:29:53.23 ID:8v9HsLU9.net]
驚きの柔軟剤ふわふわファーファ。

952 名前:デフォルトの名無しさん mailto:sage [2017/10/27(金) 20:57:21.79 ID:qcblY/zy.net]
クラスの静的メンバー変数って何に使うんですあk?

953 名前:デフォルトの名無しさん mailto:sage [2017/10/27(金) 21:06:52.03 ID:/LUCvRWS.net]
オブジェクトを横断して共有したい情報の保持
何個実体作ったっけ?ってカウントしたり

954 名前:デフォルトの名無しさん [2017/10/27(金) 21:23:23.67 ID:BaiBMwP3.net]
型を抽象化とはsize_tをsize_typeでオーバーライドすると言う意味で
型の切り替えとはsize_tとsize_typeを使い分けるということでしょうか?
型の切り替えの意味が合っているとしたら、中身が同じものを使い分ける事なんてあるんですか?

955 名前:デフォルトの名無しさん mailto:sage [2017/10/27(金) 21:44:14 ]
[ここ壊れてます]

956 名前:.01 ID:M7vRAAca.net mailto: 例えば何かの都合でsize_typeをssize_tにした方がよいとなった場合にtypedefを一行変更するだけで済む
他の部分はsize_typeという型で抽象化されているから簡単に切り替えられるということ
[]
[ここ壊れてます]

957 名前:デフォルトの名無しさん [2017/10/27(金) 23:53:57.84 ID:BaiBMwP3.net]
>>938 >>932
やろうとしてることはある程度理解できました。ありがとうございます。
でもsize_typeをssize_tにするようなことはしてないスクリプトにも、このコードは書かれています。
そういうケースに備えて念のために書いておいたほうがいいということなんでしょうか。

958 名前:デフォルトの名無しさん mailto:sage [2017/10/28(土) 00:20:18.16 ID:n4Ie7UZ/.net]
>>939
いや、べつに

959 名前:デフォルトの名無しさん mailto:sage [2017/10/28(土) 05:57:50.48 ID:KtZXeElz.net]
typedef unsigned int Uint;
typedef unsigned int MyResID;
typedef unsigned int MyID;

例えば、Uint だと意味が分からないから、
リソース番号なら、MyResID
自分のID なら、MyID
などと再定義して、用途を分けておくと、見た目にも分かりやすい

「c typedef」で検索!

960 名前:デフォルトの名無しさん mailto:sage [2017/10/28(土) 11:30:31.16 ID:aIwzbvt/.net]
変数名でわかるじゃん



961 名前:デフォルトの名無しさん mailto:sage [2017/10/28(土) 11:45:42.58 ID:UQLb/21G.net]
見た目が分かりやすいからsize_tをsize_typeにすると>>941は思ったのだろうか

962 名前:デフォルトの名無しさん mailto:sage [2017/10/28(土) 12:16:56.59 ID:5IbYoyZ3.net]
>>941
それは見た目で用途が分かりやすいというだけでなく、ある用途の場合だけ型を変更し易いという利点が主じゃないかな?
例えばMyResIDは当初は整数で良かったけど後で文字列に変更したくなったとか。

963 名前:デフォルトの名無しさん mailto:sage [2017/10/28(土) 12:33:49.13 ID:MyIroYJQ.net]
MyResIDは8桁の数字を取り扱うんだけど、
intが16bitの環境に移植することになった…なんて時に便利

964 名前:デフォルトの名無しさん mailto:sage [2017/10/31(火) 12:46:46.26 ID:KJARTkQB.net]
>>931
よく見るってどこでよく見るの?

965 名前:デフォルトの名無しさん mailto:sage [2017/10/31(火) 13:08:37.17 ID:0cbtiG+h.net]
テンプレートなんかでよく見るvalue_typeみたいなもんかね

966 名前:デフォルトの名無しさん mailto:sage [2017/10/31(火) 18:04:33.78 ID:vd1YUsZz.net]
>>900
>組み込み、OS、ドライバ、ハード寄り専用言語と思っていい。
言語系自体(C#/Java) は C/C++ で書かれているんじゃない?C/C++ 以外で記述されたエディター、というのも思い当たらないね

967 名前:デフォルトの名無しさん mailto:sage [2017/10/31(火) 18:23:56.52 ID:TOtCAKzB.net]
>>948
Atom, Visual Studio Code

968 名前:デフォルトの名無しさん mailto:sage釣 [2017/10/31(火) 18:52:57.69 ID:QkT+8axj.net]
>>948
Vz

969 名前:デフォルトの名無しさん mailto:sage [2017/10/31(火) 19:10:34.72 ID:xyLQL02T.net]
>>950
あれのマクロは色々参考になった
printf に似たものの実装とかもやってたし



アセンブラで

970 名前:デフォルトの名無しさん [2017/10/31(火) 20:51:58.22 ID:3JCeBBQH.net]
>>949
Electronに使われてるV8がC++だがな



971 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 07:12:46.61 ID:UcxIkq8e.net]
クラス定義でサンプル見るとprivate:が書いてあるのばかりだけど
クラスはデフォルトでpraivateだから書く必要ないよね
可読性のために書いてるの?

972 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 07:32:02.47 ID:qOYb+y+r.net]
>>952
それは英語で書いてるよねって見方と一緒

973 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 08:05:04.65 ID:1pZzHGIc.net]
>>953 俺は書く派。
public や protected と統一されて座りがいいと感じる。
流石に「デフォルトでprivate」を覚えられないわけではない。

974 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 09:32:55.92 ID:hOs9b/I4.net]
>>953
class aaa
{
public:
//メンバ関数−上の方が目立つ?
private:
//メンバ変数−下の方にこそっと?
}
みたいな書き方が一部で流行してるからってだけでは?
実際、流行してるのか否かも知らんが

975 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 19:35:21.85 ID:nkaKR7E8.net]
>>953
綴りも覚えられないようなボンクラは書かないで済むなら

976 名前:書きたくないって思うんだろうな w []
[ここ壊れてます]

977 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 20:04:14.14 ID:qg2RuF/n.net]
こういうクラスメソッドがあれば便利だな〜
一番上にpublicで追加したろ
ってなった時に巻き添えでpublicにしないように

978 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 20:23:43.72 ID:GUg4tmKS.net]
unordered_mapの時間オーダーはランダムアクセスがo(N)で検索がo(1)ですよね?
以下を見ると逆になってるのだすが間違いですよね?

https://qiita.com/h_hiro_/items/a83a8fd2391d4a3f0e1c#all_table

979 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 20:59:34.54 ID:M3kcqSwB.net]
>>959
間違ってない
そのページで使ってる『ランダムアクセス』『検索』の意味(処理の内容)に対しては一覧表の計算量であってる

980 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 21:01:07.22 ID:4wUVM0HB.net]
画像処理についての質問です
下記コードのループ1のframeTestとループ2のframeTest2で出来上がる画像が違うのは何故なんでしょうか?
(frameTestは緑一色、frameTest2は緑赤青の3色)
使っているのはvisual studio2017です

コード codepad.org/IHZhOf8h



981 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 21:20:00.76 ID:xoMVkOKP.net]
TestIm[] が想定してる並びになってない
1回目のループ中に 実は書き壊してるw
なので 2回目のループの時は 参照だけしてるはずなのに同じにならない

インデックスの式 Testwidth*y + x*3 + 0〜2(色)
1行あたりのバイト数が Testwidth で見積もってる式になってるからね

982 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 21:36:50.34 ID:xoMVkOKP.net]
Testwidth * 3 * y + x * 3 + 0〜2
これで望みの形になると思うよ

W * H 次元の空間を 1次元で並べるなら W * y + x
W * H * C 次元の並びは (W * y + x) * C + color → W * C * y + C * x + color
こんな感じ

983 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 21:41:14.25 ID:4wUVM0HB.net]
>>962, >>963
ありがとうございます!!
TestIm[]の添え字がいけなかったのですね…そのようにして実行してみます

984 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 21:56:38.47 ID:GUg4tmKS.net]
>>960
すみません、ランダムアクセスと検索を逆に指してました。
前者がoperator []、後者がfindですよね。

unordered_setは検索がo(1)なのでunordered_mapも同じかと思ってました。
ハッシュテーブル系はo(1)になると思っていたのですが、そうでもないのでしょうか?

985 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 22:44:25.89 ID:M3kcqSwB.net]
>>965
> 前者がoperator []、後者がfindですよね。
これが違う

あのページでいうunordered_mapに対する『検索』は
(key, value)ペアのvalueが指定した値と等しい要素を探す処理(要するに逆引き)のこと
となるとkeyとは無関係な処理なため全要素を順次走査することになるからO(n)になる

986 名前:デフォルトの名無しさん [2017/11/01(水) 23:27:07.64 ID:kBuKLW51.net]
>>965
O(1)になる検索のアルゴリズムなんてねえよ

987 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 23:32:44.98 ID:Oby+I+5u.net]
Hash は、O(1)

HTree とか、衝突(シノニム)時に2分探索になるが、それもまれ

988 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 07:12:51.03 ID:BfnVxeM2.net]
>>967
Hashも知らんのかよ...

989 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 07:23:18.79 ID:b+wcFKOg.net]
検索っていうか、辞書引きだな

990 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 08:18:33.66 ID:KKkRrWi/.net]
本筋と関係ないけど、O(n)とo(n)は意味が全然違うので注意



991 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 09:09:16.73 ID:rFzi+Leg.net]
wacomのサンプルコードについて質問です
wdnet.jp/library/windows
ここのMFCデモのdemobiew.cpp内にある
codepad.org/hUs8JI4t
このlc.lcInExtXはなんの値を指しているのでしょうか
自分の環境ではこの値を適当な定数にしなければペンとカーソルの位置が一致しません

992 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 11:24:52.00 ID:+ai7GGRX.net]
>>966
ありがとうございます。そういう意味でしたか。
unordered_setはkey自体がvalueなので検索もO(1)だという単純な話ですね。

993 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 13:25:09.29 ID:fgcqUQ//.net]
>>972
公式にドキュメントがあるなら一通りは目をとおしな
wdnet.jp/library/windows/wintab#2.3

> 2.3 Wintabの初期化
...
> 2.スケーリングの初期化について
>  以下のように、LOGCONTEXT の値を初期化する事でスケールの設定を行います。
...
> A lcInExtX,lcInExtY にタブレットの入力最大座標

994 名前:sage [2017/11/02(木) 19:37:23.87 ID:Vcb2n/8t.net]
以下,かっこよくなりませんか?
while文の条件がダサすぎるので何とかしたい.
std::array は使わず,2次元の生配列でお願い.

以下,ソース.

#include <iostream>
#include <cstdlib>
#include <fstream>

int main(){
std::ifstream fin( "xxx.txt", std::ios::in );

double data[6][4];
int i = 0;
while( fin >> data[i][0] >> data[i][1] >> data[i][2] >> data[i][3] ){
for( int j=0; j<4; ++j )
std::cout << data[i][j] << " ";
std::cout << std::endl;
++i;
}

return EXIT_SUCCESS;
}

995 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 20:37:36.68 ID:j119FHt+.net]
はい。なります。

996 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 20:43:01.12 ID:RVlmQZC9.net]
十分格好いいです

997 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 20:49:14.23 ID:QvGPm7pP.net]
読むのと書くのを関数に分けるべきかな

998 名前:はちみつ餃子 mailto:sage [2017/11/02(木) 23:14:01.04 ID:4tfXXWiS.net]
>>975

個人的にはこんな感じにするかな……。

#include <iostream>
#include <fstream>

std::istream& operator>>(std::istream& in, double (&data)[4]) {
for(auto& e: data) in >> e;
return in;
}

std::ostream& operator<<(std::ostream& out, double (&data)[4]) {
for(auto e: data) out << e << " ";
return out;
}

int main(void) {
std::ifstream fin( "xxx.txt", std::ios::in );

double data[6][4];
int i = 0;
for(auto& data_line: data) {
if((fin>>data_line).fail()) break;
std::cout << data_line << std::endl;
}

return EXIT_SUCCESS;
}

配列のままがお望みらしいのでこう書いたけど、専用の型を用意した方が綺麗っちゃ綺麗

999 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 00:03:21.41 ID:4eJ/7N9T.net]
>>975
while( [&]{ for(auto& e: data[i]) fin >> e; }(), fin.good() ){
for( auto& e: data[i] )
std::cout << e << " ";

1000 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 00:49:56.36 ID:LOXVFC/o.net]
975です,sage方法すら忘れててすまぬ.
>>976
そのソースを示してくれると嬉しい
>>977
いや,これだと生理的にダメなんすよ
>>978, 979
大層なことするわけじゃないからなるべく短く行きたいんや
>>980
つか,whileの条件式に登場する , は何ぞや,なレベル.
以下のソースだと,ラムダ式部分に警告 expression result unused が出る.
バイナリは吐くが,実行すると大量のコンソール出力があり,
しかも全く読めていないっぽいうえ,Segmentation faultしやがる.

以下,試したソース
#include <iostream>
#include <cstdlib>
#include <fstream>

int main(){
std::ifstream fin( "xxx.txt", std::ios::in );

double data[6][4];

int i = 0;
while( [&]{ for( auto& e



1001 名前:: data[i] ) fin >> e; }, fin.good() ) {
for( auto& e : data[i] ) std::cout << e << " ";
std::cout << std::endl;
++i;
}

return EXIT_SUCCESS;
}
[]
[ここ壊れてます]

1002 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 01:05:35.02 ID:4eJ/7N9T.net]
>>981 https://www.google.com/search?q=カンマ演算子

1003 名前:デフォルトの名無しさん mailto:saga [2017/11/03(金) 01:56:10.83 ID:LOXVFC/o.net]
>>982
カンマ演算子か.なるほど.
whileの条件式に与えたラムダ式を評価してその成否は破棄しつつ
カンマ演算子の右にあるfinがまだ使えるかどうか,
で処理継続の可否を判断している,という理解でいいのかな.

でも,981のソースだと,while文が終わらずに,無限ループに突入しているもよう.
この現象を説明しつつ,問題を解決するソースをくれると喜びます.

1004 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 04:19:30.63 ID:4eJ/7N9T.net]
>>983 >>980

1005 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 06:53:03.34 ID:LOXVFC/o.net]
975です,

>>981 のソースでいう
while( [&]{ for( auto& e : data[i] ) fin >> e; }, fin.good() ) {

while( [&]{ for( auto& e : data[i] ) fin >> e; }(), fin.good() ) {
にしたら正常に動作しました.
まずはありがとうでした.

1006 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 16:37:14.49 ID:t+2N1bPb.net]
c++初心者向けの名著コードない?

1007 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 20:48:45.38 ID:fZH3r81G.net]
お前の頭は既にしてバーコードだろ?

1008 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 20:59:39.93 ID:t+2N1bPb.net]
坊主頭なんだが、ストレスで10円ハゲがたくさんできてQRコードだ。安心しろ。

1009 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 09:57:38.12 ID:io7R91TU.net]
char a[8]="12 34 56";
と言うのがあったとして
これを数値の123456にしたい時、一番速い書き方ってどんなだろうか

1010 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 10:21:35.26 ID:KEPGzX0z.net]
>>989
aの内容は書き換えても良い?
数値は必ず2桁の空白区切り?



1011 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 10:58:19.72 ID:OnkwfBEU.net]
普通に文字列の先頭から、数字が表れたら'0'との差を加算して桁上げして、ってのを繰り返すのが速いと思うが。

1012 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 11:09:08.10 ID:XesRBOxx.net]
>>989 スレッド終盤に面白い問題を出してくれるなぁ。

a[8] と要素数を明示して "12 34 56" を代入する部分に罠の臭いを感じる。
'\0' 終端の一般的なCの文字列ではない、8byte専用のトリックが存在するのかも。

1013 名前:はちみつ餃子 mailto:sage [2017/11/04(土) 11:29:59.70 ID:oNhsu9lL.net]
条件次第ではあるけど、
平均的には標準で用意されている関数を使うのがまともな速さになると思う。
↓こんなの

*std::remove(std::begin(a), std::end(a), ' ') = '\0';

1014 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 11:47:30.29 ID:zGy4Oklk.net]
速さってコーディンクの速さ?
実行速度?

1015 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 11:51:36.02 ID:zGy4Oklk.net]
a[0]*100000+a[1]*10000+a[3]*1000+a[4]*100+a[6]*10+a[7]-'0'*(111111)

1016 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 11:59:30.61 ID:zGy4Oklk.net]
int v = 0;
for (int i = 0 ; a[i] != '0' ; i++){
if (a[i] == ' ')
continue;
v = v*10+(a[i]-'0');
}

1017 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 12:28:06.26 ID:io7R91TU.net]
みんなありがとう
>>991を参考にこんな感じでやってみたけど、どうなんだろうか。
#include <stdio.h>
#include<time.h>
int main(){
char a[8]="12 34 56";
int b;
clock_t c c;
c=clock();
for(int d=1000000000;d;d--){
b=10*(10*(10*(10*(10*(a[0])+a[1])+a[3])+a[4])+a[6])+a[7]-5333328;
}
printf("%d\n%.3f\n",b,(double)(clock()-c)/CLOCKS_PER_SEC);
}
スマホで書いたからミスってるかもw

1018 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 16:35:05.69 ID:NYxCuvMY.net]
次スレ
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1509780815/

1019 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 20:16:28.54 ID:wPtyVAZ4.net]
文字化けしてる奴がMZくさい

1020 名前:はちみつ餃子 mailto:sage [2017/11/04(土) 20:57:59.73 ID:oNhsu9lL.net]
結果を整数で得たいならこういうのでもいいかな。

std::accumulate(std::begin(a), std::end(a), 0, [](int acc, int e) { return std::isdigit(e) ? acc*10+e-'0' : acc;})



1021 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 109日 13時間 50分 32秒

1022 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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