【初心者歓迎】C/C++室 Ver.99【環境依存OK】 [無断転載禁止]©5ch.io
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2016/07/22(金) 17:54:09.91ID:4Vpww6CBただしその場合、質問者は必ず環境を書きましょう。
◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。
【アップローダー】(質問が長い時はココ使うと便利)
http://codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
http://ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)
前スレ
【初心者歓迎】C/C++室 Ver.98【環境依存OK】
http://echo.2ch.net/test/read.cgi/tech/1464601947/
0002デフォルトの名無しさん
2016/07/22(金) 20:20:40.78ID:2geFXr7Sばーか、おせぇよ
0003デフォルトの名無しさん
2016/07/22(金) 20:26:50.85ID:hA1h7uZB0004デフォルトの名無しさん
2016/07/22(金) 22:27:40.55ID:ygakIBXL厳しい人だ
0005デフォルトの名無しさん
2016/07/23(土) 21:26:43.76ID:9xjE/VXj人々の記憶から無くならぬようアゲ
0006デフォルトの名無しさん
2016/07/23(土) 22:16:43.28ID:gWGXflXy0007デフォルトの名無しさん
2016/07/23(土) 22:17:02.10ID:hUG6LKaVわかる部分だけ使えばいいと言うひとが多いが、チーム開発で初心者もいる中、どーやって線引きすればいいの
テンプレートを少しでも使えば現場によっては
「あいつのプログラムは誰も読めない」になってしまう
0008デフォルトの名無しさん
2016/07/23(土) 22:45:54.83ID:N0ZB6gKO0009デフォルトの名無しさん
2016/07/23(土) 22:49:41.17ID:mN4MO6Sp禁止する必要はないと思ってる。
レビューして通らなければ直させるけど、それだけかな。
俺はダマで勝手に使ってるが、ちゃんと動いている限りは特に問題にならない。
0010デフォルトの名無しさん
2016/07/23(土) 23:50:16.34ID:S66Urcadからなんだろうな。
0011デフォルトの名無しさん
2016/07/24(日) 04:07:33.62ID:mZjT81w6よしレビューしてください
465 デフォルトの名無しさん (スプー Sdbf-oo3f) 2016/07/11(月) 11:14:36.90 ID:pIByFA2bd
char str[32];
…
throw std::runtime_error(str);
ローカル変数をruntime_errorに渡してスローしても平気ですか
0012デフォルトの名無しさん
2016/07/24(日) 07:37:38.74ID:L1GkLU8N0013デフォルトの名無しさん
2016/07/24(日) 08:30:08.42ID:EeZEhfSxそれ以上の実のある理由はない
0014デフォルトの名無しさん
2016/07/24(日) 11:10:04.72ID:LziQs2hgC++は嫌っているがGCC拡張には頼ってるし、
svnの「cvsをちゃんとする」ってスローガンに難癖をつけたけどgitの方がcvsにずっと近い。
0015デフォルトの名無しさん
2016/07/24(日) 11:20:40.89ID:jGV+QDTA0016デフォルトの名無しさん
2016/07/24(日) 11:53:02.06ID:AZC+VA3K0017デフォルトの名無しさん
2016/07/24(日) 12:43:04.79ID:ledPb1F8GCC拡張ェ……
https://cpplover.blogspot.jp/2013/04/llvmclanglinuxgcc.html
0018デフォルトの名無しさん
2016/07/24(日) 23:31:11.79ID:4tY2Sg6qtgmathとかマジウンコ
0019デフォルトの名無しさん
2016/07/25(月) 23:39:14.94ID:+5N+Apn4えらいことになっていた。
0020デフォルトの名無しさん
2016/08/01(月) 18:09:20.38ID:B541oVsdある.hの初期化が必要なのですが、データの初期化を
適当なクラスをつくり、コンストラクタに初期化コードを書く
グローバル変数としてそのクラスのオブジェクトを1個置く。
で、自動的に初期化されるようにしたのはいいんですが、
そのexeのHINSTANCEが必要なときは
どうやって参照すればいいんでしょうか。
コンストラクタはWinMainの実行前に実行されるようなので
WinMainの引数をどこかのグローバル変数にコピーできません。
どこかにHINSTANCEを持つグローバル変数ってVCにあるんでしょうか。
詳しいかたお願いします。
0021デフォルトの名無しさん
2016/08/01(月) 18:15:08.35ID:SASBJwL+スタートアップ部分のソース追っかければわかるけど WinMain に渡ってくるものはソレ
0022デフォルトの名無しさん
2016/08/01(月) 18:24:22.57ID:B541oVsdとても助かりました。
0023デフォルトの名無しさん
2016/08/02(火) 20:42:30.57ID:kV5lRNvj腑に落ちない感じがあります。
newを使うならbad_allocに備えなければならない、とも書かれていますが
今までにnewを書くたびにtry〜catchで囲んでるプログラムを見たことがないですし、必要になったこともありません。
そんなに例外って発生するものなんでしょうか?
0024デフォルトの名無しさん
2016/08/02(火) 21:03:36.16ID:cf3BF6/s0025デフォルトの名無しさん
2016/08/02(火) 21:15:34.95ID:3HahnRbz0026デフォルトの名無しさん
2016/08/02(火) 21:18:38.72ID:wIxkG2HJ「万が一発生しても問題の無いようにする」
という話を100万回しても>>23は同じ質問を繰り返すことだろう
0027デフォルトの名無しさん
2016/08/02(火) 21:36:38.59ID:kV5lRNvjint main()
{
int* pi = new int(42);
std::cout << *pi;
delete pi;
return 0;
}
このくらいのプログラムでもtry〜catchを書いてないから正しくないプログラム?
ほんまかいな
0028デフォルトの名無しさん
2016/08/02(火) 21:40:13.38ID:NfCSYQH6何がpiなんだよwww
0029デフォルトの名無しさん
2016/08/02(火) 21:45:58.47ID:H8tkSKeA0030デフォルトの名無しさん
2016/08/02(火) 21:49:50.22ID:xLqDdyJuint *pi = new int;
程度の処理でも例外が発生する可能性を考えて
みんなプログラミングしてるのね
はぇ〜知らんかった。
0031デフォルトの名無しさん
2016/08/02(火) 21:58:18.08ID:3HahnRbzただ nothrowにするんだっけかな。めんどくさ。
0032デフォルトの名無しさん
2016/08/02(火) 22:12:08.20ID:jbpKST8wPointer to Integer だろ
0033デフォルトの名無しさん
2016/08/02(火) 22:15:22.72ID:LORCbF1r本はそりゃちゃんと例外を想定知ろって書くけど
実際にプログラム組むときは自分の裁量で状況に合わせて判断するってそれだけでしょ
現実としていちいち気にしてたらきりないし
0034デフォルトの名無しさん
2016/08/02(火) 22:33:19.51ID:m6YD+pzDきりがないと妄想してしまう自分のオツムに落ち度がある
という発想には至らなかったようた
0035デフォルトの名無しさん
2016/08/02(火) 22:42:27.85ID:jbpKST8w対処するかとかどんな対処するかは状況次第だけど
0036デフォルトの名無しさん
2016/08/02(火) 22:47:46.55ID:kBbPvS1uこれで事足りるだろう。
0037デフォルトの名無しさん
2016/08/02(火) 22:47:55.92ID:m6YD+pzD状況に依存した選択の余地があることの方が珍しい
0038デフォルトの名無しさん
2016/08/02(火) 22:59:49.20ID:vy0RjdVzどちらにせよメモリが足りなかったらエラーが出るんじゃないか?
解放しなかった(delete piが呼ばれなかった)から問題だ、
とか、そういうのでなければ。
まあ、それで言うとnewでNULLが返ってきた時点でdeleteなんて
呼ばなくていいというか、呼んだらエラーが逆に出そうだから
その時点で意味のない例ってことになりそうだが。
0039デフォルトの名無しさん
2016/08/02(火) 23:01:44.58ID:LE7ByEbd0040デフォルトの名無しさん
2016/08/02(火) 23:19:16.69ID:m6YD+pzD>とか、そういうのでなければ
一番の本質のみを考慮から除外するとはいったい何を言っているのか
と思ったが、どうやら
『newを使うならbad_allocに備えなければならない』の意図を大きく勘違いしている。
きっととんちんかんな場所をtryで囲っているに相違ない
0041デフォルトの名無しさん
2016/08/02(火) 23:32:12.30ID:vy0RjdVz{
int* pi = new int(42);
try{
int* err = NULL;
*err = 0;
}
catch(...){
delete pi;
throw;
}
delete pi;
return 0;
}
たぶんこんなコードにしろっていうんだろうな。
__finallyは使わないのでこんな感じ。異論は認めるが。
0042デフォルトの名無しさん
2016/08/02(火) 23:41:31.50ID:vy0RjdVzhttp://www.ne.jp/asahi/hishidama/home/tech/vcpp/seh.html#h2_SEH_destructor
>ただし、関数内のオブジェクトのデストラクターは呼ばれない。
これがあるので、__finallyはまったくといっていいほど意味をなさなくなる。
void Func(int n){
string buf = to_string(n);
int* err = NULL;
*err = 0;
}
__try内でFuncを呼び出したら、piは__finallyで解放されるが、bufが解放されない。
0043デフォルトの名無しさん
2016/08/03(水) 00:03:56.67ID:y3itLeKx0044デフォルトの名無しさん
2016/08/03(水) 00:39:30.08ID:OT3xj33yC++の例外の話をしてたと思うのだけど、なんで突然Windowsの構造化例外の話になったん?
参照元に
>>デストラクターを呼ばせたいなら、通常のC++例外処理を使う。
と書いてあるとおり、
C++の例外が有効でbufがstd::stringならbufのデストラクタが呼ばれるよ
0045デフォルトの名無しさん
2016/08/03(水) 01:03:32.49ID:o77xN4AHと、思っていたが
C++だとnull pointer exceptionは無いから、*err = 0の時点でプログラム落ちるんじゃ
それで構造化例外なのか?
0046デフォルトの名無しさん
2016/08/03(水) 06:13:54.95ID:MT9b5NdH0047デフォルトの名無しさん
2016/08/03(水) 09:21:18.52ID:4vVPjgxQint *pi;
try {
pi = new int(42);
}
・・・
ならわかるがなぜ外で
new失敗した時のセオリーってなんなん
ハンドラー?
try catch?
0048デフォルトの名無しさん
2016/08/03(水) 09:24:17.07ID:GhfDA7Fy>>41が正しいtryの位置。
『newを使うならbad_allocに備えなければならない』の意図を読み違えるとこうなる
0049デフォルトの名無しさん
2016/08/03(水) 09:39:35.27ID:4vVPjgxQなら前後の文が無いからそもそも意図を読み取るのは不可能
0050デフォルトの名無しさん
2016/08/03(水) 11:12:31.24ID:p1E07Fs+正直使った事ないんで。
0051デフォルトの名無しさん
2016/08/03(水) 12:44:35.59ID:rpffj3+h0052デフォルトの名無しさん
2016/08/03(水) 12:48:55.25ID:jT3/wbavstd::make_unique
std::make_shared
でOK
配列ならstd::vector使えばよろし
0053デフォルトの名無しさん
2016/08/03(水) 12:50:26.85ID:4vVPjgxQ0054デフォルトの名無しさん
2016/08/03(水) 15:47:07.42ID:p1E07Fs+0055デフォルトの名無しさん
2016/08/03(水) 18:04:12.47ID:GhfDA7Fy昨日は配列じゃないものにまでvectorを使おうとする低能がいたな
0056デフォルトの名無しさん
2016/08/03(水) 18:34:20.33ID:GhfDA7Fy>new失敗した時のセオリーってなんなん
セオリーは例外中立・例外安全。
それを低レベルで達成した例が>>41。
高レベルで達成するためのヒントが>>51-52
まあ>>41のヌルポインターの例は良くないな。
オリジナルの『std::cout << *pi;』と書くべき
0057デフォルトの名無しさん
2016/08/03(水) 20:56:42.26ID:4vVPjgxQ面倒だと思ったらスルーしてね
>>41 > int* pi = new int(42);
が失敗したらその時点で落ちるんじゃ?と思うんだけどどうなってるん
try catchは成功しないと処理されないからいらなくね?っていう
0058デフォルトの名無しさん
2016/08/03(水) 22:00:42.64ID:H8VYOBrX確保したリソースを必ず解放する、というコンセプトが>>41
new int;
の代わりに
Bmp = CreateCompatibleBitmap(SrcDC, 1, 1);
とかにしても同じようなコードを書くことになるぞ。
DCとか使う場合に頻出する。
いまどき使うことない?まあそう言うな。
0059デフォルトの名無しさん
2016/08/03(水) 22:09:44.32ID:tgSAPtmr後int *err = NULL; *err = 0;は何で調べたら何をしてるかわかる?
生成破棄を対応させろってのはわかるよ
0060デフォルトの名無しさん
2016/08/03(水) 22:13:05.64ID:wmDQLAzI>失敗したらその時点で落ちるんじゃ?
もろちん
>と思うんだけどどうなってるん
どうもなっていない。途中で失敗して処理が全うできないなら落ちるしかない
>try catchは成功しないと処理されないからいらなくね?
目的が違う
void f() {
int *p=new int(42);//ここの失敗は呼び出し元が気にすること。
// この関数fの知ったことではない
try { // このtryは
cout << *p; // ここの失敗に対処するためのもの
}
0061デフォルトの名無しさん
2016/08/03(水) 22:15:17.65ID:H8VYOBrXnewは成功する。try内でエラーが起きたときにエラーにかかわらず
newしたポインタをdeleteするためにtry catchはある。
2行目は、やってる意味がわからないってこと?
実際にやってみればわかるが、アクセス違反が起こって構造化例外が発生する。
例外が処理されなければアプリが落ちる。
0062デフォルトの名無しさん
2016/08/03(水) 22:34:49.18ID:p1E07Fs+どうなるかわからんって事?
0063デフォルトの名無しさん
2016/08/03(水) 22:35:39.20ID:fJKhNvbj0064デフォルトの名無しさん
2016/08/03(水) 22:38:18.48ID:o77xN4AH0065デフォルトの名無しさん
2016/08/03(水) 22:45:35.02ID:o77xN4AHでも、なんでわざわざ構造化例外使うの?
「ここで例外出しますよ」のコード例なら
throw std::exception
とか
throw 0
でいいじゃん
0066デフォルトの名無しさん
2016/08/03(水) 22:47:49.01ID:wmDQLAzIじつは41は昨日構造化例外を勉強した。
みんなに知って欲しくて紹介した。
会話の流れ?何それ
0067デフォルトの名無しさん
2016/08/03(水) 23:08:20.16ID:hmyyhmNmset_new_handler使うとか
構造化例外は使う必要ないだろ
0068デフォルトの名無しさん
2016/08/03(水) 23:12:45.24ID:wmDQLAzI0069デフォルトの名無しさん
2016/08/04(木) 00:49:03.67ID:JEaaydTi0070デフォルトの名無しさん
2016/08/04(木) 01:44:12.20ID:N4vw+za7例外は捕捉せんとあかんわけね。
0071デフォルトの名無しさん
2016/08/04(木) 01:48:29.00ID:r0NDF1ZQbad_alloc頻発するほど大きなデータ扱うアプリ以外は気にしなくていいのでは?
通常bad_alloc出るってよっぽどの事態だと思うけど
0072デフォルトの名無しさん
2016/08/04(木) 05:39:39.61ID:SDP3HVR0あぁ俺がなぜ理解できないのかわかった
mainに書かれてるからだ
func内でnewしたポインタがいらなくなる場合はfunc外に出る前に必ず開放しろよってかそれはわかったけど
>>60 > cout << *p; // ここの失敗に対処するためのもの
これ失敗するならnew失敗して落ちるからやっぱtryはいらなくね?
>>61
と思ったけどわざと違反起こす処理を書いて
「別の処理で例外発生したら必ず開放しろよ」って意味ならわかった
*err = 0;の部分ね
0073デフォルトの名無しさん
2016/08/04(木) 05:47:40.42ID:w3J0CztI例外発生ー>素直に止める
例外発生ー>状態を説明して止める
例外発生ー>代替手段があるのでログに残して復旧
とりあえず動けばよい
クリティカル部分が複数あるので状況が知りたい
なるべく止めたくないので十分な予備手段が用意してある
0074デフォルトの名無しさん
2016/08/04(木) 06:37:53.58ID:lGnnrOsl俺が『cout << *p; // ここの失敗』と書いたのは
デリファレンス「*p」ではなくて「operator<<
」なのだが。
operator<<の中では書式出力のためにメモリ等を動的確保したりして例外が出ることがある
0075デフォルトの名無しさん
2016/08/04(木) 09:03:20.04ID:zv/F9EVu0076デフォルトの名無しさん
2016/08/04(木) 09:15:55.21ID:ZweTvWs4f() の記述中に new してるなら f()の呼び出しで囲え と
0077デフォルトの名無しさん
2016/08/04(木) 09:57:20.39ID:IdNDvss6例外が発生するからって、 catch する理由が無けりゃ try で囲う必要なんて無いんだぜ。
0078デフォルトの名無しさん
2016/08/04(木) 10:02:06.45ID:+ZxmiSQhつまりnew失敗するような時は落としてしまえばいいと?
0079デフォルトの名無しさん
2016/08/04(木) 10:05:28.64ID:IdNDvss6落としていいなら catch しなくていい。
0080デフォルトの名無しさん
2016/08/04(木) 14:41:51.61ID:B4wdumNNいや、いちおうcatchして 「タスケテ・・・」 ってログに書くよ。
0081デフォルトの名無しさん
2016/08/04(木) 14:44:24.75ID:bxLRjhTY0082デフォルトの名無しさん
2016/08/04(木) 15:08:19.00ID:TXv7Ibp+この処理で例外が発生したことがある人、この世に存在するの?
いたら教えて
0083デフォルトの名無しさん
2016/08/04(木) 15:10:36.67ID:m4SZWNv20084デフォルトの名無しさん
2016/08/04(木) 15:51:49.25ID:0bCYfXxC0085デフォルトの名無しさん
2016/08/04(木) 15:56:01.49ID:B4wdumNN俺ですらやったことはあるし、 この世限定でならいっぱいいると思う。
0086デフォルトの名無しさん
2016/08/04(木) 18:55:29.85ID:10JPHxlsたまたまnewを中で囲う必要が無い例だっただけだろ
void f() {
int * p1 = new int;
int * p2 = new int;
delete p2;
delete p1;
}
だったら中で囲う必要がある
0087デフォルトの名無しさん
2016/08/04(木) 19:11:51.96ID:Wyyp2EkrPostMessageを監視するのがコツ
0088デフォルトの名無しさん
2016/08/04(木) 19:25:22.33ID:m4SZWNv2void f() {
int *p1 = new int;
delete p1;
}
これでもnew失敗したら落ちるやん?
try {
f();
}
catch(...) {}
これなら1つ目のnewはtryいらんのか?いるやろ?
0089デフォルトの名無しさん
2016/08/04(木) 19:50:18.01ID:ZDw9p1cWまあ、初心者歓迎ってあるからこんな突発的な質問も許してくれ。
メッセージの流れを確認したいんだけど、
皆さんどうやってデバッグしてますか?
ちなみに私の環境はVS2015 Express(のC++)
やりたいことは、ボタンにスペースキーを押すとクリックイベントが発生しますが
どうやって生成されているのか知りたいのです。
WM_KEYDOWNメッセージのキーコードを
VK_RETURN(クリックされない)からL' 'に書き換えてみたんだけどクリックが発生しなかったので、どこで処理してるのかなと思って
調べたいんですが・・・
もしかしてVK_SPACEってL' '(32)じゃないとか。
それに、メッセージの流れがわからないとデバッグにいろいろ不便で困ってるので。
0090デフォルトの名無しさん
2016/08/04(木) 19:58:45.00ID:ZDw9p1cWでも、デバッグの方法は知りたいので教えてもらえれば助かります。
009186
2016/08/04(木) 20:03:36.49ID:xD/P91aq>これでもnew失敗したら落ちるやん?
落ちるかどうかはこのコードだけでは判断できないぞ
>1つ目のnewはtryいらんのか?いるやろ?
いや一つ目のnewに対するtryは不要だと思うのだが
0092デフォルトの名無しさん
2016/08/04(木) 22:38:42.73ID:N4vw+za70093デフォルトの名無しさん
2016/08/04(木) 23:11:08.34ID:xD/P91aq0094デフォルトの名無しさん
2016/08/04(木) 23:49:16.12ID:r0NDF1ZQnew intはまず書かないけどな
0095デフォルトの名無しさん
2016/08/05(金) 01:37:23.44ID:h9gyRaS3実際は unique_ptr とか使うから、やっぱり書かないよ。
0096デフォルトの名無しさん
2016/08/05(金) 02:58:46.58ID:riQ7lTBs0097デフォルトの名無しさん
2016/08/05(金) 04:23:24.70ID:pznsau1Rその定義でスタックが溢れたら落ちる
まずないだろうけど
0098デフォルトの名無しさん
2016/08/05(金) 07:45:20.82ID:3ew4HwfD今でも有効な金言のはずだけど、大きさの範囲は往時と桁違い。
0099デフォルトの名無しさん
2016/08/05(金) 07:50:21.51ID:2RfJu/6Kそれすら失敗する状況があったから
PostMessageさんは生まれたんだぞ
0100デフォルトの名無しさん
2016/08/05(金) 08:56:17.95ID:ImN4X8Nuf() 1つめのnewが失敗したら外のcatchが捕まえるんか
同じ階層にtry catchいるんかと思ってたわ
同じ階層で処理する必要が無かったら外に任せていいんやな
0101デフォルトの名無しさん
2016/08/05(金) 08:57:50.95ID:ImN4X8Nu中で捕まえて戻り値で示した方がよくね?
0102デフォルトの名無しさん
2016/08/05(金) 11:34:11.43ID:pznsau1R実用上どうかは別だけど
0103デフォルトの名無しさん
2016/08/05(金) 13:29:14.93ID:ccW8btWEいわゆるprintfデバグみたいに要所にログ出力を仕込んでいる。
但し出力先はファイル。Windowsイベントやsyslogでもいいかも
IDEのデバッグ機能(ブレイクポイントとか)はあまり使わない
010496
2016/08/05(金) 15:48:33.99ID:riQ7lTBsどこまでケアするか悩みますなぁ。
0105デフォルトの名無しさん
2016/08/05(金) 23:11:36.86ID:KuwiCwk0例外処理に「どこまで」「ケア」という考えが有るとは知りませんでした
0106デフォルトの名無しさん
2016/08/05(金) 23:21:48.06ID:1l5AtzWC0107デフォルトの名無しさん
2016/08/06(土) 01:49:36.24ID:XuwJzMZr人それぞれみたいだな。
0108デフォルトの名無しさん
2016/08/06(土) 02:22:39.53ID:GoVmW8ok0109デフォルトの名無しさん
2016/08/06(土) 03:04:54.83ID:4Cqooj0F0110デフォルトの名無しさん
2016/08/06(土) 05:41:33.36ID:KaV1ESpO例外はもともと、対処を上位コンテキストに委ねるためにわざわざ例外を漏らすものなのに、
すぐに捕捉する方がより良いと勘違いしてしまったから「どこまで」という珍妙な考えに至るんだな。
しかもそれを「例外安全に向けた努力どこまでするか」にすりかえているからたちが悪い
0111デフォルトの名無しさん
2016/08/06(土) 07:17:25.33ID:gji7A/0Hこの部分は代替処理を用意したのでログを残してリカバリーしますな使い方じゃないの
それ以外の部分はどうにもならない
通常の四則演算でもうっかりオーバーフローさせて計算結果が変とか
ここら辺は事前に想定と検査が必須だし
0112デフォルトの名無しさん
2016/08/06(土) 07:28:04.31ID:CxdQuwcg0113デフォルトの名無しさん
2016/08/06(土) 14:23:28.69ID:nmPW5pwo0114デフォルトの名無しさん
2016/08/06(土) 16:37:41.98ID:BjaX+hYV俺もどこまでケアするか悩むんだけど
例外によっては可能な限りアプリを安全に終了させないといけなかったり、
処理をリトライしたり。
あと、ログと例外処理は分けて考えて方がよくないか?
絶対セットになってると思うけど。
0115デフォルトの名無しさん
2016/08/06(土) 16:40:57.40ID:CIMwAPv10116デフォルトの名無しさん
2016/08/06(土) 17:16:25.01ID:BjaX+hYVそれでアプリを正常終了させることを要求されるならそれでいいんじゃない?
仮に例外でプログラムがクラッシュしてもデータや機器が破損せず、
プログラム再起動で問題なく動作再開できる状態になるなら、 それでも良い世界があるかもしれないし。
0117デフォルトの名無しさん
2016/08/06(土) 17:57:39.04ID:h7DnkLluつ http://www.nurs.or.jp/~sug/soft/super/longjmp.htm#sec36
0118デフォルトの名無しさん
2016/08/07(日) 20:22:15.39ID:0UTNB4TKたぶんWM_DESTROYがPostされるだけだと思うんだが・・・まあそれはいいか。
それにしても、例外がなかったかのように動作するアプリを作りたいと
思ってるやつは多いようだが、
エラーはエラーとして表示してくれないと困ると思うぞ。
0119デフォルトの名無しさん
2016/08/07(日) 21:05:36.22ID:sQIJPt7Ytry catch はシグナル処理みたいなもんだと思っております。
VC6は使えますけど、もう忘れましたw
0120デフォルトの名無しさん
2016/08/07(日) 22:08:15.77ID:Ww4KrQ/zだーかーら、WM_CLOSEはダメらしいよ
0121デフォルトの名無しさん
2016/08/07(日) 22:14:54.96ID:Y+04W+Li例外発生が即プログラムのエラーになるとは限らないし、
何でもかんでもダイアログで表示されたら煩わしくないか?
自動で復帰できるならメッセージ表示しなくてもいい。ログは記録した方がいいけど。
プログラムのユーザのレベルとか、UXも絡んでそうだからひとくくりには出来ないと思うよ。
0122デフォルトの名無しさん
2016/08/07(日) 22:34:58.56ID:FG1Pf9CO「エラーはエラーとして表示してくれないと困ると思うぞ」
↓
「復旧出来ないも有るんだから、そういうエラーはエラーとして表示してくれないと困ると思うぞ」
0123デフォルトの名無しさん
2016/08/08(月) 00:39:47.88ID:FOEjBVJr0124デフォルトの名無しさん
2016/08/08(月) 00:48:47.48ID:TzS/bNsO0125デフォルトの名無しさん
2016/08/08(月) 01:21:40.28ID:TzS/bNsO適切にエラーを通知(throw, メッセージ表示など)するためには、
例外をどこで処理するか考える必要があるんじゃないの?
0126デフォルトの名無しさん
2016/08/08(月) 06:05:24.79ID:7KF+UP9b特権もなく動作するコマンドラインのアプリならキャッチせずそのまま終了させてログもOS側に任せてしまうとか。
0127デフォルトの名無しさん
2016/08/08(月) 06:48:14.77ID:B47R2annだめ
> メッセージ表示など)するためには、
>例外をどこで処理するか考える
お前は「プログラムをコンパイルするにはコンパイラーの動きを考えてソースを書かないといけないので、コンパイルとはソースを書くことも含む」とか言い出しそう
0128デフォルトの名無しさん
2016/08/08(月) 08:49:45.73ID:TzS/bNsO明確に書いてくれよ、例外処理はcatchだけを指すのか、
そこでの復帰処理も含むのか?
例外をrethrowすることは含むのか?
rethrowする際にエラー内容を収集することは含むのか?
あとコンパイルにコーディングは含まないと思うよ。
コーディング作業にコンパイル作業は含むかもしれないけど
0129デフォルトの名無しさん
2016/08/08(月) 10:59:49.24ID:B47R2ann>例外処理はcatchだけを指すのか
No
>そこでの復帰処理も含むのか?
Yes
>例外をrethrowすることは含むのか?
Yes
>rethrowする際にエラー内容を収集することは含むのか?
Yes
0130デフォルトの名無しさん
2016/08/08(月) 11:51:41.08ID:179Py0K/0で割ると強制的に例外が発生するけど
整数の加減乗算だとオーバーフローが起きてもスルーだよね
マジメに検査すると処理コストがバカに出来ない
例外処理も同じで、不安定さが予想される
例外状態を検出して改善したい
エラーがある確立で確実に発生するので対処したい
目的に応じて対処方法が異なる
あと、アプリケーションでnewなんて使わね〜よは新鮮だった
目的に応じコーディング上の不安定要因を排除しつつ、必要であれば例外検出も組み込む
ここら辺の切り分けが出来ない場合、そもそも君は何を目的にコード書いているの?って話だろ
0131デフォルトの名無しさん
2016/08/08(月) 12:29:07.89ID:TzS/bNsOじゃあ127のだめってなんだよ?
0132デフォルトの名無しさん
2016/08/08(月) 12:35:29.00ID:TzS/bNsOその通りだと思う。
ただ、演算のオーバーフローが致命的な問題かもしれなから、コストかかっても検査しなきゃならない場合もある。
あと、多分newなんて使わねーよってのはスマートポインタ使えってことだろ。
ついでなんで、scope_exitも役に立つことを書いておこう。
0133デフォルトの名無しさん
2016/08/08(月) 13:24:40.61ID:B47R2annん? ↓の★のことだが
auto my_throw() {throw int{};}
auto f() {
try {my_throw();}//例外をスローする★
catch(...) {my_throw(); }//例外を処理する(その内容がたまたま例外スロー)
}
0134デフォルトの名無しさん
2016/08/08(月) 14:20:57.92ID:B47R2ann>0で割ると強制的に例外が発生するけど
そんな、処理系依存のことをさも普遍的であるかのように語られても
>整数の加減乗算だとオーバーフローが起きてもスルーだよね
そんな、符号の有無によって状況が異なるものを一括りにされても
0135デフォルトの名無しさん
2016/08/08(月) 16:23:34.53ID:8H2VF6DU0136デフォルトの名無しさん
2016/08/08(月) 18:59:35.32ID:TzS/bNsO125からなぜそう解釈されたのか意味がわからんのと、
my_throwの存在意義がわからんけど、
int compute(int n) throw(exception) {
int temp[n]; // bad_allocになるかも、ここでは無視する
int result = hoge(temp, n);
if (result == 0) { throw runtime_error("failed"); }
return result;
}
int caller() throw(my_exception) {
try { return compute(100000); }
catch (const bad_alloc& e) { terminate(); } // もう無理
catch (const exception& e) {
log(e.what(), __LINE__, __FILE__); // ログ残して
throw my_exception(current_exception(), __LINE__, __FILE__); // 上位に教えてあげなきゃ
}
}
突っ込みどころあると思うけど、で、例外処理っていうのは、
catchする側の処理と、throwする側の処理の両方を含むってことで、
catchする側はどんな例外をcatchして何をするとか、
throwする側はどんな例外を投げるべきなのか考えるのでは?
0137デフォルトの名無しさん
2016/08/08(月) 19:09:20.00ID:Rfn+vLgM0138デフォルトの名無しさん
2016/08/08(月) 19:35:54.75ID:/nbVco2Gそれに加えて、可能なら catch しないでそのまま上に任せられるように書けないか考えるってのもある。
途中で失敗したとき catch して delete しないで良いようにポインタを unique_ptr に入れとくとか、mutex のロックはロックオブジェクトのデストラクタで解放されるようにするとかそういうの。
0139デフォルトの名無しさん
2016/08/08(月) 20:13:41.95ID:TzS/bNsOところで longjmp 推しの人に尋ねたいんだけど、
longjmp した場合ローカルスコープのデストラクタ発生するんですか?
0140デフォルトの名無しさん
2016/08/08(月) 20:49:31.20ID:G4IdvMIkなにそれ美味しいの?
C言語
0141デフォルトの名無しさん
2016/08/08(月) 21:06:41.99ID:B47R2annもう糞コードの予感しかしない
0142デフォルトの名無しさん
2016/08/08(月) 21:08:39.66ID:B47R2ann呼ばれないな。
デストラクターの呼び出しは言語レベルのサポートが必要だから
ライブラリや関数では無理だろう
0143デフォルトの名無しさん
2016/08/08(月) 21:14:41.58ID:B47R2ann『例外処理っていうのは(略)』
全くその通りだと思うが、それと>>125の話に何の関係が。
そういや>>125から>>128にかけて表現が「例外を処理する(handle exception)」から「例外処理(exception handling)」に変わっているけどその影響か
0144デフォルトの名無しさん
2016/08/08(月) 21:55:44.76ID:yYicVjYE0145デフォルトの名無しさん
2016/08/08(月) 22:09:26.95ID:4LKdJSG5その昔、c言語にgosub return構造を って記事を読んだ記憶が
あるな。技術評論社で書いたのは平林氏だったかと
0146デフォルトの名無しさん
2016/08/08(月) 22:47:44.21ID:/nbVco2G0147デフォルトの名無しさん
2016/08/08(月) 23:51:04.63ID:bVjpaUT20148デフォルトの名無しさん
2016/08/08(月) 23:54:20.24ID:e2qvnoH00149デフォルトの名無しさん
2016/08/08(月) 23:58:19.07ID:YlbbT2Icgoogleは例外を使ってない古いコードをたくさん抱えてる
例外を使ってないコードと例外を扱うコードを混ぜて使うのは大変だから使わないっていう選択をしている
新規のコードでも例外使うなとは書いてないからね
0150デフォルトの名無しさん
2016/08/09(火) 00:08:36.24ID:NJpb4SWaC++ の話と違って悪いけど、Apple の Swift っていう言語ではフレームワーク(ライブラリ)のポインタ引数にエラーを返す関数を Swift 側では例外として処理するように書けるようになってる。
Obj-C で
[SomeClass add:hage error:&error]
if (error) ...;
を
do {
SomeClass.add(hage)
} catch let error as NSError {
...
}
と例外処理構文でかける。
好き勝手言語ならではの力技によるエラー戻り値と例外の統合。
0151デフォルトの名無しさん
2016/08/09(火) 00:14:47.26ID:HQF3JemY0152デフォルトの名無しさん
2016/08/09(火) 00:18:24.13ID:TFQX1mgVそれがおいしいと感じる人もいる
0153デフォルトの名無しさん
2016/08/09(火) 00:21:02.62ID:NJpb4SWaってか C++ 混ぜられる Obj-C++ がアップル用には最強。
0154デフォルトの名無しさん
2016/08/09(火) 01:44:16.59ID:lMOV9twn0155デフォルトの名無しさん
2016/08/09(火) 01:53:49.32ID:udl5axBYすまん c++ 好きなんだ。
0156デフォルトの名無しさん
2016/08/09(火) 02:10:20.54ID:HQF3JemY0157デフォルトの名無しさん
2016/08/09(火) 07:09:57.89ID:smg0QXvs実際のCのコードで表現するとかなり冗長で力技な部分、処理に高いコストを払っている
で、どうせ高いコストを払うのなら
>>150の
>C++ の話と違って悪いけど、Apple の Swift っていう言語ではフレームワーク(ライブラリ)のポインタ引数にエラーを返す関数を Swift 側では例外として処理するように書けるようになってる。
みたいに処理系が暗黙のテーブルなりフラグなりを生成管理して、見かけ上便利な表記をサポートする
そんな感じになる
だけど、感覚的に便利な表記の裏の実行コストは隠蔽されているので
実際に実行時間でのクリティカルな問題が起きるまで何処が問題なのかわからなくなる
便利な機能でコードを書きたいのなら、現在ではC++以外の選択が沢山あるよね
C#?
0158デフォルトの名無しさん
2016/08/09(火) 07:16:42.52ID:BF0nl6bY返す方の問題じゃなくて受ける方のエラーチェックが面倒だって話すら理解してないのかよ...
0159デフォルトの名無しさん
2016/08/09(火) 07:24:35.79ID:JS0TrNVx0160デフォルトの名無しさん
2016/08/09(火) 07:54:34.56ID:+N1v5n8J0161デフォルトの名無しさん
2016/08/09(火) 09:30:03.54ID:STmJmNt9「処理に高いコストを払っている」というけど正常パスでの時間的オーバーヘッドは無い実装がメジャーなわけで、
「どうせ高いコストを払うのなら」というような話にはならないと思うんだ。
0162デフォルトの名無しさん
2016/08/09(火) 09:31:43.59ID:FERoGXEy0163デフォルトの名無しさん
2016/08/09(火) 12:04:59.14ID:smg0QXvsあの〜、隠蔽されている部分があるので留意しましょうね程度の指摘なんですけど...
初心者を卒業した人は、色々意識しながら好きにしてくださいとちゃう?
シンタックスシュガーが良く出来ていてコーディングが快適な処理系は沢山でているし
便利なスクリプト言語も楽しいですし
0164デフォルトの名無しさん
2016/08/09(火) 12:49:20.64ID:lMOV9twn// errno 見て成功したか判断してね
int sum(int* values, int count);
とか
int sum(int* values, int count, int* errorCode);
はまあ良いと思うけど、
HRESULT sum(int* values, int count, int* result);
は嫌だな
0165デフォルトの名無しさん
2016/08/09(火) 13:42:50.72ID:i5d/RDSlID:STmJmNt9が不憫でならない
0166デフォルトの名無しさん
2016/08/09(火) 13:54:53.98ID:1Dh6XOYFその辺はHRESULT に統一されてるおかげで SUCCEEDED マクロ一発という楽ちん判定が出来るんじゃん。
int some;
if (SUCCEEDED(hoge(nanika, &some)) {
...
}
と。
0167デフォルトの名無しさん
2016/08/09(火) 14:06:09.56ID:kK7P+MyF戻りをそのまま連続して記述したいから?
foo(hoge())
これに、エラーを引き渡ようにして
foo(hoge(&hoge_err), &foo_err)
こうしたい? なんか違う感じだ
0168デフォルトの名無しさん
2016/08/09(火) 15:32:57.52ID:smg0QXvs処理に高いコストを払っているの下りはご認識って事だね、わかりました
0169デフォルトの名無しさん
2016/08/09(火) 15:43:12.20ID:lMOV9twnHRESULT hr = hoge(nanika, &some); // hoge(Nanika, int*)
auto some = hoge(nanika); // auto最高
if (some == -1) { // errno 見る
HRESULT hr = S_OK;
auto some = hoge(nanika, &hr); // auto最高
if (FAILED(hr)) { // 何かする
みたいな、例外の方がよりいいけど
0170デフォルトの名無しさん
2016/08/09(火) 18:01:40.23ID:A3T+miCG人によって結構好みが違うなあ。
0171デフォルトの名無しさん
2016/08/09(火) 22:44:43.67ID:BIg/3sRw一番最後の、hr に成功失敗が全く返されないことがあり、かつその場合は成功とみなして良いという(作る側の)仕様や(使う側の)仮定はあり得なくないか?
そんなの聞いたこともないしそうする利点も思いつかない。
0172デフォルトの名無しさん
2016/08/09(火) 22:50:22.50ID:i5d/RDSl「俺の脳みそありえなくね?」
になってしまうのだが、大丈夫ですか
0173デフォルトの名無しさん
2016/08/09(火) 23:15:29.41ID:k5+ib0A2ってのがどっから出てきたんだか。
0174デフォルトの名無しさん
2016/08/09(火) 23:48:00.35ID:G1EqcLtF0175デフォルトの名無しさん
2016/08/09(火) 23:52:29.31ID:lMOV9twnもしくは、
HRESULT hoge(HRESULT* error);
で、errorが更新されたことをreturnするしかないな。
別に、errorはHRESULTじゃなくても同じだけど。
やっぱエラーは例外でthrowして、結果をreturnする方が確実ッ!
0176デフォルトの名無しさん
2016/08/10(水) 00:30:18.62ID:apTclOZZという疑問があるんだが。まあ何をジャンプテーブルって言うのかちょっと微妙だけど。
switch文みたいなやつか?
あとひとつはジャンプテーブルってそんなにコストかかるのか?
WndProcなんかif文やジャンプテーブルの山だと思うけど。
0177デフォルトの名無しさん
2016/08/10(水) 04:19:31.33ID:bfwokPwT0178デフォルトの名無しさん
2016/08/10(水) 20:55:18.36ID:O/fexyuHsetjmp/longjmp
0179デフォルトの名無しさん
2016/08/10(水) 22:00:02.38ID:apTclOZZそれ、読んだけどあんまりよくわからなかった。
try catchの実装って
catchで呼び出される命令アドレスをスタックポインタにpushして
fsセグメントの0番地にそのスタックポインタのアドレスを
登録しているようなんだけど
それがsetjmp/longjmp?
xor eax, eax
push ebp
push 命令アドレス
push dword ptr fs:[eax]
mov fs:[eax],esp
まあ、jmpには違いないが。
0180デフォルトの名無しさん
2016/08/10(水) 22:30:05.59ID:YvoH2oZ/0181デフォルトの名無しさん
2016/08/10(水) 22:35:33.62ID:wzHKnkf30182デフォルトの名無しさん
2016/08/10(水) 22:47:13.55ID:54wHY0lO0183デフォルトの名無しさん
2016/08/10(水) 22:53:57.40ID:wzHKnkf30184デフォルトの名無しさん
2016/08/10(水) 23:26:10.34ID:6v8gmAa50185デフォルトの名無しさん
2016/08/11(木) 00:07:02.32ID:mjr+1oC8・throwのコードをコンパイルした時点では実際にスローされるクラスがまだ存在していない可能性がある。
・スレッド開始からthrowに至るまでに通るtry(に付いてるcatch)は実行時に決まる。
ジャンプテーブルでは無理だな。
戻り先情報を渡すlongjmpとは別物
0186デフォルトの名無しさん
2016/08/11(木) 01:13:26.55ID:NtYTAKcg2つ目は無いでしょ。結論は変わらんけど。
0187デフォルトの名無しさん
2016/08/11(木) 04:09:57.26ID:Oj+HuM4/fsはスレッドローカルストレージを指す
>>185-186
longjmp使ってtry catchもどきを実装できる
0188デフォルトの名無しさん
2016/08/11(木) 09:07:02.69ID:MxNORS6jそれがあるんだな
http://ideone.com/qJz9tq
fもf_callerも実際にスローされる型を知らない
0189デフォルトの名無しさん
2016/08/11(木) 15:18:59.24ID:NtYTAKcgなんか変に入り組んだ例だけど、単に throw; ならそうなるってことだね。なるほど。
0190デフォルトの名無しさん
2016/08/11(木) 22:30:01.49ID:MGxA7Inv
0191デフォルトの名無しさん
2016/08/12(金) 07:32:44.29ID:MLJoZofC0192デフォルトの名無しさん
2016/08/12(金) 08:45:06.21ID:V4dr4yFb0193デフォルトの名無しさん
2016/08/12(金) 11:32:10.03ID:1Oj5kyschttp://ideone.com/Peutpf
上記のコードでstd::sliceの組みを生成しています。
最初のスライスでk-1個の要素を選択し、次のスライスで1この要素を選択したいです。
上記のコードでは 1 2 3 4 5 2 3 4 と出力されていますが、期待する出力は 1 2 3 4 5 です。
どのように修正すれば期待する動作になりますでしょうか?
0194デフォルトの名無しさん
2016/08/12(金) 12:32:43.61ID:MLJoZofC(見えたら助けられるという宣言ではない)
0195デフォルトの名無しさん
2016/08/12(金) 12:55:03.52ID:1Oj5kyscすまん設定ミスってたわ
std::slice(k - 1,1,1); って1個の要素が選択されるんじゃないの?
出力がおかしくて意味が分からん。どこを直せばいいんだよ orz
0196デフォルトの名無しさん
2016/08/12(金) 14:01:53.58ID:MLJoZofC20. x = aa[p.second];
21. for(auto &elem : x) cout << elem << " ";
となってるところを
20. valarray<int> y = aa[p.second];
21. for(auto &elem : y) cout << elem << " ";
に変えてみ。
18.行で作ったx(要素は4個{1,2,3,4})に 20.行で要素1個{5}を先頭に入れても
残りの要素3個{2,3,4}は変化せずに残ってるのだと思われる。
0197デフォルトの名無しさん
2016/08/12(金) 15:01:29.03ID:A6nfo0WTvalarrayに補助配列系のオブジェクトを『代入』するときは双方の長さ(要素数)が等しくないと未定義動作
aa[p.second]は長さ1のslice_array<int>を返すので長さ4のxに代入すると未定義動作となり
期待と違う動作になっている
修正は>>196のようにvalarrayを新しく構築するか代入されるvalarrayの長さをresizeで変更しておく
0198デフォルトの名無しさん
2016/08/12(金) 15:30:14.59ID:5PVVdj86早すぎて自分の手持ちのソート法と比較になりませんでした。
このソート(AllaySort)って速い部類なんでしょうか?
ご教授お願いします。
0199デフォルトの名無しさん
2016/08/12(金) 16:24:59.76ID:1Oj5kyscありがとうございます。期待した動作になりました。
> valarrayに補助配列系のオブジェクトを『代入』するときは双方の長さ(要素数)が等しくないと未定義動作
なんという罠 orz
0200デフォルトの名無しさん
2016/08/12(金) 16:59:25.24ID:1Oj5kysc車輪の再発明おつ
早い部類に入るソートアルゴリズムだね
0201デフォルトの名無しさん
2016/08/12(金) 17:19:26.18ID:1cmLpCrQぱっと見だけど、バケットソートとかビンソートって呼ばれてるやつかな?
0202196
2016/08/12(金) 17:34:34.04ID:MLJoZofC「大きい配列の代入は自動的に拡張、小さい配列の代入は後半に前の状態が残る」
だと誤解していたよ。危ない危ない。
0203デフォルトの名無しさん
2016/08/13(土) 21:22:30.92ID:6HOeIx46アルゴリズムの教科書に全部載ってる。
バブルソートとクイックソートと、なんていうんだったっけ、
カウンティングソートとでも言うんだったかな。
この中ではいちばん速いね。最速に近いのでは。
ここに載ってないのはマージソートとヒープソートくらいかな。
クイックソートと同じくらいの速さだと思うけど。
0204デフォルトの名無しさん
2016/08/13(土) 21:41:16.48ID:6HOeIx46カウンティングとはいえないかもしれないけど変形ではあるね。
少し変形すれば、同じ数字が重複してもいけるようになる。
0205デフォルトの名無しさん
2016/08/14(日) 00:37:33.69ID:svhXjdBE0206デフォルトの名無しさん
2016/08/14(日) 01:36:38.62ID:CLyKKjmV0207デフォルトの名無しさん
2016/08/14(日) 01:54:50.48ID:DQlYnAJX0208デフォルトの名無しさん
2016/08/14(日) 03:15:55.52ID:J7BwzSzj0209デフォルトの名無しさん
2016/08/14(日) 03:50:34.13ID:sDacwSZP専門用語はわからないけど
整列?
ある特定の条件下のみ成立するのじゃない?
単純な並び替えなので高速なのは当たり前かも
0210デフォルトの名無しさん
2016/08/14(日) 04:06:14.51ID:sDacwSZPう〜んうまく表現できないけど
新しいキーを登録するとき全キーの順位を更新後
小さい順番に並び替えただけ?
キーの順位更新コストと並び替えコストが爆発的に増えるアルゴリズムじゃないの?
0211デフォルトの名無しさん
2016/08/14(日) 07:13:05.24ID:aO2OCXAGLとRの区別が付いてない時点で普通に恥ずかしいが
0212デフォルトの名無しさん
2016/08/16(火) 19:17:18.67ID:C7Pqt2dG0213デフォルトの名無しさん
2016/08/17(水) 05:50:38.84ID:+Cv7Zdkl「あれー?」
0214デフォルトの名無しさん
2016/08/17(水) 07:18:31.50ID:KTsVTcKZあるあるネタだよね
roop とか Faile とか
0215デフォルトの名無しさん
2016/08/17(水) 08:41:11.19ID:rz4OYI8a0216デフォルトの名無しさん
2016/08/17(水) 10:49:46.46ID:pHe6W3Xrそんな奴おらんわ
0217デフォルトの名無しさん
2016/08/17(水) 12:32:57.99ID:tL95OhVn後で見ると使ってる動詞が微妙みたいなのはいつまでもあるけど
0218デフォルトの名無しさん
2016/08/17(水) 12:42:42.82ID:rz4OYI8a1年前に自分が書いたコード見たら何だこれってのもあるからな
0219デフォルトの名無しさん
2016/08/18(木) 01:28:37.92ID:hvBEnlpa少し感動した
0220デフォルトの名無しさん
2016/08/18(木) 22:49:54.22ID:e9I4NFbF遊ぶと祈る?
0221デフォルトの名無しさん
2016/08/26(金) 12:47:11.06ID:xzikXEHz0222デフォルトの名無しさん
2016/08/27(土) 08:32:55.84ID:N/suXJXB定義されてない識別子です。というエラーが出ます
どうしたらよいでしょうか?
その変数を同じブロックの中では参照できましたが
同じクラスのメソッドの定義を書いてあるブロックの中ではこのエラーが出ます
どうしたらよいでしょうか
詰まってます
0223デフォルトの名無しさん
2016/08/27(土) 08:37:06.97ID:kuSTpJCDエラーになるソースの断片を見せてくれればあるいは…。
0224デフォルトの名無しさん
2016/08/27(土) 08:43:24.13ID:mslVqKaF>その変数を同じブロックの中では参照できましたが
?その変数を宣言した同じブロックの中では参照できましたが
宣言した場所と参照する場所の関係が不適切
単純なタイプミス
0225デフォルトの名無しさん
2016/08/27(土) 08:47:08.95ID:N/suXJXB{
int i = 0;
function1(i);←ここはおっけ
}
A::B
{
function2(i);←エラーc2065
}
A::C
{
function3(i);←エラーc2065
}
となります
朝早くからレスありがとうございます
0226デフォルトの名無しさん
2016/08/27(土) 08:47:57.59ID:N/suXJXB0227デフォルトの名無しさん
2016/08/27(土) 08:48:54.72ID:SRaqh2Cfvoid classA::func1() { int a; a = 0; }
void classA::func2() { a = 0; }
こうならfunc2でのエラーは当たり前
どっちにしろideoneあたりに最小構成でコード上げてみないとなんとも
0228デフォルトの名無しさん
2016/08/27(土) 08:50:38.56ID:SRaqh2Cfclass A {
int i;
A();
B();
C();
}
これでok
0229デフォルトの名無しさん
2016/08/27(土) 08:57:11.15ID:N/suXJXB最悪そうするしかなさそうですね...
0230デフォルトの名無しさん
2016/08/27(土) 09:04:40.39ID:SRaqh2Cf0231デフォルトの名無しさん
2016/08/27(土) 09:05:04.69ID:SmFG8gRKス ク ス | | │ //
/ ス | | ッ // ク ク ||. プ //
/ // ス ク ス _ | | │ //
/ ̄ ̄\ / ス ─ | | ッ //
/ _ノ .\ / //
| ( >)(<) ___
. | ⌒(__人__) ./ ⌒ ⌒\
| ` Y⌒l / (>) (<)\
. | . 人__ ヽ / ::::::⌒(__人__)⌒ \
ヽ }| | | ` Y⌒ l__ |
ヽ ノ、| | \ 人_ ヽ /
. /^l / / ,─l ヽ \
0232デフォルトの名無しさん
2016/08/27(土) 09:14:46.69ID:kVDlXYw3いつもの煽りはどうした
0233デフォルトの名無しさん
2016/08/27(土) 09:14:52.81ID:7VQA/4Rjこの板の初心者大賞はあなたに決定
0234デフォルトの名無しさん
2016/08/27(土) 09:16:15.22ID:sEPhZVC2変数がクラス内で共有して使われるなら>>228の書き方
"c++ メンバ変数"でググれ
変数が関数単位で独立しているなら↓の書き方
以下のiはすべて別の領域に確保される
そして関数を抜けると破棄される
A::A()
{
int i = 0;
function1(i);
}
A::B()
{
int i = 0;
function2(i);
}
A::C()
{
int i = 0;
function3(i);
}
0235デフォルトの名無しさん
2016/08/27(土) 09:26:03.31ID:XihPAhCF0236デフォルトの名無しさん
2016/08/27(土) 10:05:56.94ID:H6wDFwtj0237デフォルトの名無しさん
2016/08/27(土) 10:17:01.66ID:sEPhZVC20238デフォルトの名無しさん
2016/08/27(土) 11:37:24.72ID:XihPAhCF0239デフォルトの名無しさん
2016/08/27(土) 12:18:58.45ID:/AaPU2a9"100", "200", "300"
};
これってchar text[3][4]と同じようにアクセスできるやん?おかしくない?
char *(text[3])なら「2文字 + \0」の1つの変数のポインタになりそうなもんなのに
なんで文字数が自動になって「X文字 + \0」の3つの変数になるん?
0240デフォルトの名無しさん
2016/08/27(土) 12:28:17.02ID:s3YfawhT0241デフォルトの名無しさん
2016/08/27(土) 12:34:49.14ID:FXXHrfXG0242デフォルトの名無しさん
2016/08/27(土) 12:37:20.98ID:FXXHrfXG>「2文字 + \0」の1つの変数のポインタ
それをCでは
char (*p)[2+1];
と書く
0243デフォルトの名無しさん
2016/08/27(土) 13:46:11.93ID:rmIxiT+h括弧がついてるせいで惑わされてるのかもしれないが
>>240のいいたかったようにcharの配列の配列(2次元配列)じゃなくてchar*の配列だから
int i[] = {1, 2, 3}; // intの配列
char* p1[] = {
0244デフォルトの名無しさん
2016/08/27(土) 13:49:52.96ID:rmIxiT+h>>239
括弧がついてるせいで惑わされてるのかもしれないが
>>240のいいたかったようにcharの配列の配列(2次元配列)じゃなくてchar*の配列だから
int i[] = {1, 2, 3}; // intの配列
char* p1[] = {”a”,”b”,”c”}; // char*の配列
char* (p2[]) = {”a”,”b”,”c”}; // 括弧で囲ってるけどp1と同じchar*bフ配列
0245デフャHルトの名無しbウん
2016/08/27(土) 14:11:46.55ID:/AaPU2a9char text これがchar
char (*text) これがchar*
char (*text)[] これがchar*の配列
char text がchar
char (text[]) がchar配列
char *(text[]) がchar配列のポインタ
って感じに思う
0246デフォルトの名無しさん
2016/08/27(土) 14:57:04.59ID:kVDlXYw3と言う妄想を指摘されても改めないんだろうか文盲は
0247デフォルトの名無しさん
2016/08/27(土) 15:15:56.85ID:7VQA/4Rjバカ
0248デフォルトの名無しさん
2016/08/27(土) 15:49:10.20ID:eIOf1V/Mstd::unique_ptr<int> p1;
// std::function<void()> fn1 = [p2 = std::move(p1)]() {};
auto fn2 = [p2 = std::move(p1)]() {};
コメント化してあるほうはエラーになります。
なぜですか?
0249デフォルトの名無しさん
2016/08/27(土) 15:50:20.12ID:/AaPU2a9ちょっと何言ってるのかわからない
char (*text)[2] = { "001", "002" }; // 文字列数
char *(text[2]) = { "1" }; // 文字数 \0含む
ってイメージって話ね
0250デフォルトの名無しさん
2016/08/27(土) 17:46:14.28ID:cKK6tdTV以下のところがよくわからない。
class A {
int i;
A();これはたぶんコンストラクタ。
B();これは何?関数?コンストラクタ?
C();これも。
}
0251デフォルトの名無しさん
2016/08/27(土) 17:57:49.43ID:Xo5fV+3n20.9.11.2.1 [func.wrap.func.con] p7
> template<class F> function(F f);
> Requires: F shall be CopyConstructible.
0252デフォルトの名無しさん
2016/08/27(土) 18:05:12.23ID:eIOf1V/Mどうもありがとう。
0253デフォルトの名無しさん
2016/08/27(土) 18:50:18.11ID:/AaPU2a9そこは重要ではない
0254デフォルトの名無しさん
2016/08/27(土) 19:06:08.73ID:VBtD8f+V>>225のクラス名をDとしてしまえば
D::A
{
int i = 0;
function1(i);←ここはおっけ
}
D::B
{
function2(i);←エラーc2065
}
D::C
{
function3(i);←エラーc2065
}
となるので>>228は
class D {
int i;
A();
B();
C();
}
となるだけでは
0255デフォルトの名無しさん
2016/08/27(土) 20:02:59.14ID:cKK6tdTVclass D {
int i;
int A();
int B();
int C();
}
ってことだな。
0256デフォルトの名無しさん
2016/08/28(日) 09:02:09.65ID:mcF9PVw2見易さじゃなく無くても普通は流れでわかる部分を省略
0257デフォルトの名無しさん
2016/08/28(日) 10:23:11.54ID:ERRoyT16クラススコープで宣言しないとダメって
わかってる人にしか伝わらない暗号だよなww
わからない人に向けた説明じゃない
0258デフォルトの名無しさん
2016/08/28(日) 11:31:06.41ID:mcF9PVw2質問者>>229はわからない人か?
わかってるから問題無い
0259デフォルトの名無しさん
2016/08/28(日) 11:51:38.89ID:ERRoyT16良かったですねたまたま>>229が理解できてw
そんな言い訳しても「普通は流れでわかる」が
伝わらなかった人がいた事実は変わりませんよww
0260デフォルトの名無しさん
2016/08/28(日) 12:01:29.46ID:mcF9PVw2たまたまじゃないだろ
発端の>>222や>>225の書き方を見れば理解できるとわかる
0261デフォルトの名無しさん
2016/08/28(日) 12:14:28.11ID:ERRoyT16いえいえ話をすり替えちゃって
質問者の拙い表現を真似した結果
流れでわからなかった人が出てしまった
事実は変わりませんよw
どこまでいっても「理解できるとわかる」は
あなたの「こうだったらいいな」でしかないのでww
0262デフォルトの名無しさん
2016/08/28(日) 12:22:26.40ID:mcF9PVw2質問者自身が>>225で省略してる部分を省略しただけだからな
質問者がわかったならそれでいい
わからなかったのは外野だからどうでもいいし
お前もただケチつけたいだけの外野
おめでてーな
0263デフォルトの名無しさん
2016/08/28(日) 12:33:29.31ID:ABmxF0GC�@と�Aの違い。
class HOGE{
int i; �@
f1(){
int i; �A
・・・・
}
・・・
};
0264デフォルトの名無しさん
2016/08/28(日) 12:56:48.64ID:ERRoyT16見苦しい人ですね
素直に「わからなかった?省略してわるかったな」
と>>255に言えばいいのに自分に非がないと
意固地に自己保身を続けるのはみっともないですw
>>255に噛みついておきながら挙げ句の果てには
「質問者がわかればいい」なんて逃げ出すなんてww
0265デフォルトの名無しさん
2016/08/28(日) 13:10:22.46ID:mcF9PVw2引っ込みがつかなくなったのか?
>>257 > わからない人に向けた説明じゃない
と言っておきながら
質問者も同じ部分を省略のしているから理解できてるし問題無いと指摘すれば
話をすり替えってどっちがだよ
最初から質問者がわかってるから問題無いと言ってるだろ
>>256を見て噛み付いてるとかどんな妄想?
論点で突っ込めないなら黙っておいた方がいいぞ
0266デフォルトの名無しさん
2016/08/28(日) 13:58:37.59ID:Feey9nzY0267デフォルトの名無しさん
2016/08/28(日) 14:03:48.59ID:mcF9PVw2違うわ
なんでそうなる
0268デフォルトの名無しさん
2016/08/28(日) 14:27:10.06ID:ERRoyT16あなたは理解できなかった>>255に対して
「普通は流れでわかる」と言い放ったのですよ
言われた人からしたら「俺は普通じゃない」
になってしまいますw
それを主語は質問者に限定していた
なんてすり替えに他なりませんねww
今回だけ特別に()もう一度だけ言ってあげます
素直に「わからなかった?省略してわるかったな」
と>>255に言えばいいのに
0269デフォルトの名無しさん
2016/08/28(日) 14:47:20.79ID:mcF9PVw2質問者に対しての回答なんだから主語は質問者なのは当たり前だろ
質問者のレスと見比べたら質問者じゃなくても普通はわかるしな
わからないなら質問者が何言ってるかすらわからないから論外
お前に何かデメリットでもあんのかよ
0270デフォルトの名無しさん
2016/08/28(日) 14:50:45.95ID:Feey9nzY自演でなくこんなのに構う奴がいるわけないだろいい加減にしろ
0271デフォルトの名無しさん
2016/08/28(日) 14:58:41.58ID:mcF9PVw2残念ながら自演じゃないんだよな
ワッチョイでもIPでも出せばいいのか
0272デフォルトの名無しさん
2016/08/28(日) 15:55:00.14ID:ERRoyT16>主語は質問者なのは当たり前だろ
あなたは自然言語の能力が低いんですね納得しましたw
>>250の発言をした>>255に対して「普通は流れでわかる」
と言ったことを
「君は分からないかも知れないけど質問者は流れで分かる」
という意味だったというのはいくら何でも無理があります
だって>>255に対してもわかることを求める日本語ですから
でも自然言語スキルが低いならそうなって
しまうのも仕方ないですねwww
>質問者のレスと見比べたら質問者じゃなくても普通はわかるしな
あれー、話をループさせてますね
分からない人が実在して、論外ならスルーすればいいのに
あなたはその人にわざわざ「普通は流れでわかる」
と言い出したんですよ嫌がらせです?
0273デフォルトの名無しさん
2016/08/28(日) 16:08:13.50ID:mcF9PVw2省略した理由を誤解してたから「見易さのためじゃなく質問者は省略してもわかるから」って言ってんだが
「君は分からないかも知れないけど」ってのはお前の妄想で付いた装飾
論点と関係無い突込みが増えてんぞ
最初お前が
> わからない人に向けた説明
と言っていた部分に対して「質問者はわかってるだろ」って話
わかるかな?
0274デフォルトの名無しさん
2016/08/28(日) 16:42:40.31ID:60yVMOKI0275デフォルトの名無しさん
2016/08/28(日) 17:25:15.61ID:mcF9PVw20276デフォルトの名無しさん
2016/08/28(日) 17:48:36.17ID:ABmxF0GC0277デフォルトの名無しさん
2016/08/28(日) 17:49:28.89ID:ERRoyT16>質問者は省略しても
その質問者への限定という書かれていない意図が
>>256のレスでは相手に伝わりえないと二度も言っているのですが
自然言語能力の低い人には無駄でしょうね
>最初お前が
> わからない人に向けた説明
(略)
>わかるかな?
また話をループさせるんですね
あなたは質問者に向けた回答を持ち出して
それを理解できなかった>>255に向かって
「普通は流れでわかる」と言ったから
ボクは僭越ながら物申したんですw
>>257の「わからない人」が質問者だと
思ってしまったあなたは本当に残念です
いずれにせよ原因はあなたが自然言語
を正しく
使えなかったからとわかったので
ここまでにしますw
0278デフォルトの名無しさん
2016/08/28(日) 18:51:50.91ID:mcF9PVw2ややこしくしたいだけだろお前
>>255 > 見易さのために、いろいろ省略してあるという解釈をすることにした。
に対して
省略した理由
× 見易さ
○ 質問者には流れでわかる
って話だと何回言ったらいいんだ
暇潰しはできたか?宿題やれよ
0279デフォルトの名無しさん
2016/08/28(日) 18:56:59.03ID:nd9FhnVh0280デフォルトの名無しさん
2016/08/28(日) 20:49:38.76ID:VK4fyJjM0281デフォルトの名無しさん
2016/08/28(日) 21:02:58.25ID:rpWzJfiXわからなかった?>>228が適当に省略してわるかったよ
許してやってくれ、な?
0282デフォルトの名無しさん
2016/08/29(月) 07:54:39.69ID:25l6qL+D>>228のアンカ先>>225も見ろ
どう見ても合わせてるだろ
むしろ>>222を理解して>>227のレスしてるしな
>>222を理解できなかった>>223-224だろこいつID:ERRoyT16
0283デフォルトの名無しさん
2016/08/29(月) 08:20:12.37ID:uxClxO+f荒らしは去れ
0284デフォルトの名無しさん
2016/08/29(月) 08:23:37.46ID:25l6qL+D楽でいいよな
0285デフォルトの名無しさん
2016/08/29(月) 17:38:20.97ID:zb9cEIRR他のフォームはWndParentをそのメインフォームとして子フォームを作成するアプリを作っています。
いま、メインフォームを含めた全フォームをEnableWindowでDisableにし、
新しい子フォームを1つだけ表示させます。要するにモーダルなフォームです。
この状態でアプリケーションを非アクティブにします。
そして、メインフォームをクリックします。
すると、WM_ACTIVATEAPPが送られ、モーダルな子フォームがアクティブになります。
ここまではいいのですが
アプリケーションが非アクティブで、Enableでない別の子フォームをクリックしても
WM_ACTIVATEAPPや、WM_WINDOWPOSCHANGINGが送られてこず
まったくアクティブになりません。Spy++で見たところ、WM_SERCURSORしか
送られてきてませんでした。子フォームのクリックではメインフォームにも何も届きません。
どうやったらDisableされた子フォームをクリックするとアプリケーションが
アクティブになるようになるのでしょうか。
よろしくお願いします。
0286デフォルトの名無しさん
2016/08/29(月) 17:59:17.27ID:uxClxO+fWin32API質問箱 Build122
http://echo.2ch.net/test/read.cgi/tech/1451988219/
0287デフォルトの名無しさん
2016/08/29(月) 18:06:32.78ID:zb9cEIRRいってきます。
0288デフォルトの名無しさん
2016/09/02(金) 01:11:30.72ID:kTzgtLgu次のようなエラーが出ました
error: variable or field 'function' declared void
error: cannot convert 'String::length' from type 'unsigned int (String::)()const' to type 'const int
みなさんこれはどのようにして解決するのですか?`s(・'・;) エートォ...
0289デフォルトの名無しさん
2016/09/02(金) 01:31:35.82ID:p8KtkBbH↓こちらへどうぞ。
http://echo.2ch.net/test/read.cgi/tech/1187922645/
0290デフォルトの名無しさん
2016/09/02(金) 01:32:43.96ID:00KDa+3S×length
0291デフォルトの名無しさん
2016/09/02(金) 01:38:08.12ID:th3uA5/Iconst int に変換できない。
定数だから、実行時に代入できない。
コンパイル時(実行前)に、値が決まっている必要がある
0292デフォルトの名無しさん
2016/09/02(金) 01:45:27.20ID:kTzgtLguこんなすれあったのですね
みなさんありがとうございました
0293デフォルトの名無しさん
2016/09/02(金) 01:57:54.27ID:kTzgtLgulengthについては
int x = a->length();
という風に使っています
何か悪いんでしょうか?
0294デフォルトの名無しさん
2016/09/02(金) 03:36:05.10ID:kWkQROgWザ シティ・ベルシティ伊勢佐木町店(神奈川県)の周りにはソープランドがたくさんあります(ソープランド街です)。
このパチンコ店は韓国人か中国人が経営者の可能性があります(パチンコ店のほとんどは韓国人が経営してます)。
ザ シティ・ベルシティ伊勢佐木町店の周りには韓国料理店がたくさんあり、数キロ先には横浜中華街があります(韓国人、中国人がすごく多い地域です)。
普通はこんな場所に店を出さない気がします。
DICE系列 関東圏4
http://hayabusa6.2ch.net/test/read.cgi/netspot/1467360487/
ダイス(DICE)=まんがランド(漫画喫茶)=ちょっと気分転館(漫画喫茶)=ねっとラボ=ベルシティ(ザ シティ)というパチンコ店
↑
パチンコ店のほとんどは韓国人が経営してます
0295デフォルトの名無しさん
2016/09/02(金) 04:05:59.10ID:th3uA5/Iint ではなく、unsigned int じゃないの?
int だと、負の値も受け付ける。
unsigned int では、正の値のみ
君は、変数の型を知らずに、プログラミングしているのか?
0296デフォルトの名無しさん
2016/09/02(金) 04:25:05.17ID:4UgFxqK+どうしてこのスレはこうも文盲が多いんだ?
0297デフォルトの名無しさん
2016/09/02(金) 08:07:15.67ID:JARk4f240298デフォルトの名無しさん
2016/09/02(金) 08:25:27.86ID:kTzgtLguみなさまありがとうございました(( _ _ ))ペコリ
0299デフォルトの名無しさん
2016/09/02(金) 10:05:15.65ID:4UgFxqK+それは理解した上で、他のクソレスが一体何なのかと気になった
0300デフォルトの名無しさん
2016/09/02(金) 13:28:54.99ID:+blpbVZUC++だとよくあるな
テンプレートのクッソ長い型なんて正確に覚えてないし
0301デフォルトの名無しさん
2016/09/02(金) 13:33:53.61ID:MJ/JY2i40302デフォルトの名無しさん
2016/09/02(金) 13:56:28.78ID:LbMFm82d0303デフォルトの名無しさん
2016/09/02(金) 15:56:43.58ID:aRf0CVeC0304デフォルトの名無しさん
2016/09/02(金) 15:59:58.22ID:MJ/JY2i4みたいなのはいんでしょ
0305デフォルトの名無しさん
2016/09/02(金) 18:24:45.18ID:qjeLwgBZ俺はイテレータくらいにしか敢えて使わないようにしてるよ
0306デフォルトの名無しさん
2016/09/03(土) 01:20:41.38ID:B/2UNgqOイテレータ使う時
テンプレート関数なんかで引数の型が決められない時
範囲for使う時
lambda式で関数オブジェクト宣言する時
0307デフォルトの名無しさん
2016/09/03(土) 01:35:36.36ID:YfCK8gma範囲for はもうそのまま覚えてるな。
for(const auto &x:obj) cout<<x<<endl;
0308デフォルトの名無しさん
2016/09/03(土) 18:43:22.27ID:p04JtSr40309デフォルトの名無しさん
2016/09/05(月) 20:55:19.66ID:/f1vqBwuint x=c;
キャストしないと駄目なの?
0310デフォルトの名無しさん
2016/09/05(月) 21:27:06.58ID:1ue4xWo4訊かないと分からないの?バカなの?
0311デフォルトの名無しさん
2016/09/05(月) 22:07:39.45ID:PotsNJZO0312デフォルトの名無しさん
2016/09/05(月) 22:19:02.20ID:yPAKLa+cint x=(unsigned char)cとかにしないと
桁あふれが出るので
気をつけてな。
0313デフォルトの名無しさん
2016/09/05(月) 22:24:39.84ID:si7+YH3F0314デフォルトの名無しさん
2016/09/06(火) 01:09:10.68ID:81btUJay暗黙の型変換をキャストとは言わないでしょ。
0315デフォルトの名無しさん
2016/09/06(火) 03:10:36.78ID:fHacDyq+charへ入れた時点で溢れているという発想は無いのかね
>>313
charが82hを表現できる可能性があるという発想は無いのかね
>>314
質問者がC++でなくCだったという発想は無いのかね
「暗黙の型変換」
0316デフォルトの名無しさん
2016/09/06(火) 03:16:15.72ID:81btUJayCでもC++でも、>309のコードには暗黙の型変換はあるいっぽうでキャストは無いという点で違いは無いと思ってる。
CとC++でここらへん何か違うの?
0317デフォルトの名無しさん
2016/09/06(火) 03:33:16.04ID:fHacDyq+Cは「値」の変換、C++は「型」の変換を基本としているので用語が少し違う。
Cなら「暗黙の変換」。せめて「暗黙の型の変換」。
明示的・暗黙についてはその通り
0318デフォルトの名無しさん
2016/09/06(火) 08:40:48.67ID:r9CpfiZJまさかちんけな知識自慢じゃないよね?
0319デフォルトの名無しさん
2016/09/06(火) 08:44:13.71ID:ZDYfZL/r0320デフォルトの名無しさん
2016/09/06(火) 09:34:47.75ID:81btUJay> Cは「値」の変換、C++は「型」の変換を基本としているので用語が少し違う。
そーなの?と思って改めて調べてみたけど、んなこたーなかった。何見て言ってんの?
ISO C (n1570) 6.3 Conversions/1
> Several operators convert operand values from one type to another
> automatically. This subclause specifies the result required from such an
> implicit conversion, as well as those that result from a cast operation
> (an explicit conversion).
ISO C++ (n4606) 4 [conv]/1
> Standard conversions are implicit conversions with built-in meaning.
これらの言う暗黙の変換にはこっそりlvalue(to rvalue)の変換が混ざってたりするんで、
「暗黙の型変換」と言えば暗黙の変換のうち型に関するものに限定する、っていう
常識的な理解で問題ないでしょ。
ちなみにJIS Cは"implicit conversion"に「暗黙の型変換」って訳語をあててた。
規格の翻訳版として不適切な気はする。
http://kikakurui.com/x3/X3010-2003-01.html#35
> 6.3 型変換
> 幾つかの演算子は,オペランドの値をある型から他の型へ自動的に型変換する。
> 6.3 は,この暗黙の型変換(implicit conversion)の結果及び
> キャスト演算[明示的な型変換(explicit conversion)]の結果に対する要求を
> 規定する。
0321デフォルトの名無しさん
2016/09/06(火) 12:50:01.17ID:bgQCWstyまず、キミらはそこから始めなさい
0322デフォルトの名無しさん
2016/09/06(火) 13:46:19.94ID:4l7E9vnw合わせなくていいんだな
0323デフォルトの名無しさん
2016/09/06(火) 20:17:11.61ID:MzOIjXFt基底クラスにキャストしたら使えるようになるのか。
0324デフォルトの名無しさん
2016/09/06(火) 20:45:54.56ID:4l7E9vnwごめん仮想関数の話
class A
{
public: virtual void funcA(void);
}
class B : public A
{
private: void funcA(void);
public: void funcB(void) { funcA(); }
}
0325デフォルトの名無しさん
2016/09/06(火) 22:04:33.70ID:VCItaBw6その通り
C++は言語仕様がクソだから
0326デフォルトの名無しさん
2016/09/07(水) 01:56:12.00ID:R4iuTWHL>>324のように派生クラスでvirtualを省略するとどうなるの?
ちゃんとoverrideされるのか、それともreintroduceされるのか。
0327デフォルトの名無しさん
2016/09/07(水) 02:49:01.60ID:7cFIJKpvされる。
0328デフォルトの名無しさん
2016/09/07(水) 08:33:01.46ID:df+fCk0r派生クラスとして使わないならvirtual無くてもおk
0329デフォルトの名無しさん
2016/09/07(水) 09:31:03.12ID:dkr8Avrg0330デフォルトの名無しさん
2016/09/07(水) 10:02:54.39ID:sjjNPEW0public: virtual void funcA() { cout << "A::funcA" << endl; }
};
class B : public A {
private: void funcA() { cout << "B::funcA" << endl; }
public: void funcB() { funcA(); }
};
class C : public B {
public: void funcA() { cout << "C::funcA" << endl; }
};
int main()
{
A a;
B b;
C c;
A* ar[] = { &a, &b, &c };
a.funcA(); b.funcB(); c.funcA();
ar[0]->funcA(); ar[1]->funcA(); ar[2]->funcA();
return 0;
}
0331デフォルトの名無しさん
2016/09/07(水) 19:05:35.17ID:R4iuTWHLそれこそが大問題。そこが一番気になるところでした。
私の予想だけど、派生クラスではどの関数もvirtualがついてないから
VTableはオーバーライドされてないんじゃないかな。
だから、その派生クラスでは自分の実装したメソッドが呼ばれるけど
Aにキャストしたとたん、全部 "A::funcA"になるのでは?
0332デフォルトの名無しさん
2016/09/07(水) 19:25:24.71ID:5LAjH7P/0333デフォルトの名無しさん
2016/09/07(水) 19:49:23.45ID:R4iuTWHL0334デフォルトの名無しさん
2016/09/07(水) 20:25:00.69ID:5LAjH7P/>>330にはvirtualねぇだろ
0335デフォルトの名無しさん
2016/09/07(水) 20:55:51.13ID:YLqxd+vc0336デフォルトの名無しさん
2016/09/07(水) 20:57:39.08ID:stIp4lX5vector<int> numAry = {...};
for(int num : numAry)
のようにかけますが
N回ループしたいとき
for(int i : N)
に似たような形で書くことはできないのでしょうか
0337デフォルトの名無しさん
2016/09/07(水) 21:12:41.71ID:XQsQ/Oqp0338デフォルトの名無しさん
2016/09/08(木) 02:27:53.09ID:ex0VxBXc0339デフォルトの名無しさん
2016/09/08(木) 04:13:38.50ID:s+VkNmnn0340デフォルトの名無しさん
2016/09/08(木) 05:29:50.37ID:aAWt9FIS一応そんな感じの機能がC++17に提案されてはいたはず
今はまだない
0341デフォルトの名無しさん
2016/09/08(木) 07:28:25.21ID:QY4vZ8U6処理系によってはキャストしても元のメソッドが呼ばれることがある
0342デフォルトの名無しさん
2016/09/08(木) 07:56:15.50ID:P8D+cYPH↓
「処理系によってはキャストしても元のメソッドが呼ばれる」
そんな、同じことをわざわざ繰り返さなくても
0343デフォルトの名無しさん
2016/09/08(木) 08:22:20.64ID:/jas+dzW基底クラスのメソッドにはvirtualがあるから派生クラスのメソッドが呼ばれるって指摘だろうが
なら>>331の「だから」前後が繋がらなくね?
> Aにキャストしたとたん、全部 "A::funcA"になるのでは?
0344デフォルトの名無しさん
2016/09/08(木) 09:05:24.30ID:155KpMPy遡ってって親に virtual があれば、子は暗黙に virtual になってるっぽい
なお規格がどうなってるかは知らない
0345デフォルトの名無しさん
2016/09/08(木) 10:18:11.79ID:P8D+cYPH「>>330の派生クラスはvirtualが無いからたぶん非virtual。だから基底クラスにキャストしたら基底クラスの関数が呼ばれるのでは?」
↓
「非virtualならキャストしたら基底クラスが呼ばれて当然だろ?」←健常者
↓
「でもvirtualなら派生クラスが呼ばれる」←アスペ
↓
「virtualが見えない」←文盲
↓
「処理系依存みたいだぜ」←嘘つき
↓
「基底クラスにvirtualが有ったら派生クラスもvirtualになるって指摘だろ?」←アスペ
0346デフォルトの名無しさん
2016/09/08(木) 10:59:04.81ID:/jas+dzW× 派生クラスもvirtualになるって指摘だろ?
○ 派生クラスのメソッドが呼ばれるって指摘だろ?
その文で言う健常者>>332と文盲>>334と最後のアスペ>>343は俺な
「virtualがついてないから」とか言っておいて
「virtualだったら」はおかしいだろって指摘が>>334
アンカミスしたりしてるが正しくは
「>>331はvirtualがない場合って話だろ」だったわすまん
0347デフォルトの名無しさん
2016/09/08(木) 12:10:17.61ID:YGjJsTy2virtualを抜くと
>ar[0]->funcA(); ar[1]->funcA(); ar[2]->funcA();
で全部"A::funcA"出力するんだな
>a.funcA(); b.funcB(); c.funcA();
この部分はそれぞれ実体のある関数を呼んでいるけど
ar[0]->funcA();
みたいなポインター間接にしたとたん挙動が異なる
不思議と言うか罠だな
0348デフォルトの名無しさん
2016/09/08(木) 12:16:01.18ID:/jas+dzWそれって当たり前
0349デフォルトの名無しさん
2016/09/08(木) 12:16:04.55ID:P8D+cYPH>不思議と言うか罠だな
>不思議と言うか罠だな
Javaからやってきたんだろうか
0350デフォルトの名無しさん
2016/09/08(木) 12:18:40.43ID:XrgdeCGY始まりは>>326
0351デフォルトの名無しさん
2016/09/08(木) 12:26:49.90ID:P8D+cYPH>>329が答えてるのに
3分あれば自分で試せることを引きずる必要はない
0352デフォルトの名無しさん
2016/09/08(木) 13:07:17.51ID:nnNTpHVe『プログラミング言語C++』第4版、p.589より
「仮想関数をオーバーライドする関数は、デフォルトでvirtualとなる。
派生クラス内でvirtualを記述するのは、可能ではあるが不要だ」
>>326 の質問に対する答えは「オーバーライドされる」(>>329の通り)
ただし俺は reintroduce という用語が分からない。
0353デフォルトの名無しさん
2016/09/08(木) 13:08:23.79ID:nnNTpHVe#include <iostream>
using namespace std;
class A { public: virtual void func() {cout << "A::func()" << endl;} };
class B: public A { public: void func() {cout << "B::func()" << endl;} };
class C: public B { public: void func() {cout << "C::func()" << endl;} };
int main()
{
A a;
B b;
C c;
A* ar[] = { &a, &b, &c };
B* br[] = { &b, &c };
cout << "Call directly" << endl;
a.func(); b.func(); c.func();
cout << "Call from A*" << endl;
ar[0]->func(); ar[1]->func(); ar[2]->func();
cout << "Call from B*" << endl;
br[0]->func(); br[1]->func();
return 0;
}
A* の配列でオーバーライドされてるのは当然として、
B* の配列経由でもオーバーライドされてるのが分かると思う。
少なくとも、手元の環境ではオーバーライドされた。
0354デフォルトの名無しさん
2016/09/08(木) 14:59:05.43ID:hiYVTcO5>>326の質問のポイントはclassB::funcAがprivateになっている点だと思ったんだが
ideonではprivateでもオーバーライドされて、結果的にprivateな関数を外部から呼び出せる形になるみたいだね
https://ideone.com/1XnLya
0355デフォルトの名無しさん
2016/09/08(木) 16:40:15.71ID:uEaamPLV頭大丈夫?
0356353
2016/09/08(木) 16:54:34.41ID:nnNTpHVe(変更前: 全体は >>353 を参照)
class A { public: virtual void func() {cout << "A::func()" << endl;} };
class B: public A { public: void func() {cout << "B::func()" << endl;} };
class C: public B { public: void func() {cout << "C::func()" << endl;} };
(変更後: class B のfunc()をpublicからprivateに変更)
class A { public: virtual void func() {cout << "A::func()" << endl;} };
class B: public A { private: void func() {cout << "B::func()" << endl;} };
class C: public B { public: void func() {cout << "C::func()" << endl;} };
エラーが指摘された個所は…
b.func() ... private関数を外から呼んでるからエラー
br[0]->func() ... ポインタ経由なだけで上と同じ
br[1]->func() ... C::func() はpublicに再指定したのに!
ar[] では A::func() がpublicだから呼べる
br[] では B::func() がprivateだから呼べない
コンパイル段階としては妥当な判断と思えるし、
>>354 のソースとも矛盾してないね。
確かに規格でどうなってるか気になってきたわ。
0357デフォルトの名無しさん
2016/09/08(木) 17:00:35.17ID:P8D+cYPH規格はクソみたいな記述しか無いぞ
結論はprivateだろうと>>329の通り
0358デフォルトの名無しさん
2016/09/08(木) 17:03:40.96ID:P8D+cYPH>コンパイル段階としては妥当な判断と思える
良いところに気がついたな
ハゲはアホだからそういう言語仕様にした
0359デフォルトの名無しさん
2016/09/08(木) 17:30:40.83ID:/jas+dzWclass Bのメソッド内からしか呼ばれない設計だからprivateなんだし
br[1]->func()はbrがclass Bのポインタだから
全て当たり前なんだが
0360デフォルトの名無しさん
2016/09/08(木) 19:05:13.67ID:H7f3BOen0361デフォルトの名無しさん
2016/09/08(木) 20:00:20.28ID:P8D+cYPHまさかハゲ本とか言わないよな
0362デフォルトの名無しさん
2016/09/08(木) 20:47:09.90ID:opSvRovk0363デフォルトの名無しさん
2016/09/09(金) 00:42:47.72ID:6Bh01W2V0364デフォルトの名無しさん
2016/09/09(金) 03:31:42.51ID:vj6paJQh0365デフォルトの名無しさん
2016/09/09(金) 07:44:34.03ID:SVVRFbIW0366デフォルトの名無しさん
2016/09/09(金) 07:57:07.39ID:vj6paJQh0367デフォルトの名無しさん
2016/09/09(金) 08:02:07.78ID:z8Otf9Puまたがる資源だったよね
0368デフォルトの名無しさん
2016/09/09(金) 08:46:22.36ID:puYtutU5※ ハンドルを閉じる
リンクカウンタを減らして 0 になったらオブジェクトを破棄
Advanced Windows に書いてあったかな?
0369デフォルトの名無しさん
2016/09/09(金) 09:33:03.04ID:D/rbZjJQそれは「C++でWin32APIを使用できるか」と同義
0370デフォルトの名無しさん
2016/09/09(金) 09:49:32.83ID:QrmkumONMutexオブジェクト自体を破棄することは出来ないなあ
出来たら困る
0371デフォルトの名無しさん
2016/09/09(金) 21:23:39.52ID:mcpsSWXB0372デフォルトの名無しさん
2016/09/09(金) 22:47:33.90ID:YD15XtYf0373デフォルトの名無しさん
2016/09/09(金) 23:27:12.13ID:vj6paJQh0374デフォルトの名無しさん
2016/09/09(金) 23:30:00.31ID:9rk0CEE30375デフォルトの名無しさん
2016/09/10(土) 02:19:28.34ID:FV6B4AWT0376デフォルトの名無しさん
2016/09/10(土) 02:22:35.93ID:AaaFlHcQ0377デフォルトの名無しさん
2016/09/10(土) 02:25:54.65ID:AaaFlHcQ0378デフォルトの名無しさん
2016/09/10(土) 02:37:55.32ID:nNi8wB7Z0379デフォルトの名無しさん
2016/09/10(土) 06:37:28.08ID:LzJTocys0380デフォルトの名無しさん
2016/09/13(火) 00:37:21.83ID:Vt1Q9cOd使っている人は、どんな時に使っているか
教えてほしいな
0381デフォルトの名無しさん
2016/09/13(火) 18:34:02.29ID:XDS42h3G0382デフォルトの名無しさん
2016/09/13(火) 18:44:26.08ID:f8j179dIclass B : private A { };
これじゃないんか?
0383デフォルトの名無しさん
2016/09/13(火) 18:45:51.78ID:XDS42h3G0384デフォルトの名無しさん
2016/09/13(火) 19:17:46.64ID:f8j179dIclass A { public: virtual void func(void); };
class B : private A { private: void func(void); };
こっちは>>324あたりから出たしと思って
0385デフォルトの名無しさん
2016/09/13(火) 19:51:29.95ID:XDS42h3G年をとって3つ以上前のレスは見えなくなったありがと
使ったこと無いからわからん
0386デフォルトの名無しさん
2016/09/13(火) 20:41:13.16ID:f8j179dI俺もわからん
0387デフォルトの名無しさん
2016/09/13(火) 21:21:41.42ID:Vt1Q9cOd>>382みたいなもののこと言いたかったんだ
0388デフォルトの名無しさん
2016/09/14(水) 00:30:39.31ID:aIInqOrt> 使っている人は、どんな時に使っているか
0389デフォルトの名無しさん
2016/09/14(水) 00:35:07.25ID:aIInqOrt0390デフォルトの名無しさん
2016/09/14(水) 21:03:55.07ID:q8o26gzh0391デフォルトの名無しさん
2016/09/14(水) 21:12:53.32ID:JEExw83M0392デフォルトの名無しさん
2016/09/14(水) 22:04:08.34ID:g3+hWH3w一例を挙げれば、例えばコールバックインターフェースを定義してコールバック関数はpublicにするけど
それを実装する方ではprivate継承するとか俺は普通にやってる
0393デフォルトの名無しさん
2016/09/16(金) 13:14:34.58ID:PpYmmEIWそのC++の構文を真似てたD言語は後にアクセス指定部分を廃止し public に統一した
0394デフォルトの名無しさん
2016/09/16(金) 17:53:06.94ID:8h9JJDXL0395デフォルトの名無しさん
2016/09/18(日) 15:11:55.72ID:hCxjOJdnマルチスレッド化するコード例を教えてください
例えば
std::vector<int> v;
v.resize(1000);
for(int i = 0 ; i < 1000 ; i++)
{
v[i] = 2*i+1;
}
0396デフォルトの名無しさん
2016/09/18(日) 15:13:33.65ID:hCxjOJdnstd::vector<int> v;
v.resize(1000);
const int a = 2;
const int b = 1;
for(int i = 0 ; i < 1000 ; i++)
{
v[i] = a*i+b;
}
0397デフォルトの名無しさん
2016/09/18(日) 15:20:02.00ID:i6p5P4+cOpenMP
0398デフォルトの名無しさん
2016/09/18(日) 16:12:58.12ID:8TOAmXme宣言直後にサイズ変更ってなんか要領悪くないですか
0399デフォルトの名無しさん
2016/09/18(日) 17:01:22.76ID:epT5qit00400デフォルトの名無しさん
2016/09/18(日) 18:31:52.64ID:VS8wi63A0401デフォルトの名無しさん
2016/09/19(月) 11:41:29.54ID:nWsdJupQ並行で別言語触り始めようと思ってるんだが
Cが手続き言語、C++がオブジェクト指向なんだろ
低級言語
非ロジック言語
非手続き言語
純粋関数型言語
非純粋関数型言語
スクリプト言語とかいろいろあるけどとりあえずPythonPerlRubyあたりが人気だしやっとけばいいのか
0402デフォルトの名無しさん
2016/09/19(月) 12:39:21.77ID:uf1tk+gF0403デフォルトの名無しさん
2016/09/19(月) 15:59:04.94ID:+itM0fM3C++の弱点と言えば
・強力過ぎてcgiなどで権限を制限し難い
・ビルド環境が無いと動くものを作れない
・環境のコアな部分をいじれるので環境依存になりやすい
0404デフォルトの名無しさん
2016/09/19(月) 20:07:15.41ID:80/BHnqI実行時の配列の添え字アクセスが有効範囲にあるかコンパイル時にチェックする言語とか
0405デフォルトの名無しさん
2016/09/19(月) 20:54:44.56ID:3+VF/HK8添字の値が外部から与えられたらどうしようもない
ってことぐらいは普通にプログラム組んでたらわかりそうなもんだが...
0406デフォルトの名無しさん
2016/09/19(月) 22:24:36.42ID:aveOgqLDつまり「ボクはcgiの何たるかをまるで理解してません」
ってことだな
0407デフォルトの名無しさん
2016/09/21(水) 16:37:20.95ID:6R9yOnVc0408デフォルトの名無しさん
2016/09/21(水) 17:01:59.00ID:K2D2Rq8+『プログラミング言語C++』第4版のp.168あたりを見ると、
ありどころか、ハゲ先生はその形式での初期化を勧めてるね。
「C++11以降なら型によらず同じ書き方で
デフォルトの初期化ができるからマジ{}オヌヌメ。
って言いながら今でも int sum = 0; とか
うっかり書いちゃうこともあるんだ、てへぺろ」
みたいな記述がある。
0409デフォルトの名無しさん
2016/09/21(水) 18:22:23.33ID:cJThJ26e0410デフォルトの名無しさん
2016/09/21(水) 20:39:17.08ID:mzpKxj3Uもう、迷ったらハゲの逆を選択するしかない
0411デフォルトの名無しさん
2016/09/21(水) 20:51:30.68ID:l42SpJ8P基本型の場合は使いたければint i {}にすればいい。
0412デフォルトの名無しさん
2016/09/21(水) 21:05:24.87ID:6R9yOnVcあのハゲはてへぺろまで使うのか おとろしいハゲだ。
int i[100]={}; は便利だと思って、int i{};やったらコンパイラもなんも言わなかったんで はい。
つか int i;で0初期化の規格にならんのかな。
0413デフォルトの名無しさん
2016/09/21(水) 21:20:16.98ID:7Xpfd1N0普通に=0しろ
0414デフォルトの名無しさん
2016/09/22(木) 07:56:10.92ID:uum3cLOt0415デフォルトの名無しさん
2016/09/22(木) 07:57:07.38ID:uum3cLOt0416デフォルトの名無しさん
2016/09/22(木) 07:59:02.23ID:uum3cLOt0417デフォルトの名無しさん
2016/09/22(木) 19:41:09.05ID:1GDV9io10418デフォルトの名無しさん
2016/09/22(木) 20:57:57.50ID:csMhzqFc0419デフォルトの名無しさん
2016/09/22(木) 22:28:18.80ID:X4UeXH89initializer_listは別の書式にするべきだった。
int a{10}; // 整数の初期化
int a[2] {10,20}; //配列の初期化
struct A {int a,b;} g{10,20};// 集合体の初期化
struct A {A(int,int){}} g{10,20}; // クラスの初期化
vector<int> g{10,20};// コイツさえいなけりゃ
0420デフォルトの名無しさん
2016/09/22(木) 23:57:21.17ID:UBDA34w0これは確かに思う
一度はまった
0421デフォルトの名無しさん
2016/09/23(金) 00:29:17.31ID:tPpdE/S00422デフォルトの名無しさん
2016/09/23(金) 00:51:01.95ID:z/oo94n50423デフォルトの名無しさん
2016/09/23(金) 10:24:07.62ID:M8l9LwvJ0424デフォルトの名無しさん
2016/09/23(金) 13:10:24.94ID:z2QCychJそれじゃオーバーヘッドが生じるじゃないですか
0425デフォルトの名無しさん
2016/09/23(金) 13:11:38.55ID:M8l9LwvJ0426デフォルトの名無しさん
2016/09/23(金) 13:22:44.40ID:whHVCxTc従来通り()でやればいいだけ
変な「統一性」なるものを無理やり入れたことが混乱の元になってる
0427デフォルトの名無しさん
2016/09/23(金) 13:29:12.53ID:z2QCychJ0428デフォルトの名無しさん
2016/09/23(金) 13:33:16.60ID:ircl/elV0429デフォルトの名無しさん
2016/09/23(金) 14:39:02.57ID:z+X1CJw6具体的には、scanfで5回目の数値を入力してエンターを押すとコマンドプロンプトが消えてしまいます。
お助けいただけますと幸いです。どうぞよろしくおねがいいたします。
#include <stdio.h>
#define scanf scanf_s
int main(void)
{
int test[5];
int tmp, i, s, t, j;
printf("テストの点数を入力してください。\n");
for (i = 0; i < 5; i++) {
scanf("%d", &test[i]);
}
printf("あいうえお\n");
return 0;
}
0430デフォルトの名無しさん
2016/09/23(金) 14:59:51.73ID:hdVg5emL0431デフォルトの名無しさん
2016/09/23(金) 15:01:18.43ID:z2QCychJ自己紹介です
0432デフォルトの名無しさん
2016/09/23(金) 15:06:09.29ID:z+X1CJw6アドバイスありがとうございました。そして自己解決もしました!
新しいプロジェクトを
0433デフォルトの名無しさん
2016/09/23(金) 15:07:29.87ID:z+X1CJw6新しいプロジェクトを作っていたので、リンカーのサブシステム設定?をコンソールにしたら、
無事想定どおりになりました。
正しく処理されているけど、処理が終わって高速で閉じてしまっていたんですね。ありがとうございました。
0434デフォルトの名無しさん
2016/09/23(金) 19:07:06.65ID:WiufwV3Jhttp://en.cppreference.com/w/cpp/algorithm/transform では
while (first1 != last1) {
*d_first++ = unary_op(*first1++);
}
return d_first;
となっていますが
http://cpprefjp.github.io/reference/algorithm/transform.html では
効果が
[result,result + (last - first)) 内のイテレータ i の要素に、それぞれ op(*(first + (i - result))) を代入する
となっています。
日本語の方の op(*(first + (i - result))) の - resultはどこから来ているのでしょうか?
テストプログラム作って動かしてみても日本語の方の説明を理解することが出来ません。
気にせずに英語の方を信じていれば良さそうですが...
0435デフォルトの名無しさん
2016/09/23(金) 19:14:11.35ID:jjS354wW0436434
2016/09/23(金) 19:37:03.24ID:WiufwV3J動作を見てみると
op(*(first + i))
と記述したほうが良いと思うのですが、
op(*(first + (i - result)))
としなければいけない理由はあるのでしょうか?
単純に引数を返す関数を与えてやると、firstからlastの値を、resultからresult+(last-first)にコピーすることになり、
op(*(first+(i-result)))と説明できる動作で無いように思えます。
そもそも、イテレータ同士を足し合わせるような記述が良いのかどうかもわかっていませんが
0437デフォルトの名無しさん
2016/09/23(金) 20:01:47.95ID:kJ5RCJcw0438デフォルトの名無しさん
2016/09/23(金) 20:15:05.19ID:kJ5RCJcw例えば元がint列で出力先がfloat列となるとしたらあなたの書き方では型エラーとなります!
関心事はインデックスです。だから差を取るのです! std::distance
0439デフォルトの名無しさん
2016/09/23(金) 20:32:57.96ID:FB5yu9xqイテレータはポインタの汎化
(first + i)の値firstとiそれぞれをポインタだと考えてみると?
0441デフォルトの名無しさん
2016/09/23(金) 23:31:15.85ID:FY4YgdZ30442デフォルトの名無しさん
2016/09/24(土) 04:56:39.70ID:wJtABjr3誰か簡潔に説明してくれませんか?
0443デフォルトの名無しさん
2016/09/24(土) 05:05:40.95ID:lXjdqoQbすでにあるインスタンスの情報を元に
それをコピーして新しいインスタンスを作るコンストラクタ
一般的にそのコピーの内部処理としてディープコピーが要求されるから注意が必要というだけ
0444デフォルトの名無しさん
2016/09/24(土) 05:07:01.10ID:lXjdqoQb0445デフォルトの名無しさん
2016/09/24(土) 05:14:45.91ID:oYgGfkv1その機能は構造を知ってるクラス自身が持つべきだよね というただそれだけ
でも実際はインターネット上にあふれる情報ゴミを見ればわかるように
コピーが散在すると一元管理が出来なかったり邪魔になるケースも多い
0446デフォルトの名無しさん
2016/09/24(土) 11:19:42.02ID:sun0lWHrA a(param);
A copy = a;
このcopyは自分と同じ型の他のオブジェクトのコピーの意味で生成する。
このコピー生成をメンバーごとのコピーでなくて色々処理するために用意する特別な引数のコンストラクターがコピーコンストラクター。
その形は
A(A const&)
A(A const &, int = 100) など
0447デフォルトの名無しさん
2016/09/24(土) 11:39:12.83ID:r3S5KKxj0448デフォルトの名無しさん
2016/09/24(土) 11:44:20.93ID:sun0lWHr例: A a = A{};
例: A a = f();
例:
void f() {
A a;
return a;
}
0449デフォルトの名無しさん
2016/09/24(土) 11:45:41.83ID:sun0lWHr0450デフォルトの名無しさん
2016/09/24(土) 16:08:40.62ID:9U1MP9t0a = std::move(b); と書かれた場合はすぐに移動だと分かりますが
a = b; とだけ書かれた場合、コピーなのか移動なのかをすぐには判断出来ません。
0451デフォルトの名無しさん
2016/09/24(土) 16:13:53.21ID:a/wjW3kEんなこたーない
0452デフォルトの名無しさん
2016/09/24(土) 16:17:23.25ID:9U1MP9t0えっ?
std::moveが移動の意味で使われないなら一体どういう意味で使われるのでしょう?
実際にコピーになるのか移動になるのかは別としてプログラマーの意図としてはstd::moveは移動の意味で使っているのではないのですか?
0453デフォルトの名無しさん
2016/09/24(土) 16:22:42.28ID:L3fdYMLr0454デフォルトの名無しさん
2016/09/24(土) 16:23:20.57ID:a/wjW3kE↓
>実際にコピーになるのか移動になるのかは別として
勝手に大前提をすり替えられても…
0455デフォルトの名無しさん
2016/09/24(土) 16:37:36.25ID:g/gfVTwZおいおい、>>452の意味であれば、見たまんま上が移動で、下がコピーでしょ。
それ以外の解釈があるのか逆に聞きたいわ。
0456デフォルトの名無しさん
2016/09/24(土) 16:39:07.35ID:/HMHbDuU0457デフォルトの名無しさん
2016/09/24(土) 16:41:46.40ID:r3S5KKxj0458デフォルトの名無しさん
2016/09/24(土) 16:54:53.93ID:a/wjW3kE>とだけ書かれた場合 (中略) 判断出来ません
↓
>判断の余地はありません
>判別できる方法はありませんか?
>とだけ書かれた場合 (中略) 判断出来ません
↓
>見たまんま
このスレを表すかのようなアスペな回答 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
0459デフォルトの名無しさん
2016/09/24(土) 16:59:16.75ID:L3fdYMLr0460デフォルトの名無しさん
2016/09/24(土) 17:26:26.88ID:BW8EWCg4理由を示さず否定なんて誰でもできる
以降のレス見てもケチつけたいだけって丸分かり
0461デフォルトの名無しさん
2016/09/24(土) 18:22:28.37ID:M/J9F64hでコピーってのがコピーコンストラクタによるデータの複写(ポインタとか更新)
ってことかな。
うーん、コピーコンストラクタを作らなかったらオブジェクトのメモリコピーになるんだっけ?
コピーコンストラクタがあるかどうかは、コード見ないと判定できないと思う。
std::moveはよく知らない。
でも、メモリコピーってあんまり必要ないのでは?
ポインタ渡しか、参照渡しにしておいて、コピーが必要がなときは
明示的に仮想関数作って渡したら問題にならないのでは。
A a;
A copy = a;
という書き方をそもそもやめる、という提案です。
virtual A* copy();をAに導入し
class B : public A{} // copyも実装する。
B b;
A* copy = b.copy();
0462デフォルトの名無しさん
2016/09/24(土) 18:53:15.96ID:Qp3BxrXe0463デフォルトの名無しさん
2016/09/24(土) 19:06:23.86ID:M/J9F64hそうなんですか。
詳しくないので私は引っ込みます。
0464デフォルトの名無しさん
2016/09/24(土) 19:24:14.35ID:L3fdYMLrついにmoveセマンティクス知らないのに口出すやつまで登場したか
0465デフォルトの名無しさん
2016/09/24(土) 19:47:12.69ID:tf67xW+x0466デフォルトの名無しさん
2016/09/24(土) 21:10:16.06ID:M/J9F64h>>450へのレスではなく、>>442からの流れで書いていました。
moveも多少読んでみました。
がいまいちよくわからない。
まあ参照使ってれば「私は」いいや。他の人はともかく。
0467デフォルトの名無しさん
2016/09/24(土) 21:31:30.73ID:a/wjW3kE0468デフォルトの名無しさん
2016/09/24(土) 21:59:48.77ID:WCJRreB00469デフォルトの名無しさん
2016/09/24(土) 22:05:08.48ID:L3fdYMLr0470デフォルトの名無しさん
2016/09/24(土) 22:13:13.66ID:g/gfVTwZめっさ使っとるちゅーねん。
0471デフォルトの名無しさん
2016/09/24(土) 22:53:19.88ID:M/J9F64h高速化以外で。
ソースコードの可視性が劇的によくなるとかなら積極的に採用してもいいけど。
0472デフォルトの名無しさん
2016/09/24(土) 23:15:18.97ID:WQBsW3restatic_cast<HOGE &&>(X)みたいな手で毎回キャストを書くようなことを避けられる
あとはその変数がmoveされてそれ以後は使える保証がないことの明示
だと思ってる
0473デフォルトの名無しさん
2016/09/24(土) 23:16:36.25ID:qaJz0JNzただ1つだけ存在すべきオブジェクトはmoveがないと相当使いずらいのでは?
0474デフォルトの名無しさん
2016/09/24(土) 23:38:03.71ID:M/J9F64hここを読んでなんとなくわかった。
でも私はこのサイトの一番最初の参照を使ったやり方でも悪くないと思ってる。
まあ、あれだね。
moveを使うと、かっこいい。ってところだろうか。
とはいえ、分かってる人だけで使うならともかく
あまり知らない人がいるプロジェクトとかで使うのはちょっとためらわれるかな。
速度:参照よりわずかに早い
可読性:人を選ぶ
これを使うことで劇的によくなるアルゴリズムとか・・・:参照とあまり変わらない
に見えました。違ってるかな・・・
>>473も参照使えば問題ないし。
うーん・・・
0475デフォルトの名無しさん
2016/09/24(土) 23:55:16.55ID:WQBsW3re使う人が少ないと罰をうけたりする訳じゃないから好きにしたらいいんじゃないかな
質問に対して回答は試みるけど、如何に〜が魅力的であるかプレゼンしろなんていうのに付き合う義務はないんだよね
0476デフォルトの名無しさん
2016/09/25(日) 00:10:39.35ID:GqGzTSc40477デフォルトの名無しさん
2016/09/25(日) 00:12:43.53ID:lJk8v4pc参照を貰った人よりも所有者が絶対に長生きするなら、参照で渡してもいい。
shared_ptr で所有権を共有する方法もあるけど、
確実に一人しか所有できないオブジェクトは所有権を移譲していかないといけないので、moveセマンティクスが必要になる。
これは unique_ptr を std::move で移譲するようにコーディングされる。
0478デフォルトの名無しさん
2016/09/25(日) 00:14:56.89ID:UzqqdlMx0479デフォルトの名無しさん
2016/09/25(日) 00:50:41.25ID:lStwGWWPだからmoveセマンティクスの構文ラベルサポートとunique_ptrはかなり嬉しかった。
それまで、自作のcopy潰したauto_ptrもどきとswapを多用してたからなー。
0480デフォルトの名無しさん
2016/09/25(日) 02:43:29.63ID:pfZGi8rostd::moveなんてのは付け足しに過ぎん
0481デフォルトの名無しさん
2016/09/25(日) 02:55:36.41ID:ojcO179+0482442
2016/09/25(日) 02:57:09.04ID:jPdJhJQ+答えてくれた方ありがとうございました。
しかし理解は完全にはできませんでした…。
皆さんのレスを参考に勉強を深めたいと思います。
0483デフォルトの名無しさん
2016/09/25(日) 03:14:52.75ID:pfZGi8rohttp://www.ibm.com/support/knowledgecenter/ja/SSGH3R_12.1.0/com.ibm.xlcpp121.aix.doc/proguide/rvaluereferences.html
C++幼稚園児諸君は読んでみて
0484デフォルトの名無しさん
2016/09/25(日) 07:33:31.51ID:hrPU7kVw一時オブジェクトがすぐ、GCされて非効率だから、
String.Buffer を使えと、よく言われる
0485デフォルトの名無しさん
2016/09/25(日) 07:37:03.57ID:Wcpea8Wx一時オブジェクトを量産したら被害甚大
0486デフォルトの名無しさん
2016/09/25(日) 11:20:30.57ID:vCHFqWrvIPlImage* img;
img->imageData[img->widthStep*y+x]
という記述があるのですが
widthStep*y+x
という部分が特に理解出来ません。
この*マークは何の意味があるんでしょうか?
C++も初めて使うので、*がC++の文法によるものなのか
OpenCVの文法によるものなのかも分かりません。
ついでにimageDataというものが何なのかもよく分かりません。
誰か教えてください><
0487デフォルトの名無しさん
2016/09/25(日) 11:26:29.80ID:0li9cgt4(x, y) における画像の参照
1行あたりのデータ数 widthStep に 現在行 y をかけ x 列目 で実現
0488デフォルトの名無しさん
2016/09/25(日) 11:33:00.28ID:fXLErY67* が 掛け算じゃない言語って少なそう
0489デフォルトの名無しさん
2016/09/25(日) 11:59:03.03ID:rJ5VXYcVとか
x + y * img->widthStep
とおなじ
0490デフォルトの名無しさん
2016/09/25(日) 11:59:22.83ID:+9MWYzA+C++だから動的確保のスピードが遅いのか?根拠は?
0491デフォルトの名無しさん
2016/09/25(日) 12:08:05.79ID:vCHFqWrvありがとうございます。
掛け算なのはわかりました、imageDataとかwidthStepとか知らないものが入り乱れてたので
訳が分からなかったのですが、どちらかというとやっぱりOpenCV側への理解が自分に足りてないのが1番問題だったとわかりました。
0492デフォルトの名無しさん
2016/09/25(日) 12:25:29.89ID:1B4pL85n関数ブロック内で持つのはどっちがいいん?
メモリと速度の観点それぞれ
0493デフォルトの名無しさん
2016/09/25(日) 12:34:27.18ID:Kl1oOdje関数ブロック内で持つってどういうことだよ
autoとstaticどっちの話だ
0494デフォルトの名無しさん
2016/09/25(日) 12:36:44.52ID:1B4pL85n1, クラスのメンバ
2, 関数ブロック内でauto
3, 関数ブロック内でstatic
0495デフォルトの名無しさん
2016/09/25(日) 13:29:18.14ID:hrPU7kVwヒープ領域からメモリを取得する方法でも、メモリプールのように、
あらかじめ確保されている領域から、メモリを取得すれば速い
0496485
2016/09/25(日) 13:47:43.52ID:oG/N7H54標準ライブラリの既定のアロケータが劇遅なのは周知の事実だろ
アレクサンドレスクやメイヤー先生も認めていることを今更疑うのか?
http://ideone.com/2E5tI1
http://ideone.com/8nv9TX
あとGCは解放処理が別スレッドで行われることもお忘れ無く
0497デフォルトの名無しさん
2016/09/25(日) 14:40:25.37ID:HSyNyUub0498デフォルトの名無しさん
2016/09/25(日) 15:25:23.88ID:pfZGi8ro固定サイズのnew、delete繰り返してもアロケータの性能評価にはなってないな
もうひと工夫欲しいところだ
0499デフォルトの名無しさん
2016/09/25(日) 15:38:53.20ID:Xdpp91mzdelete呼ばずに測るか、GCするまで測るかしないと不公平じゃね。
0500デフォルトの名無しさん
2016/09/25(日) 16:21:28.26ID:prRy0Y/9いったい何を測定したつもりになってるんだ?
このバカは
0501デフォルトの名無しさん
2016/09/25(日) 20:13:21.40ID:1aUptooJ遅いから日本では自社製作の高速アロケータ使っているところがほとんどだろ?
0502デフォルトの名無しさん
2016/09/26(月) 00:56:43.41ID:Pk4ESFoo0503デフォルトの名無しさん
2016/09/26(月) 08:09:58.71ID:O7LHb0BE0504デフォルトの名無しさん
2016/09/26(月) 08:18:52.70ID:KcJYed3kそれより自動解放・確保を減らすほうがムダがない。
たとえば確保に10ミリ秒と1000ミリ秒かかる二つがあったとしても、いったん確保後に解放せず
使い回せば全体としては大差はない。
0505デフォルトの名無しさん
2016/09/26(月) 08:21:37.30ID:O7LHb0BE0506デフォルトの名無しさん
2016/09/26(月) 08:24:57.98ID:KcJYed3k実験すると確かに早かったりするのだが、実用アプリのボトルネックがメモリ確保なんて事がほぼない。
たとえば全体の処理時間の1-2% 部分を100倍速にしたところで体感できない。
Cアプリを高速化せよ! - 正式リリースされたgoogle-perftoolsを試す
TCMalloc(Thread-Caching Malloc)は通常のmallocよりも高速なメモリ割り当てを実現するライブラリであり、
テスト環境ではglibc 2.3のptmalloc2に比べて約6倍の処理速度を記録したという。
http://news.mynavi.jp/articles/2009/01/27/perftools/
0507デフォルトの名無しさん
2016/09/26(月) 08:27:48.27ID:KcJYed3k実測すべき。
よほどstringの確保を乱用してない限りこだわる意味なし。
ふつうのプログラムしてたらそこがボトルネックに
なることは少ないはず。もしなってたら自動解放させないようにしたらいい。
0508デフォルトの名無しさん
2016/09/26(月) 09:09:06.02ID:UNhnvz4Qc++なら始めに一度十分なサイズでreserveしておけばいい。
0509デフォルトの名無しさん
2016/09/26(月) 09:47:47.74ID:J1+8+U1Vサブルーチンとして使ってた時よりも遅くなるのでしょうか。
0510デフォルトの名無しさん
2016/09/26(月) 13:21:14.93ID:dCLpbBIB0511デフォルトの名無しさん
2016/09/26(月) 15:56:50.93ID:6CUCyCpl占めているものから許容最低限までトップダウン的に高速化していくでしょ。
ボトムアップ的に取り敢えずメモリ確保解放は〜なんて着手するわけない。
手を入れるなら予めここを改善するしかないと判明しているからやるんであって、こんなことやっても意味ない言説は的外れ
0512デフォルトの名無しさん
2016/09/26(月) 20:21:18.22ID:BQOhZwsD開発途中で改善点を洗い出すためにプロファイリングするからな
その結果、メモリ確保解放を改善したほうが良いとなれば改善すると
0513デフォルトの名無しさん
2016/09/26(月) 20:32:03.69ID:up4fCe4GJavaや.NetじゃそうはいかずGCで立ち往生状したりする
0514デフォルトの名無しさん
2016/09/26(月) 20:51:14.28ID:Tqv0EJxCfor文の条件式の箇所には論理積(論理和)を用いた式を使えますか?(i>=0 && i<=10 など)
0515デフォルトの名無しさん
2016/09/26(月) 20:56:31.00ID:fWQfq8Yx論理積(論理和)の結合も式だしー
0516514
2016/09/26(月) 21:20:18.48ID:Tqv0EJxCありがとうございます。
0517デフォルトの名無しさん
2016/09/27(火) 09:11:01.94ID:lZ2V1Ihewhile(条件式)
for( ; 条件式 ; )
やってる事はどっちも同じで「真の間」だからね
0518デフォルトの名無しさん
2016/09/27(火) 14:59:00.77ID:2KXCoLj+0519デフォルトの名無しさん
2016/09/27(火) 15:02:00.27ID:BRQxJXVFwhile (1) で記述する派
for ( ; ; ) で記述する派
0520デフォルトの名無しさん
2016/09/27(火) 15:44:37.05ID:nYSsADemwhile( forever ){
:
:
}
0521デフォルトの名無しさん
2016/09/27(火) 17:29:44.12ID:Kmv19/IP他の書き方はするな、みたいなことを言ってるね。
彼自身は for (;;) を使い、"for-ever" と読み下すそうな。
普段から英語で話す人には分かりやすいのかも。
0522デフォルトの名無しさん
2016/09/27(火) 17:37:17.82ID:pauJ19dH#define v
#define r
for( e v e r ) {
;
}
0523デフォルトの名無しさん
2016/09/27(火) 18:01:10.82ID:lZ2V1Iheforever {
}
0524デフォルトの名無しさん
2016/09/27(火) 18:46:31.81ID:cO8I5ivP#define forever while(1)
とかもありになっちゃって普通
0525デフォルトの名無しさん
2016/09/27(火) 19:29:43.84ID:bFdF3zA0俺は
> for ( ; ; ) で記述する派
の方
当時使ってたコンパイラが
> while (1) で記述する派
に警告を出してたから
0526デフォルトの名無しさん
2016/09/27(火) 19:45:39.04ID:s5OR0fYfwhile(条件式)とfor(;条件式;)ってタイプ数同じだし
0527デフォルトの名無しさん
2016/09/27(火) 19:51:55.86ID:N5Quo4Cu0528デフォルトの名無しさん
2016/09/27(火) 20:16:54.55ID:3O+TtbVtそんなことを言い出したら if と goto あれば do も for も while も要らんわけで...
0529デフォルトの名無しさん
2016/09/27(火) 21:13:05.71ID:g24JTUzj0530デフォルトの名無しさん
2016/09/27(火) 21:23:09.13ID:nYSsADem0531デフォルトの名無しさん
2016/09/27(火) 23:04:57.72ID:g24JTUzjwhileとforは類似点が多く
forがあればwhile要らないんじゃねって意見はわかる
特に最近はrange-based forが使えるようになったから
ますますwhileの出番はなく、俺の中でwhileは空気
0532デフォルトの名無しさん
2016/09/27(火) 23:50:51.34ID:yio6JmTZいまはdo { } while (0)だよな
0533デフォルトの名無しさん
2016/09/28(水) 00:34:57.27ID:5gV7Hb6z0534デフォルトの名無しさん
2016/09/28(水) 01:38:36.66ID:LOSUa8nH無限ループ構文になっていても、カッコの中にbreakやexitという記述があれば警告メッセージは出さない、というのがスジですよねぇ。
0535デフォルトの名無しさん
2016/09/28(水) 06:55:16.68ID:6UKmmY9W物事の本質を捉える能力低すぎやろ w
0536デフォルトの名無しさん
2016/09/28(水) 06:57:01.41ID:6UKmmY9Wそこまでのフロー解析をコンパイラに求めるのもどうかと思う
C なら longjmp 、C++ だと例外で一気抜けとかもあるし
0537デフォルトの名無しさん
2016/09/28(水) 14:11:54.13ID:rAk8UzYM極論を言っているように思えるが
これは究極アセンブラがあればC++は要らないと言っているようなもので
生産性や可読性が全く加味されてない
さらに拡大すると、最終的には人を雇えばプログラムを書かなくてもよいという話にもなり
まったく意味がない話になる
どの「程度」の話をしているかということが全くわかってない
whileをforで置き換えてもタイプ数は変わらないし可読性も落ちないし
生産性も変わらないのでwhile文は空気という話
繰り返し文禁止で全部gotoで書けと言われればかなりの苦痛だが
while文禁止でfor文で書けと言われても、特別困ることはない
実際の作業性を加味したうえで、whileは空気
0538デフォルトの名無しさん
2016/09/28(水) 15:15:57.60ID:+gKRoTUgそのことは、もう忘却の彼方に成ったのでしょうかね。
Fortran IVを多少なりとも構造化しようとして、カーニハンとプローガーのRATFORもどきを
作って、構造化したFRORTNの有難さを感じた世代としては、なんともいえない淋しさ
を感じます
0539デフォルトの名無しさん
2016/09/28(水) 15:21:14.38ID:LOSUa8nHファイル入出力とかで使うんじゃ…。
getline関数とかとセットで。
0540デフォルトの名無しさん
2016/09/28(水) 15:24:56.37ID:BVBInYIb0541デフォルトの名無しさん
2016/09/28(水) 16:18:02.00ID:vx4Qp0Kiwhile (1)でもいいけど、でもfor(;;)やwhile(1)はないな。
0542デフォルトの名無しさん
2016/09/28(水) 16:31:28.12ID:4k0idPe6括弧の前(後)にスペース入れなきゃ気がすまない人いるけど
俺はそんなことにこだわる理由が全然理解できない
スペースなくても別に見づらくないし
0543デフォルトの名無しさん
2016/09/28(水) 16:41:00.47ID:6dmTX/P9if() {
}
if ()
{
}
x = 1 or x=1
( 何か ) or (何か)
他にも色々人によって違い出るで
forだけスペース無し(x=0;x<count;x++)で他は有りとかな
0544デフォルトの名無しさん
2016/09/28(水) 16:44:43.02ID:LrnfCbIH0545デフォルトの名無しさん
2016/09/28(水) 16:51:51.44ID:vx4Qp0Kiifは関数じゃないぞっていう意気込み
もっと言うと、Swiftみたいにifに括弧ない方が好き
0546デフォルトの名無しさん
2016/09/28(水) 17:07:27.59ID:4k0idPe6茶道の作法みたいなもんですね
0547デフォルトの名無しさん
2016/09/28(水) 17:21:01.78ID:LrnfCbIHreturn や sizeof にカッコつけるほう?
sizeof はつけざるをえないときもあるが
0548デフォルトの名無しさん
2016/09/28(水) 17:21:09.78ID:84oTFcVaそのうえで、スタイルが指示されているなら従う
0549デフォルトの名無しさん
2016/09/28(水) 17:42:01.82ID:4k0idPe6明確な基準はないけど必要、あるいは括弧付けたほうが分かりやすいと判断した場合以外は付けないな
0550デフォルトの名無しさん
2016/09/28(水) 17:44:07.81ID:U6w9RFFkやってることは同じじゃん
0551デフォルトの名無しさん
2016/09/28(水) 17:55:48.87ID:BVBInYIb0552デフォルトの名無しさん
2016/09/28(水) 17:55:55.64ID:4k0idPe6意味不明
関数は付けなきゃ文法エラーだがreturnには付ける「必要」はないんだが
0553デフォルトの名無しさん
2016/09/28(水) 17:57:34.46ID:4k0idPe6その通り
無能に限ってくだらないことに拘るんだよなあ
0554デフォルトの名無しさん
2016/09/28(水) 18:51:33.57ID:6dmTX/P9いくら部下のやり方の方が優れてても「俺のやり方じゃないと通さない」っていうダメ上司みたいw
0555デフォルトの名無しさん
2016/09/28(水) 18:58:21.84ID:4k0idPe6別にw
括弧/スペース要らないところで他人がどうしようが困らないし
変なこだわり持ってこっちに強制してきそうな無能に反論してるだけだよ
0556デフォルトの名無しさん
2016/09/28(水) 19:15:06.35ID:6dmTX/P9強制してきそうってのは完全に妄想
やっぱりくだらない事に拘って反論してるわけやん
0557デフォルトの名無しさん
2016/09/28(水) 19:17:18.51ID:l25Piymsオプションで目が眩みそうになるけど・・・ 色々な流儀があるんだなー
0558デフォルトの名無しさん
2016/09/28(水) 19:36:11.27ID:4k0idPe6キミは知らんようだけど実際にそういうくだらないことを強制してくるやつはいるんだよ
>>541はそういうやつの典型的パターンだったからそれに反応しただけ
0559デフォルトの名無しさん
2016/09/28(水) 20:07:54.67ID:X231kNmm本当にわかってないんだな w
> while文禁止でfor文で書けと言われても、特別困ることはない
で、お前は while 使ってないんだよね?
0560デフォルトの名無しさん
2016/09/28(水) 20:10:50.74ID:6dmTX/P9>>541自身が区別したいだけやん
それも妄想
0561デフォルトの名無しさん
2016/09/28(水) 20:18:07.08ID:vx4Qp0Kiあとコーディングルールを強制するつもりはない、
俺が心の中でこのコードないなと思うだけだ。
仕事が出来ないとは言わないが、細部に拘れないやつに良いものは作れないと思ってる。
まあ拘りすぎもダメだけど
そういえば、return に()つけると意味が変わるっけ?
0562デフォルトの名無しさん
2016/09/28(水) 20:18:59.22ID:4k0idPe6本当に「自身」だけならどうでもいいんだけどねーw
意味のない区別を強制してくるやつが居るってこと
こいつが現状どういう立場なのか知らんけど、俺はそういう芽を見つけたら駆除したくなる
そういうバカが何かの間違いで俺に指示する立場になるということは良くあることだから
まあ、もうこの話題はいいわ
0563デフォルトの名無しさん
2016/09/28(水) 20:20:57.74ID:l25Piymsreturn の 括弧の有無で意味は変わらないねー
0564デフォルトの名無しさん
2016/09/28(水) 20:28:45.13ID:29lmmJ5Uタイプを間違ってた時に
コンパイルでエラーになるか
リンクでエラーになるか
0565デフォルトの名無しさん
2016/09/28(水) 20:28:52.14ID:vx4Qp0Ki何様と思われるだろうけど、忠告させてくれ。
何度もコードを指摘されるのは562にも問題があると思う。
周りに合わせるのは大事だし、プログラムが動けば良いってもんじゃない。
0566デフォルトの名無しさん
2016/09/28(水) 20:29:20.01ID:vx4Qp0Ki>>564
いや、確か意味があったはずなんだ。
0567デフォルトの名無しさん
2016/09/28(水) 20:33:52.73ID:l25Piymssizeof とごっちゃになってない?
int a;
変数 は括弧不要 → sizeof a
型名 は括弧必要 → sizeof (int)
0568デフォルトの名無しさん
2016/09/28(水) 20:37:58.36ID:vx4Qp0Ki0569デフォルトの名無しさん
2016/09/28(水) 20:42:59.61ID:l25Piymsreturn <expression> ;
return <braced-init-list> ; // C++11 以降
<expression> 中の括弧の有無で 右辺値に なれる/なれない が変わる?
0570デフォルトの名無しさん
2016/09/28(水) 21:07:56.71ID:vx4Qp0Ki元々は、decltype(x)とdecltype((x))の違いで、
C++14で、decltype(auto) func() { ... みたいに書けるようになったため、
return x; と return (x); で意味が変わり、
return (x); だとローカル変数の参照を返すので危ないと書いてあった。
そもそも decltype(auto) func() を作る機会が思いつかないので免れたかな。
0571デフォルトの名無しさん
2016/09/28(水) 21:14:12.43ID:l25Piymsありがとう 認識を改めないといかんなー
0572デフォルトの名無しさん
2016/09/28(水) 21:31:51.90ID:SLrbrHK3>decltype(x)とdecltype((x))の違い
あったな。これが原因(の絡みで)でreturn x; と return (x); で意味が異なるってなるってなったのか
C++11すらあんまりわかってない俺はdecltypeにautoのdecltype(auto)って何だこりゃだな。
俺は停滞しまくりだが、C++はC++17近しだよな
0573デフォルトの名無しさん
2016/09/28(水) 21:56:38.09ID:hvZOs0TR関係無い回答で納得してしまう>571が謎だ
0574デフォルトの名無しさん
2016/09/28(水) 22:14:11.17ID:l25Piyms0575デフォルトの名無しさん
2016/09/28(水) 22:42:49.97ID:RacjfkjOdecltype(auto) j = i;
decltype(auto) k = (i);
間違いなく今世紀最大のクソ言語
0576デフォルトの名無しさん
2016/09/28(水) 22:53:44.80ID:vx4Qp0Kidecltype(auto) y = (x + x);
このとき y は int
0577デフォルトの名無しさん
2016/09/28(水) 23:05:10.47ID:RacjfkjO0578デフォルトの名無しさん
2016/09/28(水) 23:32:02.96ID:4k0idPe6老婆心は微笑ましいけど「何度もコードを指摘される」なんてことは発生したことはなくあなたの妄想でしかないから
その辺はしょうがなくうまく立ち回れるくらいのスキルは持ってるんだよねえw
自営でプログラマーやってるから
ただ指摘されないようにくだらないルールに合わせるのがウザイというだけ
0579デフォルトの名無しさん
2016/09/29(木) 00:15:22.02ID:AHkufWWDそれが嫌ならプログラマなど止めてしまえ。
コーディング規則なんて会社ごとに違うわ
0580デフォルトの名無しさん
2016/09/29(木) 01:16:13.60ID:EoqEFEeY0581デフォルトの名無しさん
2016/09/29(木) 01:29:45.45ID:NvmLPMZP0582デフォルトの名無しさん
2016/09/29(木) 01:32:35.94ID:yhZ0k38rその無駄なリソースをコーディングに向けてさっさと仕上げろよ
ってことかなーと思うんですけどね
0583デフォルトの名無しさん
2016/09/29(木) 01:49:53.91ID:EoqEFEeYあなたはどんな糞なコーディング規約強制されても文句一つ言わずに従って最高のパフォーマンス出せるの?
ご立派ですねー
0584デフォルトの名無しさん
2016/09/29(木) 02:11:35.90ID:BbAsmN5n0585デフォルトの名無しさん
2016/09/29(木) 02:32:48.74ID:WkkMqF34コーディング規約強制されたことを無能の言い訳にする
0586デフォルトの名無しさん
2016/09/29(木) 03:15:40.91ID:GOP4Mzooほんとに変な規約なら、そのプロジェクト自体が・・・
0587デフォルトの名無しさん
2016/09/29(木) 07:35:02.93ID:i0zTb688実際それをチェックする偉い人がいる現場だとイライラは募るかもね。
不明瞭な仕様とか、データ構造の妥当性とかはまるっきり放置するのに
ifと括弧の間のスペースだの、中括弧の位置だのは細かく見る人。
書く方からすれば「ツールで調べりゃすむ程度のことに拘る無能」だが、
書かせてる方は「簡単な規約さえ遵守できない無能」と思ってるかも。
0588デフォルトの名無しさん
2016/09/29(木) 07:55:30.76ID:RURjFibhここでそんなことする必要ねーからだよ
不必要などうでもいいものを強制するやつってみんな独特なニオイがするな
0589デフォルトの名無しさん
2016/09/29(木) 07:57:55.46ID:RURjFibh一万行書いたあたりで突然出してくる客だって実在した
0590デフォルトの名無しさん
2016/09/29(木) 08:36:54.31ID:ot+4hkTIそれ>>541に言う意味無いやん
勝手に芽と思ってるだけだからやっぱり妄想
>>578
> 「何度もコードを指摘される」なんてことは発生したことはなく
これが本当ならこんなとこで誰かも分からないレスに拘るはず無いやん?
> 合わせるのがウザイというだけ
しかもそのストレスを>>541にぶつけたっていう性格の悪さw
>>588
> ここでそんなことする必要ねーからだよ
ふーん?>>541にケチつける必要も無いけど?
0591デフォルトの名無しさん
2016/09/29(木) 12:58:21.83ID:mzV7fH7Jただし、減らすために別途変数や条件分岐が必要になるなら減らさない方がマシ
というのが俺の中での結論。
異論はいろいろんあると思う
0592デフォルトの名無しさん
2016/09/29(木) 14:20:35.64ID:RURjFibhめっちゃ絡んできてワロタ
なんかトラウマ刺激したのか
0593デフォルトの名無しさん
2016/09/29(木) 14:26:40.32ID:ot+4hkTI本題と関係無かったり矛盾した事言ってるからな
0594デフォルトの名無しさん
2016/09/29(木) 14:40:48.50ID:8bkROWkCgotoの代替として、こういうのはアリだろ?
機械=PC=コンパイラにとってはgotoもこれも大差はないだろうが。
人間にとっては良い。想定外のイチに処理が飛ばないので。
do {
if(・・・) break;
if(・・・) break;
・・・
} while(0);
0595デフォルトの名無しさん
2016/09/29(木) 15:51:12.03ID:f38tS6Kw0596デフォルトの名無しさん
2016/09/29(木) 16:48:56.17ID:bYV2i+3Uそんなことより今からC/C++をやる価値があるかどうか知りたい。
0597デフォルトの名無しさん
2016/09/29(木) 18:23:40.73ID:oWXJ/mgT0598デフォルトの名無しさん
2016/09/29(木) 19:18:47.52ID:FmqTjmM/break2回入れたとこがあった。goto文にした方が良かったな
0599デフォルトの名無しさん
2016/09/29(木) 19:22:58.46ID:XGa6uwRB内部状態が増えるのだけは簡便だよね
0600デフォルトの名無しさん
2016/09/29(木) 21:13:57.17ID:4t22bSxzforは無限ループっていうイメージが私の中にない。
少しの例外を除きカウンタにしか使ってない。
スペースはあってもなくてもあまり気にしないけど i = 1 ;
って、最後のセミコロンの前にスペースを入れるやつがいるんだが、
これだけは気になる。
0601デフォルトの名無しさん
2016/09/29(木) 21:17:39.56ID:NvmLPMZPC/C++はやった方が良い。逆に聞くけど何の言語やったことあります?
0602デフォルトの名無しさん
2016/09/29(木) 22:14:52.26ID:SDSapxWl> gotoの代替として、こういうのはアリだろ?
昔はそう言うコードを書いてたけど今は goto の方が素直でわかりやすい気がしてる
0603デフォルトの名無しさん
2016/09/29(木) 22:39:08.69ID:jq9v4dMk逆にその目的だけなら”goto”って名前じゃなくていいよな。
0604デフォルトの名無しさん
2016/09/29(木) 22:54:48.76ID:f38tS6KwC++はともかくCは必須だよ。新興言語にはライブラリをCで書いてラップしてるだけって例が結構ある
0605デフォルトの名無しさん
2016/09/29(木) 23:15:01.84ID:jq9v4dMk0606デフォルトの名無しさん
2016/09/30(金) 00:12:00.58ID:cU7plTv40607デフォルトの名無しさん
2016/09/30(金) 00:20:01.36ID:W3Po0jck0608デフォルトの名無しさん
2016/09/30(金) 00:20:59.92ID:gp3T6GzE0609デフォルトの名無しさん
2016/09/30(金) 00:52:29.44ID:UE8fG3iM0610デフォルトの名無しさん
2016/09/30(金) 03:44:49.57ID:0KJtriWIcは学先の頃触ったばかりで、以降はJavaやらPythonやら様ってきたのですが、やはり教養のためと、C++の勉強のためにもCの勉強を復活しようと思います。
最近のCのおすすめ書籍、ありましたら教えてください。またC++もよかったら。
ぜひお知恵をお貸しいただけますようお願いします。
0611デフォルトの名無しさん
2016/09/30(金) 07:06:05.39ID:wZVscf4Qhttps://www.amazon.co.jp/dp/4320026926/
0612デフォルトの名無しさん
2016/09/30(金) 13:23:41.75ID:PZ9iLra5望洋先生の本でいいと思うけどなぁ。
0613デフォルトの名無しさん
2016/09/30(金) 13:56:58.76ID:pF7S0LoSc言語とかc++はもう過去の資産のためとか仕事でしかたなくとかそういいうレベルに落ちついてると思う。
0614デフォルトの名無しさん
2016/09/30(金) 14:10:22.08ID:6eP7Gy330615デフォルトの名無しさん
2016/09/30(金) 18:19:24.02ID:wTHCPI/2C/C++に需要がないと思ってる? 冗談だよね?
過去の資産だけでなく新規案件でも需要あるでしょ
0616デフォルトの名無しさん
2016/09/30(金) 19:58:59.15ID:uFRLLqks苦しんで覚えるC言語って本が良いって聞いたことある。
0617デフォルトの名無しさん
2016/09/30(金) 20:08:37.93ID:wZVscf4Q0618デフォルトの名無しさん
2016/09/30(金) 20:12:02.69ID:7C0TQRjFC++はなんでもあり。
0619デフォルトの名無しさん
2016/09/30(金) 20:16:33.13ID:wZVscf4Qその delphi の厳密さって,単に LL(1) とか,そんなレベルでの厳密さでしょう?マニアにしかわからないよ‥
0620デフォルトの名無しさん
2016/09/30(金) 20:22:10.76ID:CijhFsAGC/C++の文法を使用する必要はないな。
JavaやDOTNETも似た感じだが、LLVMは仮想マシン上ではネイティブへ最適化して変換できるからな。
0621デフォルトの名無しさん
2016/09/30(金) 20:39:50.46ID:FIOMq8zg0622デフォルトの名無しさん
2016/09/30(金) 20:46:42.87ID:wZVscf4Q実例は?
0623デフォルトの名無しさん
2016/09/30(金) 21:07:42.48ID:FIOMq8zg標準ライブラリのtupleはテンプレートで再帰して実装している
0624デフォルトの名無しさん
2016/09/30(金) 21:21:32.87ID:8XUol38tC/C++を使っているのはおっさんが非常に多いからな
大分前から若い奴はC/C++は過去の資産用言語ってとらえているよな。
若い奴は過去の資産のための言語を先がまだまだある俺のメイン言語にするのは止めたほうが良いって思っている奴が激多いだろな
>>618
delphiの仕事は(ほとんど)ないが、非常に有能な若い奴の個人での主用言語はDelphiなんだろ(?)
ともかく若い時のメイン言語や個人での主用言語は以後の土方人生に大きく影響するだろうからな
0625デフォルトの名無しさん
2016/09/30(金) 21:56:22.22ID:FIOMq8zgboost.filesystemも標準化するしboost.asio辺りが標準化すれば環境依存で苦手だったIO周りはかなり改善される
0626デフォルトの名無しさん
2016/09/30(金) 22:08:58.15ID:YcxBPQVN0627デフォルトの名無しさん
2016/09/30(金) 22:19:24.29ID:FIOMq8zg0628デフォルトの名無しさん
2016/09/30(金) 22:49:37.43ID:kxYP78ac0629デフォルトの名無しさん
2016/09/30(金) 22:51:06.39ID:yLds8XB40630デフォルトの名無しさん
2016/09/30(金) 23:19:43.63ID:OobEUz+z0631デフォルトの名無しさん
2016/09/30(金) 23:29:34.87ID:+AsgA5H7そう実装しなければならないわけじゃないけどな
愚直に再帰で実装されてるlibstdc++をclang++3.4で使うとmake_tupleの17個でテンプレートの再帰の上限達してエラーになる
0632デフォルトの名無しさん
2016/09/30(金) 23:40:15.93ID:jSdmuZ950633デフォルトの名無しさん
2016/09/30(金) 23:46:27.49ID:toiPz6CM0634デフォルトの名無しさん
2016/09/30(金) 23:47:25.48ID:+AsgA5H7違う
0635デフォルトの名無しさん
2016/10/01(土) 01:47:00.44ID:HQO6WfZW笑った。
C++は古い家を建て増し急速進化させて、急速キテレツ化しているって感じだからな
時期にグラフィック関連も標準ライブラリに入るんだろ?
0636デフォルトの名無しさん
2016/10/01(土) 01:59:01.04ID:hwPNFikt上位互換じゃない?
Cに劣る要素が見当たらないんだけど。
0637デフォルトの名無しさん
2016/10/01(土) 02:09:47.19ID:+g0scf9pC言語にしかない仕様があるから完全には上位互換ではない
0638片山博文MZ ◆T6xkBnTXz7B0
2016/10/01(土) 02:14:52.12ID:Ja0BXeArC++ではvoid *型からの代入に型キャストが必要だとか。
0639デフォルトの名無しさん
2016/10/01(土) 02:19:27.05ID:HQO6WfZWCもC++同様に進化しているからな。
俺らCもスレッド必要ニダ。じゃPOSIXをパクって標準でサポートするようにするニダよとかしてたりな
0640636
2016/10/01(土) 02:44:14.10ID:hwPNFiktあとは構造体を機能拡張してクラスも使えるようになれば便利なんだけどな。継承とかはなくていいから。
0641デフォルトの名無しさん
2016/10/01(土) 02:59:13.83ID:+g0scf9p0642デフォルトの名無しさん
2016/10/01(土) 03:01:25.37ID:+g0scf9p0643640
2016/10/01(土) 05:55:37.76ID:hwPNFikt0644デフォルトの名無しさん
2016/10/01(土) 06:50:44.04ID:cvsJ/xEf現行のC++はC99の仕様を参照しててそれの大体は使えるけど、
C99にあってC++には無い機能の一つに可変長配列(VLA)がある。g++やclang++ではコンパイラ拡張で使えるけど
0645デフォルトの名無しさん
2016/10/01(土) 11:24:10.07ID:VchZZ4F3そうじゃない世界は過去資産活用と感じられるのだろうけれど。
0646デフォルトの名無しさん
2016/10/01(土) 13:41:24.02ID:tJCoDE3r0647デフォルトの名無しさん
2016/10/01(土) 14:37:19.52ID:HXUnT6fU0648デフォルトの名無しさん
2016/10/01(土) 14:49:35.51ID:+g0scf9p0649デフォルトの名無しさん
2016/10/01(土) 14:57:16.35ID:7Mwksrxi20桁の精度で計算しなければならない天文計算では重宝しますし、行列計算がサブルーチンを
作らなくても、出来るので、3次元の座標回転の計算する場合に重宝しています。
天文計算もC++の2倍長計算でやって居たのですが、有効数字が15桁ではちょっと足りなくて
やむなく、Fortranに切換えました。
ただ書き変えがなかなか面倒です。
0650デフォルトの名無しさん
2016/10/01(土) 15:01:45.15ID:dR7+Y2Tjよく知らないけどROOTとかGEANTとか
0651デフォルトの名無しさん
2016/10/01(土) 15:09:43.92ID:dR7+Y2Tj0652デフォルトの名無しさん
2016/10/01(土) 15:31:37.25ID:+g0scf9pC++にも多倍長演算のライブラリはたくさんあるし組み込み型としてlong doubleとかGCCなら__float128が定義されている
もちろんそれが使えるかどうかは環境次第だができないというわけではない
Fortranにしても疑似ではなく本物の4倍精度を扱おうと思ったら専用のハードとコンパイラが必要だから言語がどうとかいう問題ではないと思う
行列計算も組み込み型かのような使い方ができるライブラリもたくさんあるしFortranでなければならない点にはならない
0653デフォルトの名無しさん
2016/10/01(土) 16:00:09.83ID:l0L6Bk0U0654デフォルトの名無しさん
2016/10/01(土) 16:11:51.37ID:7Mwksrxi簡単には捨てられない。
ただFortranでこまるのは、文字処理関係に弱いことです。
例えば数字文字列を直接数値に変換する関数
たとえばC/C++のatoi()などがないので、
いったん、その数値を文字として出力し、それを数値として
あらためて読み込むという処理が必要になり面倒です。
0655デフォルトの名無しさん
2016/10/01(土) 17:54:37.90ID:PXUewI6aゲーム
数理ファイナンス
0656デフォルトの名無しさん
2016/10/01(土) 18:08:01.01ID:TJEFC+Kp>例えば数字文字列を直接数値に変換する関数
>たとえばC/C++のatoi()などがないので、
>いったん、その数値を文字として出力し、それを数値として
>あらためて読み込むという処理が必要になり面倒です。
すげー面倒くさいコトしてるね。内部ファイル使えよ。
0657デフォルトの名無しさん
2016/10/01(土) 18:08:56.38ID:0/7bEmyj0658デフォルトの名無しさん
2016/10/01(土) 18:14:54.78ID:dR7+Y2Tjそうじゃない分野を一々挙げる必要もないレベル
特にネットワークを始めとした外部インターフェースが異常に弱いからねfortranは
0659デフォルトの名無しさん
2016/10/01(土) 18:25:09.47ID:mCe+YKjm出来ないのは見た事ないな
0660デフォルトの名無しさん
2016/10/01(土) 22:24:38.05ID:0ZCGRp5b最近のfortranはC++と違ってPythonみたいな部分配列取れる上に多次元配列の扱いもめっちゃ楽やぞ
0661デフォルトの名無しさん
2016/10/01(土) 22:31:44.62ID:Bzv21fY0コボルみたいな長寿だな
もう独壇場じゃなくてエンジニアは土壇場だろ
0662デフォルトの名無しさん
2016/10/01(土) 22:41:23.56ID:0ZCGRp5b問題はFortranのメインユーザーである老害がFortran77しか使えないことだ
オワコンやね
0663デフォルトの名無しさん
2016/10/01(土) 22:55:16.37ID:XObvXcZu0664デフォルトの名無しさん
2016/10/01(土) 23:20:40.00ID:HQO6WfZWそうなんんか。超骨董言語も進化しているんだな
俺Fortranは全く使ったことがないからさっぱりだけど
C/C++からすごい奴作成のFortranの数値ライブラリとかを呼び出して使っている奴はいそうだよな
GCCだとC/C++だけじゃなくFortarnも提供しているgcc build多いからな
0665デフォルトの名無しさん
2016/10/02(日) 00:07:16.38ID:L5k+5V7wlong double
をテストしてみたけれど、16桁でdoubleと同じ。
20桁以上の数値を計算したいので、どうしてもFortranを使うしかないかもしれない。
もし無料で、30桁以上のlong doubleが使えるC++のコンパイラが
あれば教えてください。
0666デフォルトの名無しさん
2016/10/02(日) 00:18:54.63ID:TJofyDyJと言い出すに違いない
0667デフォルトの名無しさん
2016/10/02(日) 00:18:54.94ID:LuMhVifb0668デフォルトの名無しさん
2016/10/02(日) 00:51:43.82ID:UcBrllwC0669デフォルトの名無しさん
2016/10/02(日) 00:54:13.82ID:UcBrllwC定番のGMP、mpirとその小数点版の動作確認してみるか。
0670デフォルトの名無しさん
2016/10/02(日) 00:56:16.21ID:LuMhVifb0671デフォルトの名無しさん
2016/10/02(日) 02:54:49.06ID:uMOBDxf3×独壇場
○独擅場
0672デフォルトの名無しさん
2016/10/02(日) 04:39:29.16ID:U2lDH2TzインテルCPU環境だと80bitの浮動小数点数が long double だったりする。
数値演算コプロセッサの8087が外付けだった時代からの名残りとか。
んで、複雑で精度の高い数値計算のためにFORTRANのライブラリを使うけど、
それ以外の部分は別の言語で楽に書きたい、とか考えると
中継部分をCで書くのが一番自然だったりする。
引数がどういう具合にスタックに積まれて関数に渡されるか、みたいな
生のバイトデータを扱う高級アセンブラ的な使い途ね。
0673デフォルトの名無しさん
2016/10/02(日) 06:54:41.53ID:QFl4EKwL0674デフォルトの名無しさん
2016/10/02(日) 09:43:38.75ID:Ojkv5xClendlとflashが出てきましたが、endlは\nと違うんですか?
0675デフォルトの名無しさん
2016/10/02(日) 10:09:26.77ID:UcBrllwC\nは改行ではあるが、ただちに画面等に出力するかの保証なしと、
改行には\r\nとかもあるし、windowsではワイド文字の場合もある。それらを一括あつかいできる。
0676デフォルトの名無しさん
2016/10/02(日) 14:09:37.97ID:arJtaGW9へー、ソースは?
0677デフォルトの名無しさん
2016/10/02(日) 14:39:57.22ID:UcBrllwCワイド文字出力のときも、endl。
wcout - MSDN - Microsoft
使用例
wcout ステートメントの CString インスタンスは、次の例に示されているように const wchar_t* にキャストする必要があります。
CString cs("meow");
wcout << (const wchar_t*) cs << endl;
https://msdn.microsoft.com/ja-jp/library/sda3xxca.aspx
0678デフォルトの名無しさん
2016/10/02(日) 14:46:19.06ID:arJtaGW90679デフォルトの名無しさん
2016/10/02(日) 14:48:47.78ID:qO/j016b0680デフォルトの名無しさん
2016/10/02(日) 14:55:32.36ID:aAAtYBE20681デフォルトの名無しさん
2016/10/02(日) 14:58:34.15ID:UcBrllwCwcout<<endl; はコンパイルできるはずだが、
wcout<<"\n";はNGのはずだぞ。
0682デフォルトの名無しさん
2016/10/02(日) 15:04:41.90ID:arJtaGW9おまえは>>675の時点で「"\n"」でなく「\n」と書いているのだが
いきなり何を関係無いことを言い出すんだ
0683デフォルトの名無しさん
2016/10/02(日) 15:09:35.82ID:vJd4d8QB0684デフォルトの名無しさん
2016/10/02(日) 15:12:36.41ID:vJd4d8QB>wcout<<"\n";はNGのはずだぞ。
俺のところのVS2015ではエラーにならんな。Unicode設定でもマルチバイト設定でも。
規格的にどうなのか知らんが。
0685デフォルトの名無しさん
2016/10/02(日) 15:30:07.93ID:arJtaGW9template<class charT, class traits>
basic_ostream<charT, traits>& operator<<(basic_ostream<charT, traits>& out, const char* s);
0686デフォルトの名無しさん
2016/10/02(日) 15:52:56.19ID:GxRMdu/c0687674
2016/10/02(日) 21:12:02.90ID:Ojkv5xCl細かな説明はよく分かりませんでしたが…。
0688デフォルトの名無しさん
2016/10/02(日) 23:47:14.06ID:arJtaGW9取りあえず『endlは改行した後、ただちに出力させる』と覚えとけ
0689デフォルトの名無しさん
2016/10/03(月) 00:01:19.31ID:H4QXTqVfまあリダイレクトせず端末だと変わらんのだが
0690デフォルトの名無しさん
2016/10/03(月) 00:20:07.22ID:mwBLg7E90691デフォルトの名無しさん
2016/10/03(月) 01:16:43.54ID:+IxkRGi80692デフォルトの名無しさん
2016/10/03(月) 01:17:57.28ID:+IxkRGi8printfのほうが遅いのか
0693デフォルトの名無しさん
2016/10/03(月) 01:21:03.00ID:+IxkRGi8スレ汚しスマン
0694687
2016/10/03(月) 01:27:52.00ID:z0FmA4JVでは\nはただちに出力させないんですか?
今読んでるRさんの本クセあるんです…。
0695デフォルトの名無しさん
2016/10/03(月) 01:36:43.55ID:4zOL+ykU0696デフォルトの名無しさん
2016/10/03(月) 01:51:12.26ID:KavFsBqz0697デフォルトの名無しさん
2016/10/03(月) 02:09:06.85ID:HZ6jvwGIストリームの下回りにprintf系を呼び出してる実装は遅くなる要素しかない
0698デフォルトの名無しさん
2016/10/03(月) 02:20:08.83ID:a2PPRqH/それが文字列の中に、入っているというだけ
その文字列がいつ出力されるのか、とは別の話
0699デフォルトの名無しさん
2016/10/03(月) 13:28:46.20ID:/2MLxVBWデフォルトはどうだったけか
0700デフォルトの名無しさん
2016/10/03(月) 13:30:37.31ID:RKI08UEe0701デフォルトの名無しさん
2016/10/03(月) 13:33:00.39ID:AhgtfWPzfflush() を明示的によぶしかなかろうて
0702デフォルトの名無しさん
2016/10/03(月) 13:33:43.23ID:RKI08UEeUNIX系でprintfを使って文字を表示する場合、改行の"\n"を出力しないかぎり画面に文字が表示されないことは有名な話です。
しかし、場合によっては改行しないで画面に文字を表示したいときがあります。
そういうとき、fflushを使うと望み通りに文字列を画面に表示する事が可能です。
http://www.geocities.co.jp/SiliconValley/6071/technic/49.html
0703デフォルトの名無しさん
2016/10/03(月) 14:38:26.43ID:D+L5V3vestderrはバッファなし
setbuf(stdout, NULL)すればstdoutもバッファしなくなる
0704デフォルトの名無しさん
2016/10/03(月) 15:30:00.70ID:+VMXdctO0705デフォルトの名無しさん
2016/10/03(月) 15:37:18.77ID:Bx8lzmG+最初にfopen 終了時にfclose 書き込み時に毎回fflushしてるわ
0706デフォルトの名無しさん
2016/10/03(月) 17:54:45.44ID:lnVrcGiliostream並みに遅くなった試しがない
0707デフォルトの名無しさん
2016/10/03(月) 19:12:08.38ID:64xioRW90708デフォルトの名無しさん
2016/10/03(月) 21:50:18.41ID:KavFsBqzその代わりstreamは型安全
型を決め打ちしてるprintf,scanfとの速度の違いはそこ
0709デフォルトの名無しさん
2016/10/03(月) 22:18:16.86ID:eL0UbW2l型安全はオーロードでゼロオーバーヘッドだと思ってたぜ
0710デフォルトの名無しさん
2016/10/03(月) 22:23:57.42ID:jTjA6fWe0711デフォルトの名無しさん
2016/10/03(月) 22:38:55.02ID:jTjA6fWe組み込みの疑似関数みたいなもの。
真面目に関数呼び出しするならstreamの処理の方が速い筈なんだけどね。
さらにsync_with_stdioも重い原因
0712デフォルトの名無しさん
2016/10/04(火) 01:04:24.06ID:yYMkyBvy力を貸して欲しいです。
unsigned char ch; // バイナリファイルを読み込んだ結果
int length; // バイナリファイルのサイズ
std::string methodA () {
string str = std::string(ch, length) // バイナリを格納したunsigned char型文字列をstring型に変換
printf(
0713デフォルトの名無しさん
2016/10/04(火) 01:52:17.07ID:tduX/YMQ0714デフォルトの名無しさん
2016/10/04(火) 08:30:12.26ID:cpDRv874unsigned char ch; // これは1バイトしか格納できません
0715デフォルトの名無しさん
2016/10/04(火) 09:15:52.17ID:b3H+v7Isstr = std::string(length, ch);
0716デフォルトの名無しさん
2016/10/04(火) 16:26:43.41ID:Izmk1Ydi0717デフォルトの名無しさん
2016/10/04(火) 21:11:47.03ID:WEyUe7wf0718デフォルトの名無しさん
2016/10/04(火) 22:02:14.17ID:PvvXDjpC0719717
2016/10/04(火) 23:57:04.72ID:WEyUe7wfありがとうございます。
ただ、「わかりやすいJava」という本で(Javaの本ではありますが)、コンストラクタは、名前がクラス名と同じであり、戻り値の記述も無いため、メソッドでは「ない」と明言されていたので当惑していました。
どうとらえればいいですかね?
0720デフォルトの名無しさん
2016/10/05(水) 00:06:46.73ID:Pt+EeEmoその本が信用できないなら規格書かなんかでJavaにおけるメソッドの定義を調べてくれ
0721デフォルトの名無しさん
2016/10/05(水) 00:13:00.25ID:SIzgJBAgC#:コンストラクターは関数だがメソッドではない
JavaScript:コンストラクターは関数
Java:関数何それ。コンストラクターはメンバーですらない。メソッドでもない
0722デフォルトの名無しさん
2016/10/05(水) 00:31:15.00ID:SIzgJBAg・クラスの中に含まれるもの
・コンストラクター
・メンバー
・フィールド
・メソッド
・インナークラス
C++はこうか
・クラスの中に含まれるもの=メンバー
・static_assertとか
・コンストラクター <関数>
・非静的メンバー関数 <関数>
・静的メンバー関数 <関数>
関係無いがC++のドラフトのメンバー定義に「deduction guide」が追加されてるな 何だこりゃ
0723719
2016/10/05(水) 01:31:05.26ID:D107n7zLありがとうございます。
みなさんのレスを参考に、C++では関数ですがJavaではメソッドではない、という捉え方をさせて貰うことにします。
0724デフォルトの名無しさん
2016/10/05(水) 01:38:47.50ID:TxD7Qy4b0725デフォルトの名無しさん
2016/10/05(水) 01:45:28.08ID:RYEURUHh0726723(追記)
2016/10/05(水) 02:02:03.30ID:D107n7zLメソッドはクラスの中でのみ定義されるもので云々とあり、この辺に理由があるみたいです(間違っていたらすいません)。
0727デフォルトの名無しさん
2016/10/05(水) 02:04:14.94ID:PU8Th8F30728デフォルトの名無しさん
2016/10/05(水) 03:21:56.55ID:VfzqlzrYメソッドってのはクラスのメンバ関数。
暗黙のうちにthisポインタを引数として持つものを言う。
関数は普通の関数。引数に余分なものは追加されない。
0729デフォルトの名無しさん
2016/10/06(木) 00:35:54.12ID:U3zAstIl複数のプロジェクトで、原因不明なLNK2019: 未解決の外部シンボルのエラーが発生します
これを無くすべくコメントアウトして、エラーの個所を特定しようといじっていると突如このエラーが消えます。
かと思えば忘れたころにまた同じエラーが発生し、繰り返すことになるのですが、一体何が原因なのでしょうか?
ソースコードが膨大なのであげることは憚られるのですが、よくある原因の、関数名が一致していない為、ではないようです。
また、他のPC上では問題なく動作するのです。
どなたか同じ現象に悩まされたことがある方はいますか?
0730デフォルトの名無しさん
2016/10/06(木) 00:53:46.69ID:lB9calLCビルド順かなぁ?
0731デフォルトの名無しさん
2016/10/06(木) 06:10:09.00ID:5ou6x1p8リンク時にライブラリを書き並べる順番によっては
外部参照名の解決に失敗するって問題が起きたが、
統合開発環境にも適用できる話か分からん。
0732デフォルトの名無しさん
2016/10/06(木) 06:32:05.17ID:WlcexWUSプロジェクトまたがるヘッダファイルをプロジェクトに含めてないとか
0733デフォルトの名無しさん
2016/10/06(木) 07:01:57.67ID:5esayM0K0734デフォルトの名無しさん
2016/10/08(土) 13:15:21.33ID:uEHRjK0lint a[640][480];
みたいなことをやりたいのですが、サイズがデカすぎるとかでエラーになるので
int **a;
ってやってみました。
a[0][0]=0;
はエラーなく通るのに
a[1][0]にするとエラーになります。
何が原因で、どうやったらエラーを出さなくできますか?
0735デフォルトの名無しさん
2016/10/08(土) 13:22:46.86ID:5VQX36u5http://members3.jcom.home.ne.jp/progstudio/cpp_tips2.html
0736デフォルトの名無しさん
2016/10/08(土) 13:25:37.16ID:d3anv779ポインタと配列は異なる
特にポインタのポインタと二次元配列は全然異なる
その辺の理解が足りないのが原因
0737デフォルトの名無しさん
2016/10/08(土) 13:30:01.26ID:++vYQgKnポインタの指す先の領域を用意していないからだろう
http://ideone.com/sGFvMy
0738デフォルトの名無しさん
2016/10/08(土) 13:31:28.24ID:S1TCpLDs//↓はポインタのポインタなので
int **a;
//以下の様に確保した後に
const int width = 640, height = 480;
a = new int*[width];
//さらに各要素ごとにメモリを確保する必要があります
for (int i = 0;i<width;++i) {
a[i] = new int[480];
}
//開放するときも以下の様にする必要があります
for (int i = 0; i<width; ++i) {
delete[] a[i];
}
delete[] a;
0739デフォルトの名無しさん
2016/10/08(土) 13:33:18.30ID:S1TCpLDs0740デフォルトの名無しさん
2016/10/08(土) 13:54:03.31ID:G10JdEJj皆さん親切にありがとうございます。
無事プログラムが動きました、感動しました
0741デフォルトの名無しさん
2016/10/08(土) 14:04:34.19ID:YyjS4FMPスマポを使いましょう
http://ideone.com/u2konZ
0742デフォルトの名無しさん
2016/10/08(土) 14:11:31.33ID:5VQX36u5std::vector<std::vector<int>> a(640, std::vector<int>(480));でいい
0743デフォルトの名無しさん
2016/10/08(土) 14:12:07.25ID:S1TCpLDs0744デフォルトの名無しさん
2016/10/08(土) 15:11:38.03ID:c34JK7xB確保解放でもforってめんどくね?
int **a, width = 5, height = 10;
a = new int*[width];
a[0] = new int[width*height];
for(int i=1;i<width;i++) {
a[i] = (&a[0][width*i]);
}
// a[i][j]でアクセスして色々処理
delete [] a[0];
delete [] a;
0745デフォルトの名無しさん
2016/10/08(土) 16:07:58.05ID:zvqyvirKJavaからこっち来た人かな?
0746デフォルトの名無しさん
2016/10/08(土) 16:13:12.13ID:S1TCpLDsポインタだけ作ってnewあるいはmalloc等メモリ確保をしない辺りの習熟度の人間にそのレベルのものを提示していいとは考えなかった
何を目的に>>734でこのようなことをしようと考えたのかが提示されない状態で質問の回答になる最低限のものを用意した
>>744
非常に面倒くさい
0747デフォルトの名無しさん
2016/10/08(土) 17:08:39.87ID:h4PrAZ2Y他人の回答を見て「お前のやり方はまだまだだ」などとドヤ顔する方が恥ずかしい。
それでもコンテナー・スマポまではまだ良いとして、自分でdeleteするコードを自慢し始めるのは可哀想で仕方ない
0748デフォルトの名無しさん
2016/10/08(土) 17:38:45.55ID:ij4u4Pj50749デフォルトの名無しさん
2016/10/08(土) 18:00:13.42ID:c34JK7xBだよなw
>>747
元の回答に合わせてそれならこっちが楽だなとレスしただけだぞ?
被害妄想か?
0750デフォルトの名無しさん
2016/10/08(土) 18:26:43.73ID:S1TCpLDsあえてやった理由はこんな感じ
640と480ってなんか画像っぽいなー
でもその並びだとたぶん縦横逆だと思うんだよなー
でも画像とか一言も言ってないしなー
っていうかまだポインタのポインタとか手を付けるのやめた方がいいんじゃないかなー
でも対案だしたりやめろって言って質問の回答になってないって言われるのも嫌だしなー
↓
めんどくささのアピールもかねて馬鹿正直に確保と開放ならべよう
0751デフォルトの名無しさん
2016/10/08(土) 18:29:21.29ID:ZGEVZk/0コードは書けば書くほどバグの発生確率を上げるのだから
好き好んでごちゃごちゃ書き連ねる奴の気が知れない
0752デフォルトの名無しさん
2016/10/08(土) 18:46:06.88ID:eEcijZqv>>744はもうなんていうか酷い
突っかかっといてこれってどうよ
forで開放するのが面倒だからとそんなどうでもよいこと考えて
トリッキーなこと考える暇があるんなら
もっと簡単にこう↓書けば済むだけの話なのに
int (*a)[640] = new int [480][640]; //確保
//↓使う
for( int y = 0; y < 480; ++y )
for( int x = 0; x < 640; ++x )
{
a[y][x] = 0;
}
delete[] a; //解放
これなら初心者でも全然わかるし、確保にも開放にもfor文いらない
圧倒的シンプル
もともとC++はこうして使うことを想定して文法が作られている
まったくの既定路線、標準的解法
シンプルにしたい場合、まずこれが思いつかなきゃダメ
ここがスタート地点、場合によってはゴール
なんで糞なテクニックを使いたがるのか、そして教えたがるのか
中途半端に改良した結果糞で何がしたいのかわからない
0753デフォルトの名無しさん
2016/10/08(土) 18:50:39.29ID:eEcijZqvautoを使え
auto a = new int [480][640];
delete[] a;
何にも難しいことはない
0754デフォルトの名無しさん
2016/10/08(土) 20:12:00.66ID:c34JK7xBあれを突っかかっといてってやっぱり被害妄想やん?
0755デフォルトの名無しさん
2016/10/08(土) 20:17:45.09ID:Cqh//nwvID:c34JK7xB はよく恥ずかしげもなく出てこれたなw
しかしそれ以上に恥ずかしいのは>>750のレス
一文字一文字噛みしめるように恥ずかしい
テレ隠しでオタオタしちゃってるのが染み出てて恥ずかしい
0756デフォルトの名無しさん
2016/10/08(土) 20:21:59.42ID:c34JK7xB0757デフォルトの名無しさん
2016/10/08(土) 20:26:04.37ID:MCoYyYao例:int[3] a;など
なんか変か。
0758デフォルトの名無しさん
2016/10/08(土) 20:28:06.20ID:5VQX36u5初期化も解放も不要
代入演算子でコピーもできるしムーブセマンティクスも効くから戻り値に取ってもコピーコストがかからない
0759デフォルトの名無しさん
2016/10/08(土) 20:41:49.95ID:XnkulnElarray_t a; //変数宣言
a[1][2] = 3; //使用
0760757
2016/10/08(土) 21:23:59.81ID:MCoYyYaoありがたいんですが、タイプデフの記述の所の意味がよくわかりませんでした…。
0761デフォルトの名無しさん
2016/10/08(土) 21:38:47.98ID:XnkulnElああごめん、734向けに書いたんだけど、同じだよ。
int型の配列自体を型として、必要なスコープで宣言するわけ。
あとは普通の変数と同様に使える。
>>757なら、
typedef int MyArray_t[3]; //型宣言(スコープ)
MyArray_t a; //変数宣言のみ
MyArray_t a = {0,1,2}; //変数宣言と初期化
MyArray_t b[10]; //配列型の配列
void hoge(MyArray_t *a) //ポインタ渡し
{
(*a)[0] = 3; //デリファレンスして使用
}
などなど
0762デフォルトの名無しさん
2016/10/08(土) 21:40:59.84ID:XnkulnEl大抵、ヘッダでtypedefしてグローバルスコープで使う事が多いかな
ファイルスコープでもローカルでもいいよ
0763デフォルトの名無しさん
2016/10/08(土) 21:47:38.72ID:h4PrAZ2Yとは言え初心者にも使えて例外安全なコードが今ひとつ思い浮かばなかった
http://ideone.com/zXaG2N
0764デフォルトの名無しさん
2016/10/09(日) 00:45:44.65ID:JlGswBM7それが楽だよな。
Cならともかく、今のC++で2次元配列でnew/delete処理を必死にするってなんかなって感じだよな
0765760
2016/10/09(日) 00:49:46.77ID:CesbDVy8あ、そうでしたか。
いずれにしてもありがとうございました。
0766デフォルトの名無しさん
2016/10/09(日) 01:24:05.62ID:g5Vm/sHI0767デフォルトの名無しさん
2016/10/09(日) 02:48:02.25ID:6J6aWDOQ0768デフォルトの名無しさん
2016/10/09(日) 02:55:46.68ID:D5DA+Fn6この概念はわかるだろうから、あとは使えば使い方がわかる
使わないと使い方はわからない
0769デフォルトの名無しさん
2016/10/09(日) 03:04:49.63ID:CesbDVy8アドレスを格納する変数です。
int a;
と定義するとaには整数を代入できるわけですが、この整数の代わりに、変数などに割り当てられているアドレス番地を代入できる変数です。
*を使って、
int *p;
や
int* pt; // C++のみ
などと記述できます。
0770デフォルトの名無しさん
2016/10/09(日) 03:09:56.06ID:kQ8uTekwその「C++のみ」ってのは意味あんの?
0771デフォルトの名無しさん
2016/10/09(日) 03:18:09.67ID:PDnvlXCFガリガリとポインタ使う機会ってあるの?
0772デフォルトの名無しさん
2016/10/09(日) 03:18:41.04ID:PDnvlXCFオブジェクトの参照とかもつかうよね
0773デフォルトの名無しさん
2016/10/09(日) 03:22:40.73ID:b4dakfPd0774デフォルトの名無しさん
2016/10/09(日) 03:25:52.97ID:KWlu0vko動的ポリモーフィズム
0775デフォルトの名無しさん
2016/10/09(日) 03:46:11.99ID:D5DA+Fn6構造体およびその不完全型/不透過型はポインタでやりとりするし
qsortのコールバックの引数はvoid**だし
0776デフォルトの名無しさん
2016/10/09(日) 07:19:46.25ID:tK5O0Gp1いつから775はそう思いこんでいた
0777デフォルトの名無しさん
2016/10/09(日) 07:28:20.26ID:D5DA+Fn6void **にキャストするのと勘違いしてたわ
0778デフォルトの名無しさん
2016/10/09(日) 08:49:16.06ID:X7nfytgR0779デフォルトの名無しさん
2016/10/09(日) 09:23:27.23ID:X7nfytgR>>746>>750
画像処理のラベリングというのをやりたかったんですが
C言語もC++も初心者なので四苦八苦しながらやっているところです
0780デフォルトの名無しさん
2016/10/09(日) 09:49:01.74ID:X7nfytgRa[0]=240
a[1]=10004
a[2]=1023
a[3]=5409
みたいな配列があったとして
配列aをsortすると、中身だけがsortされて
a[0]=10004
a[1]=5409
a[2]=1023
a[3]=240
ってなると思うのですが、
a[0]=240
a[1]=10004
a[2]=1023
a[3]=5409
↓この配列に対して
b[0]=1
b[1]=3
b[2]=2
b[3]=0
というように、配列の中身の大小に対応した配列の番号を取り出したいような時
どういった処理をするのがベストですか?
2つの対応した数字を、片方だけの値でsortして並び替えられれば1次元配列じゃなくても
vectorでも2次元配列でも手段は問わないのですが。。
0781デフォルトの名無しさん
2016/10/09(日) 10:32:44.96ID:1crSfiNI0782デフォルトの名無しさん
2016/10/09(日) 10:56:03.81ID:X7nfytgRありがとうございます!
0783デフォルトの名無しさん
2016/10/09(日) 11:17:33.47ID:+yqYMy9CC/C++ ちゃんぽんだが Visual Studio 2015 で確認
#include <stdio.h>
#include <stdlib.h>
int a[] = { 240, 10004, 1023, 5409 };
static int compare(const void* x, const void* y) {
int xa = a[*(size_t*)x];
int ya = a[*(size_t*)y];
if (xa < ya) {
return 1;
} else if (ya < xa) {
return -1;
} else {
return 0;
}
}
int main()
{
const auto N = sizeof a / sizeof a[0];
size_t b[N];
for(size_t i = 0; i < N; i++){
b[i] = i;
}
qsort(b, N, sizeof b[0], compare);
for (size_t i = 0; i < N; i++) {
printf(
0784デフォルトの名無しさん
2016/10/09(日) 11:19:17.64ID:+yqYMy9Cまあ、結果を表示してるだけだからわかるかな
0785デフォルトの名無しさん
2016/10/09(日) 11:25:57.79ID:PLoscqr1test " test " test
0786デフォルトの名無しさん
2016/10/09(日) 11:26:16.66ID:PLoscqr10787デフォルトの名無しさん
2016/10/09(日) 11:39:46.96ID:M9nJsIddclass cmp {
public:
int *p;
cmp(int *a) : p(a) {}
bool operator()(int x, int y) { return p[x] > p[y]; }
};
int a[4] = {240, 10004, 1024, 5409};
int b[4] = {0, 1, 2, 3};
sort(b, b + 4, cmp(a));
ラムダ使えるなら関数オブジェクト用意しなくてもいい
sort(b, b + 4, [&](int x, int y){ return a[x] > a[y]; });
0788デフォルトの名無しさん
2016/10/09(日) 12:26:16.01ID:X7nfytgR皆さん色々ありがとうございます
少しずつ調べながら試していこうと思います
0789デフォルトの名無しさん
2016/10/09(日) 14:08:02.04ID:+yqYMy9Cなんか条件よくわからんが切れる時がある
0790デフォルトの名無しさん
2016/10/09(日) 16:57:10.40ID:kyAYUOur#include <memory>
int main()
{
constexpr int COL = 640, ROW = 480;
std::unique_ptr<int[][ROW]> a(new int[COL][ROW]);
a[1][0] = 9999;
std::cout << a[1][0] << std::endl;
}
こんなのとか
0791デフォルトの名無しさん
2016/10/09(日) 23:50:28.31ID:Ldbc2NOo0792デフォルトの名無しさん
2016/10/10(月) 01:09:26.35ID:Bk4kbXB60793デフォルトの名無しさん
2016/10/10(月) 04:43:03.74ID:6bVjh2uR2chのバグだろ
書き込み確認画面が出る際、" を使うと、そこで文字列の終了とみなされる。
" を、\" とエスケープすれば、どうだろう?
0794デフォルトの名無しさん
2016/10/10(月) 05:12:42.07ID:9uF4C/7F#include <algorithm>
#include <vector>
#include <utility>
int main()
{
int a[] = { 244, 10004, 1023, 5409 };
int b[] = { 0, 1, 2, 3 };
constexpr int N = sizeof(a) / sizeof(a[0]);
typedef std::pair<int, int> PII;
std::vector<PII> vpii;
for (int i = 0; i < N; i++)
vpii.emplace_back(std::make_pair(a[i], b[i]));
std::sort(b, b + N, [&](int x, int y){ return a[x] > a[y]; });
for (auto i : b)
std::cout << i << std::endl;
std::sort(std::begin(vpii), std::end(vpii), [](PII& x, PII& y){ return x.first > y.first; });
for (auto i : vpii)
std::cout << i.second << std::endl;
}
0795デフォルトの名無しさん
2016/10/11(火) 16:20:43.32ID:IeH7nGOE以前までスタック領域はL3キャッシュ等に確保されているから高速で容量が小さく(1MB程度)低級でOSに支配されていると考えていたのですが
同じく初心者の友人がスタックオーバーフローした!スタックサイズ変える!256MB!などと言って解決しており気が狂いそうになりました
ヒープ領域を使うべき、とかオーバーフローについての解決策は理解しているつもりですので、
スタック領域がハードウェア的に一体どこに確保されているのかご教示いただけませんか?
RAMが番地によってアクセス速度が変わることなんてありませんよね?
0796デフォルトの名無しさん
2016/10/11(火) 16:47:29.16ID:Tk+cPNjp大雑把にいうとコード、データ、スタックを置く三つの領域に分けて管理されてる
0797デフォルトの名無しさん
2016/10/11(火) 17:04:53.76ID:IeH7nGOE0798デフォルトの名無しさん
2016/10/11(火) 17:10:12.67ID:Xd5sJMpcそれは色んな条件に左右される
0799デフォルトの名無しさん
2016/10/11(火) 17:14:29.27ID:5pUb4ulqスタックレジスタに当たっているRAM上のアドレス: スタック
他: データ
0800デフォルトの名無しさん
2016/10/11(火) 17:31:30.02ID:IeH7nGOE容量が小さいことでデータの局所性が高まりキャッシュの使用効率が上がった結果速まることがあるだけで
ハード的には同じRAMで速度は変わらないんですね
皆様のお陰で少し冷静になれました、ありがとうございました!
0801デフォルトの名無しさん
2016/10/11(火) 18:39:21.42ID:n/wutvzL0802デフォルトの名無しさん
2016/10/11(火) 18:41:25.35ID:Tk+cPNjp0803デフォルトの名無しさん
2016/10/11(火) 18:45:21.60ID:sSjTKHHD0804デフォルトの名無しさん
2016/10/11(火) 20:18:01.85ID:nwrHMQee0805デフォルトの名無しさん
2016/10/11(火) 20:20:47.82ID:DTQ2U52n0806デフォルトの名無しさん
2016/10/11(火) 20:23:57.73ID:hGW6J+ki0807デフォルトの名無しさん
2016/10/11(火) 20:54:38.77ID:rvdgZgux0808デフォルトの名無しさん
2016/10/11(火) 21:12:59.40ID:DIlrAbrXおいおい、まぁ、前提条件のC言語マスターが激しく大変だろからな
暗記アプリってpiを100万桁覚えるとかするためのアプリだろ
0809デフォルトの名無しさん
2016/10/12(水) 01:11:33.10ID:KqiGITqk0810デフォルトの名無しさん
2016/10/12(水) 01:22:12.02ID:qs09U+gu出来るんじゃないの?(CUIなら)
0811デフォルトの名無しさん
2016/10/12(水) 09:18:15.90ID:0qBDR/o0他に専門的な知識が要るものでもないし。
出来ないならそれはC言語をマスターしてないだけだ。
0812デフォルトの名無しさん
2016/10/12(水) 11:04:24.26ID:ygteO6C50813デフォルトの名無しさん
2016/10/12(水) 11:21:12.98ID:UeSSOb4c0814デフォルトの名無しさん
2016/10/12(水) 11:56:10.32ID:Bk/iMyy80815デフォルトの名無しさん
2016/10/12(水) 12:56:24.44ID:Mk78s3RE暗記アプリってのがどんなものか判らないけど多分Perlがお似合い
0816デフォルトの名無しさん
2016/10/12(水) 19:15:05.77ID:oek5pIEh0817デフォルトの名無しさん
2016/10/12(水) 22:53:32.28ID:nedjmfNoラノベを出筆するくらいに方向性の違う能力。
若しくはオナニーマスターだけどDTみたいな。
0818デフォルトの名無しさん
2016/10/14(金) 00:22:29.38ID:SrS85Be20819デフォルトの名無しさん
2016/10/14(金) 06:57:45.98ID:5cxOTwULすごくお下品な例えを見てみたくなるな。
『はじめてのC』もちょっと狙った感じの書名だったね。
0820デフォルトの名無しさん
2016/10/16(日) 22:01:00.01ID:E0PWP2JD0821デフォルトの名無しさん
2016/10/16(日) 22:03:48.41ID:E0PWP2JD規格を熟読した今となってはゴミ同然
0822デフォルトの名無しさん
2016/10/17(月) 05:16:11.27ID:WQbb/OBd0823デフォルトの名無しさん
2016/10/17(月) 08:20:50.29ID:N3gfqfmr催眠効果と呼ぶことにする
0824デフォルトの名無しさん
2016/10/17(月) 20:09:15.87ID:R5CCSZPrこれをロベール効果と呼ぶ。
0825デフォルトの名無しさん
2016/10/17(月) 21:13:06.88ID:zv6p4a9yこれをハゲビジネスと呼ぶ。
0826デフォルトの名無しさん
2016/10/18(火) 02:01:21.65ID:ZR16vIyY0827デフォルトの名無しさん
2016/10/18(火) 02:50:22.82ID:oHxKXjdy0828デフォルトの名無しさん
2016/10/18(火) 10:19:50.74ID:UbcBgpHB見た目が。
0829デフォルトの名無しさん
2016/10/18(火) 10:30:46.41ID:ESUrlaKZ0830デフォルトの名無しさん
2016/10/18(火) 18:38:57.10ID:M5JRNYhH0831デフォルトの名無しさん
2016/10/18(火) 18:46:35.82ID:0a1WOMu50832デフォルトの名無しさん
2016/10/18(火) 19:17:19.43ID:Pul0IDVMところで具体的にどんな本読んでみました?
0833デフォルトの名無しさん
2016/10/18(火) 20:56:09.64ID:M5JRNYhH独習C++
詳説C++ (C MAGAZINE)
Effective C++
C++テンプレートテクニック
C++のエッセンス
独習デザインパターンC++
Effective Modern C++
プログラミング言語C++ ← イマココ
0834デフォルトの名無しさん
2016/10/18(火) 22:14:55.19ID:G5vZttej0835デフォルトの名無しさん
2016/10/19(水) 00:39:17.68ID:BhXSEXF30836832
2016/10/19(水) 01:35:35.38ID:5sVAVD6H凄い読書量ですね。
俺は明快入門C++(ビギナー編)を読んだ後、ロベールのC++入門講座って本を読んでますが、今いちしっくりきてません…。
0837デフォルトの名無しさん
2016/10/19(水) 03:26:21.55ID:OiCCOICb「C++11/14コア言語」
セガの平山尚のセガ本などの、ゲームエンジン系は?
0838デフォルトの名無しさん
2016/10/19(水) 13:09:31.92ID:SfY3J7W60839デフォルトの名無しさん
2016/10/19(水) 13:57:20.46ID:HZUn6OTC0840デフォルトの名無しさん
2016/10/19(水) 18:04:14.99ID:vSZFyArd0841デフォルトの名無しさん
2016/10/20(木) 23:25:13.31ID:0qBh12A6そ
0842デフォルトの名無しさん
2016/10/21(金) 00:50:23.10ID:wiPWCJ8Qそうでもないですよ。
役に立ってます。
ネットで覚える派ですか?
0843デフォルトの名無しさん
2016/10/21(金) 01:32:31.95ID:R+XAmQY/0844デフォルトの名無しさん
2016/10/21(金) 01:57:59.85ID:N1TnnfYV入門書を何冊も読んでも意味ない
0845デフォルトの名無しさん
2016/10/21(金) 08:55:46.49ID:usEI0+le0846デフォルトの名無しさん
2016/10/21(金) 09:49:13.75ID:qlDwM755最初の3日間くらいは本ばっかり見るわ
付箋張りまくり線引きまくりで ぐっちゃぐちゃに読み倒して
適当にプログラム何本か書き上げてコツをつかんだら
あとはもう本は読まないでネット情報だけで生きていく感じ
0847デフォルトの名無しさん
2016/10/21(金) 21:13:36.83ID:N1TnnfYVしかし応用になってくるとネットの情報は信頼性が下がっていくし断片的になるからそこから読み取るのは至難の業
というか時間の無駄
0848デフォルトの名無しさん
2016/10/22(土) 00:07:56.00ID:foifh8JM結局公式のリファレンスが一番だと思ったらそこにも間違いが
0849デフォルトの名無しさん
2016/10/22(土) 00:25:50.24ID:fkn1DI+D0850デフォルトの名無しさん
2016/10/22(土) 01:49:31.77ID:7tMIvN9j0851デフォルトの名無しさん
2016/10/22(土) 07:03:08.71ID:rNB1+Tne0852デフォルトの名無しさん
2016/10/22(土) 07:09:39.54ID:M5BjZ2VU0853デフォルトの名無しさん
2016/10/22(土) 12:18:12.63ID:w2a8SH0Jでも、変数代入と変数束縛は前者のほうがわかりやすいのはなんでだろね
0854デフォルトの名無しさん
2016/10/22(土) 19:14:18.29ID:rNB1+Tne本のせいか?。
0855デフォルトの名無しさん
2016/10/22(土) 21:47:55.00ID:klBj43YX0856デフォルトの名無しさん
2016/10/23(日) 00:16:48.35ID:y2GXnpPxもしくはc++はポインタと値と参照があるがjavaはほぼ全て参照型だから?
c++のが選択肢が多い分、使い分ける必要があってややこしい
0857デフォルトの名無しさん
2016/10/23(日) 00:28:54.41ID:lzTmPVXn場合によっては凄い遅くなりそうだが
0858デフォルトの名無しさん
2016/10/23(日) 00:38:37.16ID:KeRzb/QL0859デフォルトの名無しさん
2016/10/23(日) 01:15:33.32ID:3pC6m4Rlだから結局のところプログラマがソースに明示するかどうかの違いにしかならないし、そのせいで遅くはならない。
0860デフォルトの名無しさん
2016/10/23(日) 02:22:59.46ID:l2122epV0861デフォルトの名無しさん
2016/10/23(日) 08:39:16.96ID:7LVxYGoD0862デフォルトの名無しさん
2016/10/23(日) 09:04:44.43ID:KxGiTi6w0863デフォルトの名無しさん
2016/10/23(日) 17:38:43.11ID:l/vyVrq0そもそもランタイム自体c++でかかれているんだぜ、あれ。
0864デフォルトの名無しさん
2016/10/23(日) 17:44:37.22ID:kTfbu3LJ0865デフォルトの名無しさん
2016/10/23(日) 18:37:31.69ID:vw/ISU920866デフォルトの名無しさん
2016/10/23(日) 20:33:45.91ID:kTfbu3LJアルゴリズムの素養のないC++erコードはアルゴリズム巧者によるPythonコードにすらボロ負けする
0867デフォルトの名無しさん
2016/10/24(月) 21:13:37.26ID:UaUSiXCD0868デフォルトの名無しさん
2016/10/24(月) 22:24:54.92ID:szSWSHdO0869デフォルトの名無しさん
2016/10/25(火) 01:44:44.93ID:+TdoxN9O( �� 皿 ��) ごりーん
( )
/│ 国 │\ ごりーん
< \____/ >
┃ ┃
= =
アルゴリズムだよ
望みの機能を現実的な時間とメモリ使用量で動いてくれるようにするすごいやつだよ
0870デフォルトの名無しさん
2016/10/25(火) 18:02:12.12ID:/LQv2l/iint a[4]みたいな配列があった時に
a[2]の数字だけを削除するようなことってどうやったらいいですか
a[0]=89
a[1]=11100
a[2]=555
a[3]=22
これを↓
a[0]=89
a[1]=11100
a[3]=22
a[4]=0
みたいにしたいです。
自分で関数作らないとダメですか?
eraseとかで出来たりしますか?
0871デフォルトの名無しさん
2016/10/25(火) 18:02:44.87ID:/LQv2l/ia[0]=89
a[1]=11100
a[2]=555
a[3]=22
これを↓
a[0]=89
a[1]=11100
a[2]=22
a[3]=0
みたいにしたいです
0872デフォルトの名無しさん
2016/10/25(火) 18:10:44.21ID:04xA9lfsmemcpy
0873デフォルトの名無しさん
2016/10/25(火) 18:14:01.64ID:XCpKRbQF重なるところを操作するのに memcpy はよろしくない
memmove で
0874デフォルトの名無しさん
2016/10/25(火) 20:04:15.17ID:/LQv2l/iありがとうございます
出来ました!
0875デフォルトの名無しさん
2016/10/25(火) 20:55:06.17ID:+zdMSPeh0876デフォルトの名無しさん
2016/10/25(火) 21:37:31.58ID:v6pSXgxeまんまremoveという関数が。
0877デフォルトの名無しさん
2016/10/25(火) 21:53:36.38ID:ysOf7Gsy0878デフォルトの名無しさん
2016/10/25(火) 21:54:15.62ID:S/qKFkwP0879デフォルトの名無しさん
2016/10/25(火) 22:30:19.95ID:20LBBpeovector<int> a{ 89,11100,555,22,0 };
a.erase(a.begin() + 2);
0880デフォルトの名無しさん
2016/10/25(火) 22:32:20.26ID:dPNm/fb0あほ上司のしりぬぐいをしたつもりなんだが、できて当たり前みたいな雰囲気がチームにある。
0881デフォルトの名無しさん
2016/10/25(火) 22:38:20.05ID:oZjfYDL10882デフォルトの名無しさん
2016/10/25(火) 22:44:00.57ID:wk/8Ajgh0883デフォルトの名無しさん
2016/10/25(火) 23:09:12.29ID:g6Mxg6+uそれファイル削除だから
0884デフォルトの名無しさん
2016/10/25(火) 23:21:46.41ID:rsJoV7WkC++の話をしてるんだからちゃんとC++を勉強してからレスした方がいいよ
http://www.cplusplus.com/reference/algorithm/remove/
0885デフォルトの名無しさん
2016/10/25(火) 23:37:02.85ID:+zdMSPeh0886デフォルトの名無しさん
2016/10/26(水) 00:00:44.69ID:cikaMqhl消すならdelete()、でも、なんでこれないんだ?
0887デフォルトの名無しさん
2016/10/26(水) 00:04:13.70ID:AmMa052mremove[他動詞]
1 〈置いてある物を〉(…から)取り去る,取り外す,片づける;〈人を〉(…から)連れ去る;((再帰的)) (…から)立ち去る((from ...))
0888デフォルトの名無しさん
2016/10/26(水) 00:16:29.12ID:cikaMqhl英語のerase と delete ではなんか意味が違うから
erase()、deleteになったんだろな
0889デフォルトの名無しさん
2016/10/26(水) 01:11:59.07ID:m0O+CJ+Hdeleteとeraseは単に予約語だから代えてるだけじゃないかな
pythonは言語機能で配列の要素削除があるけど、使うのはdelだよ
0890デフォルトの名無しさん
2016/10/26(水) 01:27:57.33ID:cikaMqhlhttp://www.sonydna.com/sdna/solution/pr_loc/blog/20160511.html
0891デフォルトの名無しさん
2016/10/26(水) 07:06:04.24ID:RJpSlGaC0892デフォルトの名無しさん
2016/10/26(水) 07:16:51.16ID:k//iL6vN0893デフォルトの名無しさん
2016/10/26(水) 07:18:28.33ID:8DxCGNM50894デフォルトの名無しさん
2016/10/26(水) 07:41:08.85ID:RDpdn04zどういうこと?
まさか配列に使えないと思ってるわけじゃないよね?
0895デフォルトの名無しさん
2016/10/26(水) 08:00:54.43ID:Qx/HEVu1そんな、いじめなくても…
0896デフォルトの名無しさん
2016/10/26(水) 15:18:48.95ID:E8CItb2B無駄に複雑にするのは知識をひけらかしたいだけの自己満足でしかない
極端な話、 a[2]=a[3]; a[3]=0; が分かり易さと速度に於いて最適だ
もちろん別の条件があるなら別の最適な方法があるかもしれない
0897デフォルトの名無しさん
2016/10/26(水) 15:21:48.76ID:0DRYzuZk0898デフォルトの名無しさん
2016/10/26(水) 15:44:46.79ID:pULr6tRxこの方法じゃなきゃだめだ、ってやられたら邪魔だが
初心者の場合は質問が上手くできない場合もあるし、ROMっている人の参考になる場合もあるんだから
0899デフォルトの名無しさん
2016/10/26(水) 17:40:57.14ID:Qx/HEVu1どんだけアスペこじらせてんのよ
0900デフォルトの名無しさん
2016/10/26(水) 18:44:18.81ID:2q4CwRujという趣旨が分からないならお前がアスペ
0901デフォルトの名無しさん
2016/10/26(水) 19:06:50.11ID:DCJLb856>>895
極端な話って前提は都合よくスルーなんだなw
0902デフォルトの名無しさん
2016/10/26(水) 19:42:44.58ID:cikaMqhl俺的にはC++で、そして、eraseが出ているから、かっこよくSTLあたりを
使った回答を期待していたと思っていたが、memmoveで出来ましたで、えっって感じだったけどな
なんか回答としては、a[2]=a[3]; a[3]=0; で十分であったってことだよな。
0903デフォルトの名無しさん
2016/10/27(木) 16:04:26.63ID:dM08lZSa0904デフォルトの名無しさん
2016/10/27(木) 19:02:24.09ID:y6LRba0P関係ないけど実写版Sakiに江添っぽいメガネキャラがいるな。
0905片山博文MZ ◆T6xkBnTXz7B0
2016/10/27(木) 19:13:25.99ID:ABDKK6Bx0906片山博文MZ ◆T6xkBnTXz7B0
2016/10/27(木) 19:42:45.26ID:ABDKK6Bx0907デフォルトの名無しさん
2016/10/27(木) 21:38:26.84ID:Fc/cX5mQ0908デフォルトの名無しさん
2016/10/27(木) 22:03:55.58ID:ABDKK6Bx0909デフォルトの名無しさん
2016/10/27(木) 22:07:24.25ID:ABDKK6Bx0910903
2016/10/28(金) 01:59:06.60ID:wDKSwFbgありがとうございます。
じゃあCに関する記述はカットしてあって、C++をメインに解説してある本ってありますか?
0911デフォルトの名無しさん
2016/10/28(金) 06:22:57.87ID:odyikEcyあるよ
0912デフォルトの名無しさん
2016/10/28(金) 11:40:48.11ID:CQ8iiwCh実写版Saki なんてあるのかよ・・・ 国広の私服どうなんだよ・・・
とろろで、try catch で例外を受けたときに
例外が発生したソース名と行番号を表示したいんだけど
簡単にやるにはどうすればいいかな
自力でバックトレースしてごにょごにょするしかない?
0913デフォルトの名無しさん
2016/10/28(金) 12:06:22.96ID:37ytQ7vz0914デフォルトの名無しさん
2016/10/28(金) 13:05:49.75ID:RWm1DZ2k0915デフォルトの名無しさん
2016/10/28(金) 13:22:53.47ID:CQ8iiwChcatchの中の行番号になっちゃう
>>914
例外を自分で投げるときはそれでいいけど ほかの人が投げた例外は無理だよね
0916デフォルトの名無しさん
2016/10/28(金) 15:59:20.16ID:oa5x3DIHむしろわけわからん加工しないでほしい
0917910
2016/10/28(金) 16:00:33.51ID:wDKSwFbg何ていう本ですか?
0918デフォルトの名無しさん
2016/10/28(金) 22:39:16.57ID:9n7Qn2lLここまで走ってるってのを確認してる
0919デフォルトの名無しさん
2016/10/28(金) 23:27:27.54ID:9iz4x+2p他の人が投げることまで想定するならファイル名や行番号情報がないことも想定した方がいいと思うが...
0920デフォルトの名無しさん
2016/10/28(金) 23:40:09.94ID:JUHhVRmDで、そう想定したならどうすれば良いんだ?
0921デフォルトの名無しさん
2016/10/28(金) 23:46:36.57ID:9iz4x+2pバカなの?
無い袖は振れないって知ってる?
0922デフォルトの名無しさん
2016/10/28(金) 23:53:32.99ID:JUHhVRmDそういうことか。
なんか俺の上司が>>920みないな感じのこというんだよな
で、具体的な案なるんですかって出ると
分からん・知らんと
0923デフォルトの名無しさん
2016/10/29(土) 06:59:48.04ID:dIZqWzLv「50円しか持ってないけどカツ丼食いたい。どうすれば」
「バカなの。金無いなら諦めろ」
「そういうことか。なんか俺の上司が俺みたいな感じのこというんだよな。で、具体的な策なんですか?って出ると分からん・知らんと」
0924デフォルトの名無しさん
2016/10/29(土) 13:07:19.35ID:1ysZjR2uそのときはあきらめるけど、そうじゃないときはなるべくログを出したい
backtrace() を使ったらなんか何とかなりそうな感じになってきた
0925917
2016/10/29(土) 20:44:20.71ID:TXDQcz+f0926デフォルトの名無しさん
2016/10/29(土) 22:06:48.85ID:RGDx1OItaccelarated C++
https://www.amazon.co.jp/dp/4894714221
0927デフォルトの名無しさん
2016/10/29(土) 22:21:56.46ID:DjZ/IKvQeffectiveC++とかC++テンプレートテクニックとか
0929デフォルトの名無しさん
2016/10/30(日) 01:45:11.85ID:p5P2p5NGC++関連本色々あるが、どんなレベルの本を探しているのか不明で答えられないって感じじゃないのかな。
前提条件が厚くない本で、入門書、入門書の次の本、さらに進んでテンプレートを必死する本...さて望んでいるのはどれ。
俺は読んでないから良い本か分からんが、入門者なら比較的最近の禿教祖のC++のエッセンスあたりが良い気がするが...
(翻訳がダメで日本語版は入門者に向かない可能性ある)
0930928
2016/10/30(日) 02:10:04.18ID:tifMCILvそうですね、その辺に言及してませんでした。
明快入門C++(ビギナー編)という本を読み終えたので、「入門書の次」になりますかね。
ただ、オライリー系の本はちょっと苦手意識がありますが…。
0931デフォルトの名無しさん
2016/10/30(日) 21:55:25.35ID:lcq4jfiv0932デフォルトの名無しさん
2016/10/31(月) 00:25:09.36ID:HOhBYoN90933デフォルトの名無しさん
2016/10/31(月) 02:58:48.29ID:k27SCECd0934デフォルトの名無しさん
2016/10/31(月) 10:16:49.41ID:9pGzrAq60935デフォルトの名無しさん
2016/10/31(月) 11:26:54.39ID:hA7i3ZHr苦手意識持たずに読んでみるといいよ
0936デフォルトの名無しさん
2016/10/31(月) 19:56:01.77ID:UGFA1d/s例えばfreadとかfwriteの直後でferror()を使えばいいんですか?
0937デフォルトの名無しさん
2016/10/31(月) 19:59:57.89ID:lDQV5Vhq0938デフォルトの名無しさん
2016/10/31(月) 20:00:13.16ID:K0NFLcee0939デフォルトの名無しさん
2016/10/31(月) 20:00:16.78ID:nAIZNyW00940デフォルトの名無しさん
2016/10/31(月) 20:12:56.58ID:R+gJxrwJ0941デフォルトの名無しさん
2016/10/31(月) 20:17:24.94ID:lDQV5VhqNO_ERRORみたいな値
0942デフォルトの名無しさん
2016/10/31(月) 20:34:34.18ID:UGFA1d/s0943デフォルトの名無しさん
2016/10/31(月) 21:50:56.59ID:dUnI1wCj0944930
2016/11/01(火) 00:56:11.80ID:68tlbbHFどうもです。
しかし前にRubyのオライリー本買って一度挫折してるので。
Amazonでよさげなのがあったので検討してみます。
0945デフォルトの名無しさん
2016/11/01(火) 01:05:00.47ID:IVbhyFfWまあ入門書一冊読み終わったという段階なら、次のレベルの本というよりも、とにかく実際的なプログラミングをして、分かったり分からなかったりという経験を積んでいかないと。
0946944
2016/11/01(火) 01:49:16.27ID:68tlbbHF分かります。
ただ今はネット環境が無いのでexpresseditionがダウンロード出来ないんです。
詳しくはJavaの初心者板で何回かレスってるのでよかったら見てください。
0947デフォルトの名無しさん
2016/11/02(水) 11:28:15.00ID:r0XG4JKI#include <string>
std::string f() {
std::string str="ハロ 今日も元気だね";
return str;// (1)
}
int main() {
std::string str2=f(); //(2)
return 0;
}
(1)でstrが消滅するのは(2)が完了してからですか?
0948デフォルトの名無しさん
2016/11/02(水) 12:28:24.03ID:CjPrdZ5H0949デフォルトの名無しさん
2016/11/02(水) 12:37:47.67ID:yVmWsAjPデストラクタが呼ばれるタイミングじゃなさそだし
0950デフォルトの名無しさん
2016/11/02(水) 12:48:00.98ID:BfJMJ0BQ最適化を考慮しなければ
呼び出し元のf()の位置にはstrとは別の一時オブジェクトがコピーで作られるので
f()から戻ってきた時点でstrは消えてる
ただコンパイラは最適化して一時オブジェクトを介さないようにしてもよく
今の場合最大限最適化されればstr2の位置に直接オブジェクトを構築する可能性もある
つまり
int main()
{
std::string str2="ハロ 今日も元気だね";
}
のようにする場合さえある
参考
https://ideone.com/meJdTX
0951デフォルトの名無しさん
2016/11/02(水) 12:50:54.71ID:+cKPTnUF関数自前が死亡
一時オブジェクトを元に 呼び出し元へ コピーコンストラクターで複製
一時オブジェクトが死亡
(呼び出し元死亡)
struct T {
T() { cout << "生成" <<endl; }
~T() { cout << "死亡" <<endl; }
T(const T& src) { cout << "コピコン" <<endl; }
};
T f() { T o; return o; }
int main()
{
0952デフォルトの名無しさん
2016/11/02(水) 13:29:36.73ID:r0XG4JKI有難うございました。
0953デフォルトの名無しさん
2016/11/02(水) 18:09:16.64ID:jFTxp1RBflushしない場合は本当に書き込んだかどうかは
戻り値だけでは分からない
0954デフォルトの名無しさん
2016/11/02(水) 19:29:29.17ID:A0uT16tv一時オブジェクトを使って説明しようとしたあたり、>>950よりは知能が高いと見たが
残念ながら947のコードでコピーコンストラクターが走ることはない
0955デフォルトの名無しさん
2016/11/02(水) 19:44:03.65ID:OdDlR5uGOSというかファイルシステムのキャッシュに書かれるだけでfwriteの戻り値としては正しいでしょ。フラッシュされるかどうかはまた別の話。
0956デフォルトの名無しさん
2016/11/02(水) 19:46:30.69ID:A0uT16tv0957デフォルトの名無しさん
2016/11/02(水) 19:53:56.36ID:6QvosKf/むしろ>>953が怪しい
0958デフォルトの名無しさん
2016/11/02(水) 20:02:14.67ID:A0uT16tv>>942を見てN1570を少し読んだ限りでは俺も>>953と同じ見解に至ったのだが、そうなの?
0959デフォルトの名無しさん
2016/11/02(水) 20:26:56.84ID:6QvosKf/>>942が「ファイルに書いた数」を聞いてるなら「flushしないと〜」って出せばいいが
そうじゃないやん?
0960デフォルトの名無しさん
2016/11/02(水) 21:10:08.07ID:bzJi3dOp0961デフォルトの名無しさん
2016/11/02(水) 22:08:41.78ID:oVgJ9kJGオペレーティングシステムに渡される保証が見つけられなかった
0962デフォルトの名無しさん
2016/11/03(木) 13:03:22.12ID:GnUEiriVオペレーティングシステムに渡される保証ってか、OSがないベアメタルもあるからな
0963961
2016/11/03(木) 13:22:51.56ID:S+bkcBHCそこは一応stdio.h/cstdioがオペレーティングシステム(host environment)のある実行環境での必須ヘッダーなので、
言語仕様的には「fwriteが使える=オペレーティングシステムが有ることが前提」のようだ
0964デフォルトの名無しさん
2016/11/04(金) 09:50:14.60ID:yL60CdY2メインがpersonBのageという変数の値を知るには
personB.ageをリターンするメソッド
とすればできたけれど、
personAがpersonBのageを知るにはどうしたらいいですか?
personAからは直接personBは見えないですよね?
0965デフォルトの名無しさん
2016/11/04(金) 10:05:17.60ID:XeZvVTgMPersonに他のPersonのポインタを渡すメンバ関数を定義して、メイン関数の中でpersonAにpersonBを渡してやればいい。
0966デフォルトの名無しさん
2016/11/04(金) 10:38:18.50ID:qN0Y2dNOpersonAからpersonBのageを返すpublicなメソッドを呼ぶ
0967デフォルトの名無しさん
2016/11/04(金) 11:26:11.13ID:yL60CdY20968デフォルトの名無しさん
2016/11/04(金) 12:41:54.09ID:lX4+FIXr0969デフォルトの名無しさん
2016/11/05(土) 11:33:42.38ID:VEBG0WS20970デフォルトの名無しさん
2016/11/05(土) 12:56:33.78ID:Qu5C3ziN0971デフォルトの名無しさん
2016/11/05(土) 16:33:31.92ID:e+ZVz62v0972デフォルトの名無しさん
2016/11/05(土) 19:27:42.58ID:bv3OHyVZJavaの基本だけやってC++に入門して何すんの?
単にC++使えますって言いたいだけ?
0973デフォルトの名無しさん
2016/11/05(土) 19:46:02.42ID:CtfyVCCA「言いたいだけ」などというひねくれた妄想が何処から湧いてきたのか謎だ
0974デフォルトの名無しさん
2016/11/05(土) 20:24:44.18ID:v1VPNqzt好奇心とか純粋なものは許されないぞ
0975デフォルトの名無しさん
2016/11/05(土) 20:43:51.38ID:pFpM7y/Yもしお勉強をしただけなら他の言語に手を出す前に何かソフト作ってみるなりする方が良いよな
一つ言語が使えたら他の言語の入門も楽になるけどそれはまず言語を勉強したからとかじゃなくて
プログラミングの経験の有無によるところが大きいと思うし
0976デフォルトの名無しさん
2016/11/05(土) 21:22:46.55ID:ww0gV1s10977デフォルトの名無しさん
2016/11/05(土) 22:00:50.23ID:U2hMH/zp違う。やりたいってよりやる必要が出てきたって感じです
>>975
Javaは簡単なAndroidアプリ作ったりできる程度の うんこレベル
Cは苦Cをサラッとやっただけで殆どかけない
でもC++やらなきゃならなくなった...
>>976
もしかしてC++ってイケメンしか書いちゃ駄目な言語?
0978デフォルトの名無しさん
2016/11/05(土) 23:15:37.16ID:o/ex+S0B0979デフォルトの名無しさん
2016/11/05(土) 23:59:13.14ID:DL4mqWsO0980デフォルトの名無しさん
2016/11/06(日) 00:33:24.47ID:LiObGufHフサフサだったメイヤーは頭髪の事情で引退を余儀なくされた
0981デフォルトの名無しさん
2016/11/06(日) 00:34:31.09ID:g7D6mKqm0982デフォルトの名無しさん
2016/11/06(日) 00:51:47.52ID:IxN4C1EU0983デフォルトの名無しさん
2016/11/06(日) 02:17:19.60ID:gOCHQWHq0984デフォルトの名無しさん
2016/11/06(日) 02:43:02.12ID:egMrprJ+0985デフォルトの名無しさん
2016/11/06(日) 03:26:41.55ID:E1Cvk6Xz0986スッキリ厨
2016/11/06(日) 08:50:54.24ID:UB8ayWaXスッキリわかる Java入門 第2版、2014、でしっかりとオブジェクト指向を学んだのなら、
この2冊を、この順に読む
たのしいRuby 第5版、2016
みんなのPython 第3版
C++なら、ロベール
C#なら、猫
AltJavaなら、Kotlin
AltJSなら、Haxe
スッキリJavaで、オブジェクト指向を学んでいないなら、他の言語は無理
0987デフォルトの名無しさん
2016/11/06(日) 09:03:44.98ID:TO8zu+f0滑ってキャッチできませんでした
0988デフォルトの名無しさん
2016/11/06(日) 09:43:02.90ID:bj0bmNIv凄い禿げたくない。
>>986
スッキリは入門と実践、SQL済ましてる
Pythonはオライリーのpython3入門を半分やり
ロベールは900ページあってモチベの維持がなかなか大変だな...
0989スッキリ厨
2016/11/06(日) 09:58:11.08ID:UB8ayWaXしかし、理解できるかな?
ポインタ・参照
ジェネリックス(汎用型)
フレンドクラス
複数クラスを継承できるけど、ダイヤモンド継承だから危険
アルゴリズム
0990デフォルトの名無しさん
2016/11/06(日) 11:10:03.05ID:egMrprJ+自分は禿げたりしないなんて油断してたから、現実を受け止める準備が無かったんだろう。
0991デフォルトの名無しさん
2016/11/06(日) 16:45:47.49ID:hIr9vUGi断言しても良いわ。
0992デフォルトの名無しさん
2016/11/06(日) 17:28:02.97ID:pvoHgICs>>971
ロベール
0993デフォルトの名無しさん
2016/11/06(日) 17:31:41.97ID:aqA72S6k0994デフォルトの名無しさん
2016/11/06(日) 17:54:46.65ID:/loPCIEU薄い奴ならポケットリファレンス結構いいよ
0995デフォルトの名無しさん
2016/11/06(日) 19:57:56.28ID:H//kZpxkrapidjsonってほんとに速いんか?
0996デフォルトの名無しさん
2016/11/06(日) 22:58:47.96ID:dU5z27As【初心者歓迎】C/C++室 Ver.100【環境依存OK】
http://echo.2ch.net/test/read.cgi/tech/1478440682/
0997デフォルトの名無しさん
2016/11/07(月) 06:09:12.64ID:9JfEVYTgおつ
0998デフォルトの名無しさん
2016/11/07(月) 08:38:34.35ID:fwwW9lIx100記念だな
0999デフォルトの名無しさん
2016/11/07(月) 09:09:19.52ID:vooGYje+int a[2];
A(int b[])
:a(b) //error
{}
};
この:a(b)ってなにか書き方ありますか?
1000デフォルトの名無しさん
2016/11/07(月) 09:23:33.51ID:LhBXfA3o: a{b[0], b[1]}
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
life time: 107日 15時間 29分 24秒
10021002
Over 1000Thread運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。