【初心者歓迎】C/C++室 Ver.101【環境依存OK】 [無断転載禁止]©2ch.net

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

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

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

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

2デフォルトの名無しさん2017/07/18(火) 15:31:46.97ID:PYVrHLeZ
ほす

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

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

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

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

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

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

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

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

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

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

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

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

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

15デフォルトの名無しさん2017/07/21(金) 02:47:35.89ID:cbDQlmdo
俺の理解では、moveしたいからそのためにmoveができる条件を定義してるだけだと思うけど
コンパイラーがどういう条件の時に右辺値と扱えるかどうかを示すために
それが、参照に&マークを使っているという歴史的経緯でややこしくなってるだけでしょ

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

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

18デフォルトの名無しさん2017/07/21(金) 07:46:07.93ID:cbDQlmdo
レベルの低いスレだな

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

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

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

22デフォルトの名無しさん2017/07/21(金) 09:09:12.41ID:F3uzVYNc
他の言語ではこの概念出てこないの?どこが違うの?

23デフォルトの名無しさん2017/07/21(金) 10:43:02.49ID:YiUdVm2o
他言語では見たことが無いな
参照の仕組みが近いのは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()」実質の右辺値
}

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

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

25デフォルトの名無しさん2017/07/21(金) 11:52:40.57ID:XYgV/slE
GCがあるから委譲と複製を区別しなくて済むってのに違和感

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

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

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

28デフォルトの名無しさん2017/07/21(金) 12:37:14.45ID:YiUdVm2o
>>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.

29デフォルトの名無しさん2017/07/21(金) 13:04:34.65ID:C+EZcupv
>>28
おっ サンキュー

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

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

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

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

33デフォルトの名無しさん2017/07/21(金) 15:17:08.56ID:P7F/0MU3
>>9
横からだけど、すごく分かりやすかった。ありがたい。

34デフォルトの名無しさん2017/07/21(金) 19:19:00.46ID:6hIUsyMM
>>24
GC 関係ないわな

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

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

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

35デフォルトの名無しさん2017/07/22(土) 01:20:33.15ID:oqulLxLp
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が入力されたらループを抜けるにはどう書けばいいんでしょうか?

36片山博文MZ ◆T6xkBnTXz7B0 2017/07/22(土) 01:34:09.94ID:Scnyb+6Y
soku != 1 && soku != 2

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

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

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

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

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

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

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

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

45デフォルトの名無しさん2017/07/22(土) 14:51:24.55ID:o3Mfi2ju
1|2なら3
1||2は1

46デフォルトの名無しさん2017/07/22(土) 15:12:08.99ID:9V10kE5p
難しいのね…

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

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

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

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

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

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

53片山博文MZ ◆T6xkBnTXz7B0 2017/07/22(土) 19:05:08.09ID:WTRjQogU
論理学の真理値表→論理学のド・モルガンの定理→集合論のド・モルガンの定理

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

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

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

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

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

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

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

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

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

61デフォルトの名無しさん2017/07/22(土) 20:10:05.26ID:aL/Y+CP+
トラウマがあるのか。

62片山博文MZ ◆T6xkBnTXz7B0 2017/07/22(土) 20:27:14.25ID:WTRjQogU
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 と言える。

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

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

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

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

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

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

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

69 ◆QZaw55cn4c 2017/07/22(土) 21:15:06.91ID:/Wnz58+R
>>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)
どちらか一方だけ証明できたら,残りはドモルガン採用ですっとばしているが,ドモルガンが∞にも使えるか迷いがある

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

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

72片山博文MZ ◆T6xkBnTXz7B0 2017/07/22(土) 21:26:51.50ID:WTRjQogU
あとは数学的帰納法だ。

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

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

75デフォルトの名無しさん2017/07/22(土) 22:41:47.08ID:GxGWP07y
なにこの自演連投

76デフォルトの名無しさん2017/07/22(土) 23:51:19.55ID:QqZjuHKP
>>57
ωの定義は?
Γ_0の定義は?

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

78デフォルトの名無しさん2017/07/23(日) 00:15:19.26ID:saJI7pNE
災害だと思って諦めろ

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

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

81デフォルトの名無しさん2017/07/23(日) 11:35:11.86ID:3jIQW2qu
糞ハンネ

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

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

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

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

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



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

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

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

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

87片山博文MZ ◆T6xkBnTXz7B0 2017/07/24(月) 19:20:26.89ID:iUqnpKPO
天才の時間を無駄にするなよ。

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

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

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

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

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

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

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

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

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

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

98 ◆QZaw55cn4c 2017/07/25(火) 19:38:58.05ID:CTkA02wP

99デフォルトの名無しさん2017/07/25(火) 20:05:19.85ID:M07WjxQ9
>>97
operator彡(゚)(゚)
こう使う

100片山博文MZ ◆T6xkBnTXz7B0 2017/07/25(火) 20:35:51.44ID:hJo+OnkE
尋常小學校

101デフォルトの名無しさん2017/07/26(水) 03:01:12.72ID:73NCM6AX
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に付いてる()は何の意味があるんでしょうか?

102デフォルトの名無しさん2017/07/26(水) 03:21:52.99ID:qHYVpVTl
バルタン星人。

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

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

104デフォルトの名無しさん2017/07/26(水) 06:18:35.77ID:qHYVpVTl
  ・V ・
(v).swap(v) フォッフォッフォッ

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

106片山博文MZ ◆T6xkBnTXz7B0 2017/07/26(水) 20:46:35.22ID:bC5SPfn2
vector<int> (v).swap(v);

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

107はちみつ餃子 ◆8X2XSCHEME 2017/07/26(水) 21:25:55.76ID:cdUQ14Vj
>>106
なんか宣言っぽく見えるよね。

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

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

C++は糞だな。

110デフォルトの名無しさん2017/07/27(木) 06:22:38.44ID:tCxrViSf
同意

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

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

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

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

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

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

116デフォルトの名無しさん2017/07/27(木) 19:41:35.37ID:nKOoAa+D
無いの?

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

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

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

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

http://www.honmotakeshi.com/archives/51758414.html

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

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

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

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

124デフォルトの名無しさん2017/07/28(金) 08:34:52.56ID:oIFva6g9
わざとじゃねーの?

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

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

127デフォルトの名無しさん2017/07/28(金) 14:08:59.02ID:IiZPJKRx
バイナリファイルについて質問します
変数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にもそれぞれ専用のファイルポインタを用意して
それぞれ個別に書き出すことしかできないんでしょうか?

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

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

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

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

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

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

133はちみつ餃子 ◆8X2XSCHEME 2017/07/29(土) 08:10:20.47ID:HavpCAcr
>>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; });

みたいな感じ。

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

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

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

137デフォルトの名無しさん2017/07/29(土) 08:27:01.28ID:N+YJafLA
forで回した方が良い

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

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

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

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

141はちみつ餃子 ◆8X2XSCHEME 2017/07/29(土) 09:35:15.24ID:HavpCAcr
せやな。
名前重要。

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

143デフォルトの名無しさん2017/07/29(土) 10:19:10.90ID:zJVnUUbX
>>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);
}

144デフォルトの名無しさん2017/07/29(土) 11:11:01.24ID:cYfk9kB4
お題改変野郎おつ

145デフォルトの名無しさん2017/07/29(土) 11:14:07.65ID:zJVnUUbX
>>144
ん?
どこか違うっけ?

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

147デフォルトの名無しさん2017/07/29(土) 11:17:44.82ID:cYfk9kB4
>>145
>for(auto pair: map2){

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

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

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

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

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

ifのステートメントの中がひどい

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

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

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

156デフォルトの名無しさん2017/07/29(土) 12:16:28.94ID:qNmrQnXF
せやで

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

180デフォルトの名無しさん2017/07/30(日) 17:25:43.33ID:w5RmXCUD
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 を指定する意味はなんなんでしょうか?

181 ◆QZaw55cn4c 2017/07/30(日) 18:36:26.80ID:wjBL4Xoh
>>180
http://codepad.org/kjSkQNMa
これが望みの解かどうかはわからないが

182デフォルトの名無しさん2017/07/30(日) 18:49:49.76ID:xziOu8cb
>>181
なんでcoutでintにキャストしてんの

183片山博文MZ ◆T6xkBnTXz7B0 2017/07/30(日) 18:54:45.98ID:aW4ocSFO
>>180
MultiFuncを作った人にきけば?

184デフォルトの名無しさん2017/07/30(日) 18:57:01.02ID:wjBL4Xoh
>>182
>>180 に聞いて

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

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

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

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

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

189デフォルトの名無しさん2017/07/30(日) 21:42:16.93ID:IhAKIxVt
オマエ読み取れたの?

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

191デフォルトの名無しさん2017/07/30(日) 21:49:30.37ID:9ZftmVJd
業務ではよくあるよ。

バグか仕様か分らないっての。書いた本人は既にいなくて誰も答えを知らない。

192デフォルトの名無しさん2017/07/30(日) 22:21:43.69ID:pLyoXQEm
どこの業務だよ。仕様残せよ

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

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

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

196片山博文MZ ◆T6xkBnTXz7B0 2017/07/30(日) 22:37:32.57ID:aW4ocSFO
>>195
間違えました。すみません。

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

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

198片山博文MZ ◆T6xkBnTXz7B0 2017/07/30(日) 22:42:59.84ID:aW4ocSFO
そのインターフェース、なんか意味があるの?

199デフォルトの名無しさん2017/07/30(日) 22:49:59.18ID:hW0bjdhb
type erasureは意味違うけどね

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

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

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

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

204デフォルトの名無しさん2017/07/31(月) 07:41:44.42ID:2pZH8HVB
>>184
ごめんアンカミスだ

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

206デフォルトの名無しさん2017/07/31(月) 09:37:11.53ID:8MdXXwK/
ない

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

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

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

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

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

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

213デフォルトの名無しさん2017/07/31(月) 18:23:58.10ID:2pZH8HVB
>>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になる

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

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

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

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

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

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

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

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

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

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

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

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

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

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

224デフォルトの名無しさん2017/07/31(月) 20:05:38.00ID:9Hgupd7z
だからさわるなって

225 ◆QZaw55cn4c 2017/07/31(月) 21:11:41.06ID:VQaCNCGS
1の補数表現ですか,教科書には堂々と載るんですけど,実際には見たことないね‥

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

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

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

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

229片山博文MZ ◆T6xkBnTXz7B0 2017/07/31(月) 23:37:22.96ID:tXq0mJzu
「思念体同一視妄想」と名付けよう。

230はちみつ餃子 ◆8X2XSCHEME 2017/08/01(火) 00:01:32.28ID:J7NYj7Ga
思念体が滅びることはない……

死ねんたいwww

231デフォルトの名無しさん2017/08/01(火) 02:44:00.93ID:LRNcLEwd
なるほど・・さっぱりわからん

232片山博文MZ ◆T6xkBnTXz7B0 2017/08/01(火) 21:04:49.74ID:iBC54dHR
わからない
わからん
若卵
らんらんるー

233デフォルトの名無しさん2017/08/01(火) 21:55:28.88ID:J7NYj7Ga
わかんない → 和姦ない → 強姦ばかり

234片山博文MZ ◆T6xkBnTXz7B0 2017/08/01(火) 22:00:50.36ID:iBC54dHR
だじゃれモードかよ

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

236片山博文MZ ◆T6xkBnTXz7B0 2017/08/01(火) 22:12:21.56ID:iBC54dHR
#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;
}

237片山博文MZ ◆T6xkBnTXz7B0 2017/08/01(火) 22:15:21.90ID:iBC54dHR
C/C++では、2進数出力は少し難しい。ビット演算が必要になる。

238片山博文MZ ◆T6xkBnTXz7B0 2017/08/01(火) 22:20:52.25ID:iBC54dHR
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');
}
}

239片山博文MZ ◆T6xkBnTXz7B0 2017/08/01(火) 22:55:18.84ID:Oo5iWDLT
#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;
}

240片山博文MZ ◆T6xkBnTXz7B0 2017/08/01(火) 22:56:59.82ID:Oo5iWDLT
>>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;
}

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

242片山博文MZ ◆T6xkBnTXz7B0 2017/08/01(火) 23:19:17.88ID:Oo5iWDLT

243片山博文MZ ◆T6xkBnTXz7B0 2017/08/01(火) 23:26:14.17ID:Oo5iWDLT

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

245片山博文MZ ◆T6xkBnTXz7B0 2017/08/02(水) 00:33:11.36ID:hTaTWBJY
>>244
情報ありがとう。

246デフォルトの名無しさん2017/08/02(水) 17:58:47.10ID:denJnq0F
ぞいってなー

247デフォルトの名無しさん2017/08/02(水) 22:14:43.24ID:TeM237FQ
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 は何のインスタンスなんですか?回答宜しくお願いします。

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

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

250片山博文MZ ◆T6xkBnTXz7B0 2017/08/02(水) 22:35:13.01ID:tJX9Zx+g
教訓。生ポインターは使うな。std::stringやstd::vectorなどを使え。

251片山博文MZ ◆T6xkBnTXz7B0 2017/08/02(水) 22:46:24.97ID:tJX9Zx+g
resizeは、引数なしのコンストラクターでオブジェクトを作成して、それをvector内部にコピーする。
このコピーの際にコピーコンストラクターが使われる。コピーコンストラクターは記述されていないから、暗黙のものが使われる。
それはポインターの中身をコピーしていないから、問題がある。

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

253片山博文MZ ◆T6xkBnTXz7B0 2017/08/02(水) 22:59:09.90ID:tJX9Zx+g
代入の
CManiac& operater=(const CManiac& cm)
{
...
return *this;
}
も追加。

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

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

256片山博文MZ ◆T6xkBnTXz7B0 2017/08/02(水) 23:08:15.66ID:tJX9Zx+g
>>254
符号なし整数の比較が出来る。負の場合を考えずに済む。

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

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

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

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

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

262片山博文MZ ◆T6xkBnTXz7B0 2017/08/03(木) 00:37:28.83ID:YO3k3fE8
>>251
コピーコンストラクターじゃなくて、代入でした。すみません。

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

264ねこまじ2017/08/03(木) 00:45:34.22ID:t0J1S2SM
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に動画投稿したほうがいい
顔出したくないならラファエルみたいに仮面かぶればいい
手っ取り早く視聴数稼ぐには有名ユーチューバーへの物申す系動画がオススメ
ゲーム実況はニッチだから人気ユーチューバーのネタをパクればいい

265片山博文MZ ◆T6xkBnTXz7B0 2017/08/03(木) 00:48:11.43ID:YO3k3fE8
ってことは、C++11の場合は、
CManiac(CManiac&& cm)
{ ... }

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

266デフォルトの名無しさん2017/08/03(木) 00:48:42.44ID:cUZMqwjs
>>257
違うの?

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

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

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

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

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

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

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

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

275デフォルトの名無しさん2017/08/03(木) 20:21:13.08ID:D1Re6UdQ
%z と %d の差ですかい?

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

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

278デフォルトの名無しさん2017/08/03(木) 21:31:57.89ID:2WeFShGG
やったら破綻する

279デフォルトの名無しさん2017/08/03(木) 22:25:13.00ID:2WeFShGG
嘘ですサーセン

280デフォルトの名無しさん2017/08/03(木) 22:54:52.47ID:84Bc5dj3
>>273
そんな保証はないよ

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

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

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

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

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

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

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

287デフォルトの名無しさん2017/08/04(金) 08:47:48.89ID:Q7buFUOM
8、16でも前者でしょ

288デフォルトの名無しさん2017/08/04(金) 08:48:26.38ID:Q7buFUOM
push raxになる

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

305デフォルトの名無しさん2017/08/04(金) 19:22:07.45ID:PHBV9/TP
>>301
勉強になったわ

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

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

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

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

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

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

312デフォルトの名無しさん2017/08/04(金) 20:27:46.30ID:fFEm/UGM
floatやdoubleが混ざれば

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

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

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

315デフォルトの名無しさん2017/08/05(土) 01:36:09.75ID:AmDvMFkm
Transact-SQLとかのことか?

316はちみつ餃子 ◆8X2XSCHEME 2017/08/05(土) 02:01:06.28ID:mmL6pr8y
Linq とか

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

318デフォルトの名無しさん2017/08/05(土) 17:30:23.26ID:eD6LHYAo
>>293
そりゃそうか
失礼しました

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

320デフォルトの名無しさん2017/08/06(日) 16:33:45.26ID:k6XOSsfa
ORまっぱ

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

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

323デフォルトの名無しさん2017/08/08(火) 21:38:02.52ID:9+bCDZAx
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と等価ではない?
どういうことッスか?なんかよー分からんです。

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

325はちみつ餃子 ◆8X2XSCHEME 2017/08/08(火) 22:10:21.09ID:FFmZneRO
誰もかれもがモダンな統合開発環境を使ってると思ったら間違いやで。

326片山博文MZ ◆T6xkBnTXz7B0 2017/08/08(火) 22:12:27.93ID:m3/ZcJyF
早くナウいモダンボーイになれよ

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

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

328片山博文MZ ◆T6xkBnTXz7B0 2017/08/08(火) 22:16:15.22ID:m3/ZcJyF
配列への参照というのが分かりにくいね。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

340はちみつ餃子 ◆8X2XSCHEME 2017/08/10(木) 13:19:12.39ID:eseR3mB4
せやろか

341デフォルトの名無しさん2017/08/10(木) 14:56:24.20ID:R7slyUqA
はいそうです

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

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

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

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

346デフォルトの名無しさん2017/08/10(木) 18:23:30.24ID:0YJhJ81N
>>344
ODR って何の略?

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

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

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

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

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

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

353デフォルトの名無しさん2017/08/11(金) 11:58:39.97ID:vOciZ7Dc
>>351
Aで詐欺でもしてるんですか?

354はちみつ餃子 ◆8X2XSCHEME 2017/08/11(金) 13:32:11.00ID:eZ0/1svY
さすがに #define は殺そう

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

356デフォルトの名無しさん2017/08/11(金) 14:29:14.52ID:Ngnf1AZe
知る必要すらない

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

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

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

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

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

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

363はちみつ餃子 ◆8X2XSCHEME 2017/08/11(金) 16:37:53.27ID:eZ0/1svY
>>361
だからそういうコンパイラを殺そうぜっていう話な

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

365デフォルトの名無しさん2017/08/11(金) 20:11:06.67ID:TX++PaV2
動的か静的かの違い?

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

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

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

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

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

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

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

372デフォルトの名無しさん2017/08/12(土) 08:43:37.90ID:4bZijuJS
光学メディアもROM、RAMか

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

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

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

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

377はちみつ餃子 ◆8X2XSCHEME 2017/08/12(土) 14:15:09.06ID:5zwa3GdH
>>376
いまどきの若者は CD も DVD も使わんのやで。

378デフォルトの名無しさん2017/08/12(土) 14:27:13.69ID:sYSoZbpb
CDROMなら知ってるよ

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

380はちみつ餃子 ◆8X2XSCHEME 2017/08/12(土) 16:26:44.03ID:5zwa3GdH
スマホの表記で ROM って言ってるの、そもそも ROM じゃないだろっていう。

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

382デフォルトの名無しさん2017/08/12(土) 18:25:30.05ID:Bi4KH0eW
フラッシュはROMの一種

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

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

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

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

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

388デフォルトの名無しさん2017/08/12(土) 22:41:10.73ID:KtFjlZWy
おおお
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);
//いろいろ計算
}
ダミーでインスタンス渡すってことなんだな

389デフォルトの名無しさん2017/08/12(土) 22:44:09.18ID:WjSPvpbD
friendの意味分かってる?

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

391デフォルトの名無しさん2017/08/12(土) 23:05:04.34ID:Bi4KH0eW
MRAMとかFRAMは不揮発

392デフォルトの名無しさん2017/08/12(土) 23:05:42.05ID:qm/cOPpP

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

394はちみつ餃子 ◆8X2XSCHEME 2017/08/13(日) 00:36:14.04ID:B4YDUmld
>>387
Read Only つってるのに、意味が拡大して結局それどういう意味なんだよっていう

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

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

397片山博文MZ ◆T6xkBnTXz7B0 2017/08/13(日) 01:59:58.88ID:8O7/DK3E
CでぇーROMまんてぃっく

398デフォルトの名無しさん2017/08/13(日) 06:29:34.48ID:03rMAOAx
>>395
それは違う

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

400デフォルトの名無しさん2017/08/13(日) 07:55:49.45ID:WSSr83j3
>>390
ReadOnlyMemory

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

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

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

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

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

406デフォルトの名無しさん2017/08/13(日) 10:37:54.73ID:TSMbvEPJ
組み込み経験と何の関係がw

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

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

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

409デフォルトの名無しさん2017/08/13(日) 11:20:22.74ID:md5XkZ0n
EEPROMはROMなのか?

410デフォルトの名無しさん2017/08/13(日) 11:31:45.02ID:HG5dPUko
不揮発性だけどROMでしょ

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

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

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

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

415デフォルトの名無しさん2017/08/13(日) 23:45:20.52ID:WikyJvVl
ん?天抜きとかたのまないの?

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

417デフォルトの名無しさん2017/08/14(月) 00:40:01.90ID:NpV9/t44
世の中知らんやつらが多いな

418デフォルトの名無しさん2017/08/14(月) 00:46:16.17ID:NpV9/t44
フラッシュもEEPROMもROMと呼ばれる
ROMの語源はRead Only Memory
でも、今は消去や書き込みが可能なメモリにも使われるようになった

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

そうでないものがROM
NAND, NOR, EEPROMなんかはROMという扱い

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

420デフォルトの名無しさん2017/08/14(月) 01:00:55.60ID:NpV9/t44
MRAMはROMか?
FRAMはROMか?

421デフォルトの名無しさん2017/08/14(月) 01:16:56.43ID:qET1a6fj
ROMです(俺の中ではね)

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

423デフォルトの名無しさん2017/08/14(月) 01:37:55.14ID:IeoGyZA4
もう少し役立つ話題にしろよ

424デフォルトの名無しさん2017/08/14(月) 04:51:13.03ID:qbtpazWw
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&のほうが呼び出されるのはなんででしょうか?

425デフォルトの名無しさん2017/08/14(月) 05:23:42.65ID:P3rVXCaa
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];
}

4264242017/08/14(月) 05:24:58.54ID:qbtpazWw
>>424
自己解決しました。

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

428デフォルトの名無しさん2017/08/14(月) 18:57:13.14ID:6kKovBuY
>>427
それではないです

429片山博文MZ ◆T6xkBnTXz7B0 2017/08/14(月) 19:38:37.75ID:0VcPF6xv
>>425
コンパイラーを変えてみたら?

430デフォルトの名無しさん2017/08/14(月) 20:02:20.41ID:cPbpYqjZ
↑バカ

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

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

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

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

435デフォルトの名無しさん2017/08/14(月) 23:12:49.50ID:G751meAI
でも2chだからなー

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

437デフォルトの名無しさん2017/08/15(火) 00:30:11.65ID:ILMibSrs
> block Error reading register value

これ何のエラー?

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

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

440デフォルトの名無しさん2017/08/15(火) 01:36:52.39ID:RtDnkjIA
スマポ使え

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

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

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

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

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

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

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

447デフォルトの名無しさん2017/08/15(火) 10:08:07.69ID:JqN6tr9G
それなら生ポで良いじゃん

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

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

450デフォルトの名無しさん2017/08/15(火) 19:01:49.84ID:Q70B1fQS
>>448
p = malloc()

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

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

452デフォルトの名無しさん2017/08/16(水) 00:01:22.48ID:2E64Am1a
あーやっと質問の意味が分かった
vectorをvectorごとアップキャストして別のvectorに代入するのか
そんなことしたいと思ったこともなかったから分からなかったわ
アップキャストするときにアドレスをオフセットしなきゃならない場合があるから
勝手にはしてくれないんじゃないかな
たしかC#は勝手にしてくれるんだっけか

453デフォルトの名無しさん2017/08/16(水) 00:25:49.33ID:2E64Am1a
なにか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専用ってことで良いんじゃないかな

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

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 )

の方が良いのかね

455片山博文MZ ◆T6xkBnTXz7B0 2017/08/16(水) 00:49:08.01ID:N/6IcKLl
x.assign(y.begin(), y.end());

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

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

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

4594572017/08/16(水) 16:17:21.15ID:mnlpMbS3
ありがとうございます

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

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

462デフォルトの名無しさん2017/08/16(水) 21:21:06.13ID:64ASz8nj
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();
では駄目なケースとかあるんですか?

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

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

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

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

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

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

469デフォルトの名無しさん2017/08/17(木) 02:50:59.58ID:POHMQxDJ
どっちもsize_tじゃアカンの?

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

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

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

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

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

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

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

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

478デフォルトの名無しさん2017/08/18(金) 08:25:33.13ID:jeMQJBsl
>>476
std::tupleでググれ

479デフォルトの名無しさん2017/08/18(金) 08:40:55.93ID:nZKbkzFD
いいかげんCとC++分けようぜ

480デフォルトの名無しさん2017/08/18(金) 09:18:42.99ID:tz1eiY37
>>476
有ります

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

500片山博文MZ ◆T6xkBnTXz7B0 2017/08/19(土) 12:35:47.59ID:cKMZzj+K
まだWindows XPを使っている人が居るかも知れないから。

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

502デフォルトの名無しさん2017/08/21(月) 08:26:40.74ID:zEm/QKUv
ruby はやめて python にするよ‥

503デフォルトの名無しさん2017/08/21(月) 16:02:51.68ID:ZisHBz7l
嫌、そこはALGOLだろう

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

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

506デフォルトの名無しさん2017/08/22(火) 11:29:16.92ID:KZ6Dh/Z1
>>504
java「呼んだ?」

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

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

509デフォルトの名無しさん2017/08/22(火) 21:27:29.17ID:hmTXL6wT
auto に問題があるの?

新着レスの表示
レスを投稿する