【初心者歓迎】C/C++室 Ver.97【環境依存OK】 [転載禁止]©5ch.io
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2015/08/18(火) 07:10:18.03ID:47QFVOwLただしその場合、質問者は必ず環境を書きましょう。
◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。
【アップローダー】(質問が長い時はココ使うと便利)
http://codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
http://ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)
前スレ
【初心者歓迎】C/C++室 Ver.96【環境依存OK】
http://peace.2ch.net/test/read.cgi/tech/1433514467/
0002前スレ989
2015/08/18(火) 08:55:41.03ID:o7p+NB2T> でも使う側で代入しなきゃいけないってめんどくさくない?
> >>985のほうはfuncAとかを呼び出すようにすれば関数ポインタがどうこうというのは気にせずに使えるし
funcA で代入まで済ませればそこも変わらないと思うんだけど?
0003デフォルトの名無しさん
2015/08/18(火) 09:25:05.71ID:+rFwHajx0004デフォルトの名無しさん
2015/08/18(火) 11:25:41.05ID:YoPJdOWG0005デフォルトの名無しさん
2015/08/18(火) 13:50:39.51ID:PdOCffiMほっとけばいいんじゃない?
0006デフォルトの名無しさん
2015/08/20(木) 21:33:13.99ID:OPjxJt6u出力が5にならない理由と5にする方法教えてください
0007デフォルトの名無しさん
2015/08/20(木) 21:54:44.00ID:qqtrjDLqhttp://codepad.org/PNrRY4Li
0008デフォルトの名無しさん
2015/08/20(木) 22:19:41.01ID:OPjxJt6u0009デフォルトの名無しさん
2015/08/24(月) 11:12:55.99ID:HAmfbFZ3using namespace std;
class A{
public:
int a;
A(int a0){a=a0;}
void inc(){a+=1;}
};
class B{
private:
int n;
public:
B(int n0){n=n0;}
void ainc(A A0){
for(int i=0;i<n;i++){ A0.inc();}
cout<<A0.a<<endl; //わはは Javaな人だとはまりそ?
}
};
int main(){
A A0(3);
B B0(2); B0.ainc(A0);
cout<<A0.a<<endl;
}
0010デフォルトの名無しさん
2015/09/03(木) 23:09:20.83ID:6bOZtC0j以前に見つけた憶えがあるんだけどタイトルを失念してしまったので
何か良い本を紹介して下さい
0011デフォルトの名無しさん
2015/09/25(金) 14:33:54.91ID:cJmaZWu45
3
あってる?
いや違うか?
メンバ関数の引数に参照(&)が入ってないから……
ん〜でも……
あぁ〜最近Andoroidアプリでjavaばっかだから
でも、まぁ、そんなコード書くこと無いわな〜
って言っても、Oracle java SE programmer Silver
の試験受けた時、そんなコードばっかだったよ
ちなみに、試験でムカついたのは
int i=0;
while(0<++i)
が、答えが無限ループってところ
javaでunsignedはcharだけだろ
いつかは止まるっつーの
0012デフォルトの名無しさん
2015/09/25(金) 14:53:50.11ID:cJmaZWu4C?それともC++?
って言っても、Cはアセンブリに近い低級言語で
C++は、誰が設計したのか分かんないけど
間口を広げすぎたオブジェクト指向だね〜
Cは置いといて、C++を語ると必ず
オブジェクト指向とはって、色んな例え話が出る
俺の例え話
ブロックくずしのゲームあるよね
で、当てるブロックと跳ね返すボードは
同じ跳ね返すという動作をするので
ボードとブロックは同じ跳ね返す機能のクラスを継承
しかし、ブロックに当てるとアイテムが落ちてきたりする
これはブロック側の独自実装
で、アイテムを取ったらボールが増えたりする
でも、跳ね返すという観点では変わらない
はい、ややこしくなってまいりました。失礼!!
0013ホリエモン×見城徹×酒鬼薔薇
2015/10/03(土) 23:06:01.08ID:IwRG46Mphttp://tocana.jp/2015/06/post_6713_entry.html
0014もう俺たちは奴隷じゃない!
2015/10/31(土) 20:09:56.80ID:xHpU59d3https://www.youtube.com/watch?v=XmP1TRsAe88
0015デフォルトの名無しさん
2015/11/03(火) 10:35:53.36ID:VplAS7nfCtrl+C(中断指示)やCtrl+D(EOF送信)といった特殊な操作は、
何を送れば良いのでしょうか?
また、これらは各OSで共通だったりするのでしょうか?
0016デフォルトの名無しさん
2015/11/03(火) 10:40:23.64ID:bkeJBg3D0018デフォルトの名無しさん
2015/11/03(火) 11:20:30.35ID:bkeJBg3D0019デフォルトの名無しさん
2015/11/03(火) 11:23:31.31ID:bkeJBg3D0020デフォルトの名無しさん
2015/11/04(水) 09:43:28.19ID:+IbiBxzw制御コードと呼ぶことが多い
C言語入門にはちらっと紹介されてると思うが
ちなみに改行・タブ文字も制御コードの一つ
0021デフォルトの名無しさん
2015/11/04(水) 10:19:46.10ID:bo5L4q850022デフォルトの名無しさん
2015/11/04(水) 13:11:24.50ID:f7QS+eFK0023デフォルトの名無しさん
2015/11/22(日) 08:25:38.42ID:qediMbGXいいえ、「コード」はともかく「操作」は共通ではありません
例えばWindowsはデータ終了にCtrl+DでなくCtrl+Zを使用します
0024デフォルトの名無しさん
2015/11/28(土) 02:40:50.14ID:jVemdVDV"コンパイラの制限 : プログラム内のブロックの入れ子のレベルが深すぎます。"
というエラーがでてコンパイルできません.
VS2010 c++下では入れ子は128層が限界とあったのですが,この層の数え方は,例えば
for(){if(){if(){if(){}}}}の場合,4層という認識であってるのでしょうか?
0025デフォルトの名無しさん
2015/11/28(土) 02:47:55.73ID:JsGV9DmLそれプラス、if-else ifがたくさん並んでるとそのエラーが出るみたいよ
0026デフォルトの名無しさん
2015/11/28(土) 03:42:43.97ID:jVemdVDVmain関数内で,for文等で書かれたブロックが違っていてもif-else ifを多用していると
128層でなくてもこのエラーがでてきてしまうとうことでしょうか?
コードも載せたほうが状況も説明しやすいのですが量が多いので,文章だけになってしまい
すいません.
0027デフォルトの名無しさん
2015/11/28(土) 08:53:46.29ID:mxbt4S4CとりあえずMySQLに突っ込んだら1週間たってもInsertが終わらないです。
他にC++で大量のデータを保管し、後から簡単に部分一致検索できるような方法はありませんか?
0028デフォルトの名無しさん
2015/11/28(土) 09:11:25.80ID:3k32N2dX0029デフォルトの名無しさん
2015/11/28(土) 10:20:47.03ID:hdYDv4+a別のコンパイラも試しなよ
0030デフォルトの名無しさん
2015/11/28(土) 10:32:03.28ID:tW/rjk30部分一致検索をするには大きく分けて
・検索される側の文字列を変換して検索に特化させる
・検索する側の文字列を変換して検索に特化させる
・検索される側・する側どちらも何ら変換しない
の3通りの方法がある。
最初のはは例えば接尾辞配列を作ってそれを保持するって方法で、
これは検索される側の文字列長をnとした時にO(n log n)償却時間で変換する方法や
O(n log^2 n)最悪時間で変換する方法なんかが知られている。
検索時間は検索する側の文字列の長さに依らずO(log n)平均時間
次のは例えば正規表現を有限状態オートマトンに変換する方法で、
その正規表現の長さをm、検索される側の文字列の長さをnとする時にO(m^3)平均時間、
O(m^2 * 2^m)最悪時間で構築してO(n)時間で検索できる方法が知られている。
データベースに何でもかんでもぶち込むだけが方法じゃない。
データの総量が増えないなら前者の方法で準線形時間掛けて初期化しておけば対数時間で検索できるし、
データが追加されうるならとりあえず何らかのファイルに1行につき1エントリの形式で書き込んでおいて
後者の方法を使えば線形時間で検索できる。
特に、後者の場合は(1行につき1エントリという形式にしておけば)Unixのgrepコマンドが使える。
0031デフォルトの名無しさん
2015/11/28(土) 10:41:03.68ID:tW/rjk30> 検索時間は検索する側の文字列の長さに依らずO(log n)平均時間
って書いたけどより正確にはO(m + log n)とかそんな感じ
0032デフォルトの名無しさん
2015/11/28(土) 14:03:22.69ID:mxbt4S4Cなるほど。
アリ本読みながら頑張ってみる。
ありがとう。
0033デフォルトの名無しさん
2015/11/29(日) 11:39:46.44ID:fhjopYJV朝マック頼んで番号札もらって席について、閉店まで待ってるようなもの
何かおかしいと思わない人間には無理
0034デフォルトの名無しさん
2015/11/29(日) 12:36:23.19ID:4pi0A2Al> 1週間たってもINSERTできないのは
ネタだろ、いちいち構うなよ
0036デフォルトの名無しさん
2015/11/29(日) 22:44:30.05ID:RglVntwV文字列50文字は、100byte程度。
100byte * 200万件 = 200MB
1分以内には書き込める
0037デフォルトの名無しさん
2015/11/29(日) 22:49:51.69ID:tNTBXjHt0038デフォルトの名無しさん
2015/11/29(日) 23:04:33.40ID:vKs8E2om0039デフォルトの名無しさん
2015/11/29(日) 23:08:40.17ID:RQ97x6ZU0040デフォルトの名無しさん
2015/11/29(日) 23:10:50.62ID:vKs8E2omありがとうございます。
検索の方法が悪いのか、リアルで1時間ほど検索しても見つからず
困ってました。
0041デフォルトの名無しさん
2015/11/29(日) 23:40:37.63ID:zeO3ugsWGoogleで
c言語 文字列 数値 変換
って検索したら一番上に出たけどなんて検索してたん?
0042デフォルトの名無しさん
2015/11/30(月) 15:03:48.66ID:jNXFF+da"char *argv[]" 変換
等ですね。
0043デフォルトの名無しさん
2015/11/30(月) 15:56:59.92ID:7BdzR/6V0044デフォルトの名無しさん
2015/11/30(月) 16:18:14.72ID:R91D20Ot0045デフォルトの名無しさん
2015/12/04(金) 00:26:49.79ID:wpzjFC8Xchar32_t unko = U'A';
printf("%04X", unko);
warning C4477: 'printf' : format string '%04X' requires an argument of type 'unsigned int',
but variadic argument 1 has type 'char32_t'
なんで?
(キャストしろ、というのは無しでおながいします)
0046デフォルトの名無しさん
2015/12/04(金) 01:23:52.57ID:lNfIPK42http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4296.pdf
Types char16_t and char32_t denote distinct types with the same size, signedness, and alignment as
uint_least16_t and uint_least32_t, respectively, in <cstdint>, called the underlying types.
つまりchar32_tは同じサイズ・同じ符号の有無でも別の型として見做されてる。
0047デフォルトの名無しさん
2015/12/04(金) 01:46:15.44ID:ezzwHQH9そのメッセージの何がわからないの?
0048デフォルトの名無しさん
2015/12/04(金) 04:55:59.58ID:wpzjFC8Xたとえば HANDLE なら "%p" で表示できますよね。
HANDLE chnko.;
printf("%p", chnko);
size_t なら "%Iu"
じゃぁ char32_t な変数は、いったいどうやって16進数表示すればいいか知りたいんです。
0049デフォルトの名無しさん
2015/12/04(金) 04:57:07.63ID:wpzjFC8X市ね
0050デフォルトの名無しさん
2015/12/04(金) 04:58:58.14ID:wpzjFC8X0051デフォルトの名無しさん
2015/12/04(金) 08:05:37.51ID:eJgp+Ap70052デフォルトの名無しさん
2015/12/04(金) 08:24:02.11ID:uoWB06OP0054デフォルトの名無しさん
2015/12/04(金) 09:44:49.42ID:ezzwHQH9char32_t に直接対応する書式指定は定義されていない。 C なら int_least32_t の
typedef ってことになってるから PRIdLEAST32 でいけるんだろうけど、エラーメッセージを
見る限りは C++ っぽいな。 C との移植性を考慮してる処理系なら C++ でも
PRIdLEAST32 でいけるかもしれない。
普通に考えれば確実に 32 ビットある unsigned long あたりにキャストして %08lX で表示
すれば移植性含めて確実なんだろうけど、それがダメってことなら・・・
unsigned long x = unko をはさむんならいいの?
%p で HANDLE が表示できるのは、たまたま typedef の定義が void* か、ポインタの
表現形式が同じなだけ。移植性は無い。
size_t のフォーマットは C99 でようやく %zu が定義されてる。 C99 未対応の環境を含めて
移植性を持たせようと思ったら、やっぱりキャストすることになるんだろうな。
0055デフォルトの名無しさん
2015/12/04(金) 12:41:53.04ID:eOr3TAvt一見すると警告が出ている理由を聞いているように見えるが
事前に回答に対して付けてる注文が、警告されない方法を要求された場合に得られるものに対しての注文になっている点を見逃していたな
0056デフォルトの名無しさん
2015/12/04(金) 12:58:29.43ID:GzeAUkqUMSVCではそのままでは使えず、手順を踏めば使えるようになるが、
>>49のようなアホには教えてやらない。
yahoo知恵袋とかに知ってる奴がいるかも知れないからそっちで聞け。二度と来るな。
0057デフォルトの名無しさん
2015/12/04(金) 13:20:37.25ID:cTLbcsjq→ ある
そのフォーマット指示教えて
→ ない
キャストしたうえでそれを正しく受けれるフォーマット文字列を当てろ
0058デフォルトの名無しさん
2015/12/04(金) 13:31:24.33ID:yphLFvrPこんな無礼な奴に教えてるとか
0059デフォルトの名無しさん
2015/12/04(金) 18:25:08.71ID:tMlpAt0cへー、俺はそのまま使えてるけど
0060デフォルトの名無しさん
2015/12/05(土) 01:25:48.24ID:XrhXlWwyprintf の書式に関してはキャストが正しいやり方だと思うけど…
0061デフォルトの名無しさん
2015/12/05(土) 14:44:28.99ID:8o6AWzwuprintf("%04x", unsigned(unko))
みたいなキャストの書き方する人をめっきり見かけなくなったな
0062デフォルトの名無しさん
2015/12/06(日) 16:56:31.72ID:w0JG1OnYC++で追加された書き方だっけ。わざわざCと非互換な書き方するのもな
0063デフォルトの名無しさん
2015/12/07(月) 10:24:26.90ID:kLiwVdVP0064デフォルトの名無しさん
2015/12/07(月) 12:35:07.38ID:EdmvAvM2大体Cスタイルキャストみたいな強いキャストしてほしくないけど
static_castみたいな長ったらしいのは打ちたくない時とか
0065デフォルトの名無しさん
2015/12/07(月) 12:43:32.10ID:OioPlMJu>>61の危険性はCスタイルキャストと同じだろ。
0066デフォルトの名無しさん
2015/12/07(月) 12:50:44.53ID:MCOGyvevn = static_cast<unsigned>(m);
って書いて嵌ったなぁ。
unsignedはunsigned intとして評価されて、その環境でのunsigned intが32bitしか無かったのが原因なんだけど。
0067デフォルトの名無しさん
2015/12/07(月) 13:29:16.51ID:Hqr6JCCE0068デフォルトの名無しさん
2015/12/07(月) 14:03:46.21ID:JxHjK4i361みたいなケースに限った話だったの?
0069デフォルトの名無しさん
2015/12/07(月) 15:14:45.21ID:6rSJBSiXと
(unsigned)i
って、どちらもreinterpret_cast相当で同じなんじゃないの?
危険性も同じでは?
カッコで囲う分、unsigned(i)の方がプログラマのミスを防げそうってのはあるが
(unsigned)(i)って書けば同じことだし
0070デフォルトの名無しさん
2015/12/07(月) 16:52:08.66ID:FMrKVVi90071デフォルトの名無しさん
2015/12/07(月) 20:40:29.05ID:PFJ6xruc>>64
> static_castみたいな長ったらしいのは打ちたくない時とか
みたいな理由はすごく違和感ある
xxx_cast< > の方が grep し易いし
0072デフォルトの名無しさん
2015/12/07(月) 20:46:33.27ID:YI9JvcYwおまえがreinterpret_castを理解していないことはわかった
0073デフォルトの名無しさん
2015/12/07(月) 20:59:38.29ID:vSptre4rGCCだとワーニング出せるんだけどVC++にはないんだよなあ
0074デフォルトの名無しさん
2015/12/07(月) 21:19:35.71ID:MCOGyvevcpplintで出来なかったっけ?
0075デフォルトの名無しさん
2015/12/07(月) 21:39:05.15ID:vSptre4rありがと
cpplintのソース見るとやってるみたいだね試してみるわ
0076デフォルトの名無しさん
2015/12/07(月) 22:16:48.23ID:YS1sGdfbprintfによってSegmentation faultが出てしまいました
貰ったプログラムを見ていると関数の初めと終わりにprintf文が書かれてあり、
#ifdef DEBUGで消されてありました。デバッグ用だろうと思いdefine DEBUGを書いて実行したのですが、
あるpthread_createで呼び出された関数を通るとsegmentation faultになってしまいました。。。
調べてみるとどうやらpthread_createで呼び出された関数のprintfが有るか無いかだけでsegmentation faultになるかならないかということが分かりました。
printfがあるかないかのsegmentation faultということが凄く不思議です。
printfが領域を壊しているということでよいのですよね?
ちなみに確か、printf("\tchar xxxxxxxxxxx(www = %d,yyy = %d, zzz = %d); {\n",int www, int yyy、int zzz); とprintf("xxxxxxx end\n")こんな感じでした。
・このpthreadで生まれる関数のprintfの中身をいったん入れるデータ領域などは、pthread_createの時に新たに作られるのでしょうか?
それとも元々のプログラムを実行したときに作られる領域を共有しているのですか?
・↑だとしたらpthread_createの時に領域をどれだけ確保しているかとか、わかるのでしょうか?その領域を広げれば解決できるのでしょうか?
・というか、そもそも前提はあっていますか?
・こんな可笑しなエラー、ほかにもありましたら教えてください。
コンパイルはwindows版eclipseのgcc crosscompilerです
実行環境はFreeBSD、ハードウェアのスペックはよくわかりませんが組み込み系です
よろしくお願いします〜!
0077デフォルトの名無しさん
2015/12/08(火) 00:06:06.37ID:YwewJazw前提が違っている
バグは問題の個所以前に存在する。printfも含むがそことは限らない。
0078デフォルトの名無しさん
2015/12/08(火) 00:14:31.96ID:y9imTVGc0079デフォルトの名無しさん
2015/12/08(火) 00:47:51.17ID:EGf1sWrTなにか変数の初期化忘れを疑う
008065
2015/12/08(火) 01:07:46.79ID:xTQHW/dy別に>>61に限ったつもりは無かったけど、あの形のキャストをどう呼ぶかわかんなかったんだ。
規格上はキャスト式のひとつで function notation と言うらしい。
で、>>64が言うには「Cスタイルキャストみたいな強いキャストしてほしくない」ときに
function notation を使うらしいんだけど、単一の式に対する function notation でのキャストの効果は
Cスタイルキャストと同じで依然として「強いキャスト」が実行されてしまうことになるから、
何かおかしなことを言ってると思ってる。
>>69
reinterpret_cast と const_cast の効果が両方発動したりもするよ。
>>73
GCC の -Wold-style-cast だよね。
でもなぜか同じ危険性でも function notation だと検出されないんだ・・・。
0081デフォルトの名無しさん
2015/12/08(火) 02:03:07.89ID:R0PV8G/t意味解って言ってんのか?
せめて試してから言ってるんだよな?
0082デフォルトの名無しさん
2015/12/08(火) 02:57:32.43ID:Uz/uPJvZ>>80
static_castが抜けてるよ
0083デフォルトの名無しさん
2015/12/08(火) 03:02:51.98ID:R0PV8G/t試して言ってるならこの例頼むよ。忘れんなよ。
0084デフォルトの名無しさん
2015/12/08(火) 03:05:30.26ID:xTQHW/dy何を試せって話なのかよくわかんなかったけど、>>83と合わせて、これでいいの?
http://melpon.org/wandbox/permlink/fktKKlGO95s7IKEx
typedef int* intptr;
intptr x;
void f(double const* p)
{
x = (intptr)p; // ok
x = intptr(p); // ok
x = static_cast<intptr>(p); // error
}
prog.cc: In function 'void f(const double*)':
prog.cc:7:30: error: invalid static_cast from type 'const double*' to type 'intptr {aka int*}'
x = static_cast<intptr>(p); // error
0085デフォルトの名無しさん
2015/12/08(火) 05:01:43.22ID:RVFMry3L>でもなぜか同じ危険性でも function notation だと検出されないんだ・・・。
これ初めて知ったよ
確かにold-styleじゃないけどさ
0086デフォルトの名無しさん
2015/12/08(火) 05:23:07.34ID:RVFMry3Lfunction notationじゃなくてfunctional notationな
0087デフォルトの名無しさん
2015/12/08(火) 08:24:16.94ID:1IXf9fjCデュエル・マスターズ的な非電源TCGの 《 オンライン化ツクール系ソフト 》 制作の企画。
例えば、ガチンコ・ジャッジを直ぐにでも導入できる機能を持っておりながら、
当面それを扱わず単純化させておいて、事後的に導入拡張する際に当該システムを
ブロック構造の組み合わせで後付け挿入できるように予めシステム化してあるソフト(エディター)。
既存の非電源TCGを劣らずに再現できるならば大概のニーズに応えられる筈。
バトスピ、ヴァンガ、ウィクロス、ポケカ、デジモン、ゼクス、モンコレ、ガンダム・ウォー、ライブオン、ディメンション・ゼロ、カードヒーロー、シャーマン・キングなど
のシステムを完全再現できるように設計するけど、他に此のTCGの此のシステムは再現希望とか有ったら書いて。
マジック:ザ・ギャザリングの全システムを完全に再現するのは無理だから、此れだけは必用だ!って部分のみリクエストして。
WEB通信での対戦は、個vs個、多数乱戦、チームvsチーム、個vsチームを可能な仕様とする方針。
設計思想は 《 RPGツクール 》 が良いかな? 他に、優れたエディター有ったら挙げてみて。
個人や企業などのベンダーが提示する開発費(見積もり)で折り合えば、発注する。
↓
エディター群から基本コンセプトを絞り込む(もちろんオリジナルで優れた新ネタが有れば導入する)。
↓
遊戯王OCGに関しては、タッグフォース、ADS、デュエルオンラインを発注先ベンダーに研究させる。
なるべく前述3つで可能な再現は全て実装させる方向を目指す。 まぁ努力する・・・
バトスピ、ヴァンガ、バディ、デュエマなど発売済みゲームソフトが存在してるケースはベンダーに研究させる。
↓
各社TCGを再現するテストプレイ ⇒ 更に改良や修正。
↓
機能制限した下位版を5万円以上で発売 + デュエリ−グ用に改造した上位版でサーバー稼動=営業開始。
↑
下位版の改造および商用利用には、別途で当社との契約が必要。
さ〜て、製作ベンダー見つけよっと!ww(クス
http://wc2014.2ch.net/test/read.cgi/entrance2/1449039272/-18
0088デフォルトの名無しさん
2015/12/08(火) 10:56:45.80ID:mthiYc/w> function notation だと検出されないんだ・・・
コンパイラに検出してほしいよね
これってlintじゃ検出難しいだろうから
そもそもfunctional notationなんてものが何故導入されたんだ?
こんなもん無い方が良いだろ
0089デフォルトの名無しさん
2015/12/08(火) 12:12:33.81ID:xTQHW/dyごめん。流し読みして見落としてた。ありがとう。
>>88
クラス型の一時オブジェクトを作る書式としてはしっくりくるんだけどな。
単一式の場合の特別扱い無しで常に T t(expr...) と同じ動作として定義してくれればよかったのに。
C++98 時点の話だから、たぶんただの設計ミスなんじゃないかと。
0090デフォルトの名無しさん
2015/12/08(火) 13:14:18.38ID:9OJSSoktWin32 コンソール アプリケーション
MFC=標準Windowsライブラリを使用
ATL=使用しない
文字セット=マルチバイト
実行環境 Windows NT系OS
この環境で以下のような改造したファイルオープンダイアログを
実装しようと思ってるのですが、
http://i.imgur.com/lgk1ApU.jpg
どのようにしたらいいのでしょうか?
検索してもうまく探せませんでした。
0091デフォルトの名無しさん
2015/12/08(火) 15:25:04.26ID:lAFQRlE9でもEEなら MFC/ATL もリソースエディタもなしでキツイんじゃないか
あと誘導
http://peace.2ch.net/test/read.cgi/tech/1438695290/l50
0092デフォルトの名無しさん
2015/12/08(火) 16:27:08.06ID:zjJIjn6V(unsigned)(i)
と
unsigned(i)
は何が違うの?
危険度は同じでは?
0093デフォルトの名無しさん
2015/12/08(火) 19:25:14.13ID:kigfa6aB0094デフォルトの名無しさん
2015/12/08(火) 19:56:36.38ID:9OJSSoktありがとうございます。
0095デフォルトの名無しさん
2015/12/11(金) 08:07:52.26ID:YV4fREMKbaka(v)
0096デフォルトの名無しさん
2015/12/12(土) 11:02:24.16ID:J0zYjx2jxxx.iniファイルに"HOGE=100"とあり、コード上にenum ID { HOGE };として
mapでid[ HOGE ] = (ここにiniファイルのHOGEの中身 )と記述してるのですが
iniファイル、コード上で2重に書くのがなんか変な感じがしまして
なにか別の方法があればとおもいまして
0097デフォルトの名無しさん
2015/12/12(土) 11:08:14.60ID:e2VDlW7v0098デフォルトの名無しさん
2015/12/12(土) 11:25:49.88ID:7G0ybzbE0099デフォルトの名無しさん
2015/12/12(土) 11:29:38.04ID:msfZv23aコードに同じ内容を書いているんなら、そのiniファイルは何のために存在しているの?
0100デフォルトの名無しさん
2015/12/12(土) 11:41:35.92ID:fT/m1Hfb俺もよくわからんが
低脳にレスしてもらいたくないから、低脳にはかいていることが理解できないようにしている
ってことだけは分かる
0101デフォルトの名無しさん
2015/12/12(土) 12:31:39.74ID:/H210tb+0102デフォルトの名無しさん
2015/12/12(土) 12:55:59.15ID:Gz2IfgKrid["キー"]=値ってやればいいんじゃ
iniファイルはキーの取得もできたはず、少し面倒だけど
0103デフォルトの名無しさん
2015/12/12(土) 13:12:36.30ID:6mDCyx9eC/C++じゃうまい方法がないね
0104デフォルトの名無しさん
2015/12/12(土) 14:17:52.83ID:Tlws6VKyenum と ID との結びつきを配列やテーブルで持つのはどうですか?
0105デフォルトの名無しさん
2015/12/12(土) 14:34:08.98ID:zzgKuIEvid[ HOGE ] = ....
を生成するスクリプト書く
0106デフォルトの名無しさん
2015/12/12(土) 14:41:14.90ID:/H210tb+iniファイルいじっただけでコンパイルし直しかよ
0107デフォルトの名無しさん
2015/12/12(土) 14:47:10.22ID:FWugws3z最初からclass HogeRepositoryで良いじゃん
リスク買ってまでIdを丸出しにしなくて良いよ
0108デフォルトの名無しさん
2015/12/12(土) 14:49:53.45ID:zzgKuIEvHOGE=100が変更されたら再コンパイル必須だろ
つーか、再コンパイルおそれるって、昭和のジイさんですか?
0109デフォルトの名無しさん
2015/12/12(土) 15:32:05.55ID:Gz2IfgKrid[HOGE]=100をやりたいって話だろ
0110デフォルトの名無しさん
2015/12/12(土) 15:46:21.63ID:tVgJgcBSどっちかは要件による
それ以外まともな解決策なんてないと思うが
0111デフォルトの名無しさん
2015/12/12(土) 15:48:09.53ID:tVgJgcBSメインの方では後者を読み込むというのはあるが、はっきり言って無駄だな
0112デフォルトの名無しさん
2015/12/12(土) 21:45:39.70ID:7G0ybzbE何のための設定ファイルだかわかんねえよ
ビルド時に確定させたいならiniにするのが間違い
ヘッダに書けば良い
0113デフォルトの名無しさん
2015/12/13(日) 02:33:53.99ID:qbposeEZid[0]に100をいれたいが、HOGEと"HOGE"が必要になるって話じゃないのか
0114デフォルトの名無しさん
2015/12/13(日) 03:31:17.37ID:wqYJ5l85実行時に読み込む話に決まってるだろボケ
0115デフォルトの名無しさん
2015/12/13(日) 08:23:30.44ID:hMJMcrF3char *name (HOGE)
int value (100)
}
if(strcmp(name, "HOGE") == 0) {
value = (iniのHOGEの値)
}
じゃあかんのか
0116デフォルトの名無しさん
2015/12/13(日) 08:38:10.26ID:2dKkDW/6enum の識別子 HOGE と iniファイルや key探索での "HOGE" か
id[HOGE] = FormIniFile("HOGE")
のような記述ならマクロでごまかすかな
#define IMP(arg) id[arg] = FormIniFile(#arg)
0117デフォルトの名無しさん
2015/12/13(日) 08:51:55.16ID:GP8wOhjzそれ以外を書き込まない
***hoge.ini
HOGE = 100,
FUGA = 101,
PIYO = 102,
*** .hファイル
enum{
#include "hoge.ini"
}
0118デフォルトの名無しさん
2015/12/13(日) 09:17:56.38ID:qbposeEZenum増やすたび1行書かなきゃいけないのがネックだよね
enumの定義をマクロにしてカンマ区切りの長い文字列作って…ってのもやってみたが無理矢理感が拭えない
0119デフォルトの名無しさん
2015/12/13(日) 09:29:44.34ID:2dKkDW/6あまりよいやり方じゃないけど、列挙する箇所を ファイルにしておいて
hoge.inl
IMP(HOGE1)
IMP(HOGE2)
enum 定義は
#define IMP(arg) arg,
enum {
#include "hoge.inl"
};
#undef IMP
初期化するところで
#define IMP(arg) id[arg] = FormIniFile(#arg);
#include "hoge.inl"
無理やり感満載w
0120デフォルトの名無しさん
2015/12/13(日) 09:34:03.10ID:kwkQZ1G0static const char * s_keys[] = {
"HOGE",
"HAGE",
"FUGE",
};
で、iniファイルから読み込んだkeyをs_keysからサーチしてindexを求める。
enum必要ならマクロと#includeでなんとかなるだろ。
0121デフォルトの名無しさん
2015/12/13(日) 09:56:45.90ID:+vfdgVrVclass IdCollection : Singleton<IdCollection> {
public: Id get(string const & s) { /* 略 */ }
public: Id hoge() { return get("HOGE"); }
private: void initialize() { loadFromIniFile("ids.ini"); }
private: void loadFromIniFile(string p) { // 以下略
int main() {
DoSomething(IdCollection.instance().hoge());
0122デフォルトの名無しさん
2015/12/13(日) 11:11:00.44ID:kwgRFe9Pこれ以上荒らしてんじゃねえよ
0123デフォルトの名無しさん
2015/12/13(日) 12:32:13.41ID:OeYxj6fvでも質問者不在でアレコレするのは面倒なのだ
保留
0124デフォルトの名無しさん
2015/12/13(日) 14:43:20.17ID:pXef0Z5L0125デフォルトの名無しさん
2015/12/13(日) 18:52:13.38ID:NZTqhglGargv[]が64bit整数を使わないといけないような非常に大きな整数の場合、例えば
long long a = foo(argv[1]);
と書けるようなfoo()って標準関数にありますか?
0126デフォルトの名無しさん
2015/12/13(日) 19:02:24.12ID:lukQoPhslong int strtol(const char *nptr, char **endptr, int base);
long long int strtoll(const char *nptr, char **endptr, int base);
0127デフォルトの名無しさん
2015/12/13(日) 20:45:56.44ID:vZabZWT7typedef struct aaa_t aaa;
aaa *aaa_0 ();
void aaa_1 (aaa *);
void aaa_2 (aaa *);
void aaa_3 (aaa *);
aaa *aaa_4 (aaa *);
-----------------------------------------
//a.c
struct aaa_t {
int a;
char *b;
void *c;
int d;
int e;
int f;
};
aaa_0 とかの定義
-----------------------------------------
//b.c
#include "a.h"
void f () {
aaa *p = aaa_0 ();
aaa_1 (p);
aaa_2 (p);
aaa_3 (p);
}
今現在Cでこんな感じになってるプログラムをC++にして
struct aaa_t をclass aaaにしてaaa_1とかをaaaのメンバ関数にしようとしたら
ヘッダファイルa.hのほうにclass aaaの定義を書いてその中にint aとかchar *bとかも
書くことになると思うんですけど、そうするとCのときよりも情報が見えるようになってしまうんですが
それを隠したままにできる方法ありますか?
0128デフォルトの名無しさん
2015/12/13(日) 20:49:28.59ID:4HT+vwrK0129デフォルトの名無しさん
2015/12/13(日) 21:28:27.41ID:vZabZWT7ヘッダファイルの方でクラスを抽象クラスにするしかないのかとか思ってました
0131デフォルトの名無しさん
2015/12/13(日) 22:51:14.40ID:EpxG0SJy抽象クラスで何か不満でもあるの?それが pimpl で解消される?
0132デフォルトの名無しさん
2015/12/13(日) 23:00:33.98ID:vZabZWT7今教えてもらったものでもCに比べたらポインタの分サイズは大きくなるけど
0133デフォルトの名無しさん
2015/12/13(日) 23:13:17.80ID:EpxG0SJyそのサイズの増加を受け入れるほどに継承に何か実害がある?
実装隠蔽の手法としてどうも pimpl のほうが人気がある理由がよくわからん。
委譲コード書くのもめんどいし。
0134デフォルトの名無しさん
2015/12/13(日) 23:18:54.26ID:pXef0Z5L0135デフォルトの名無しさん
2015/12/13(日) 23:37:27.90ID:vZabZWT7サイズに関しては仮想関数へのポインタ持つから継承でも増えるってのもあるし
0136デフォルトの名無しさん
2015/12/13(日) 23:44:03.11ID:XZ6E7GcHどこに依存が発生してんのよ
http://ideone.com/B748fb
0137デフォルトの名無しさん
2015/12/14(月) 00:16:21.17ID:zTGRmQeTクラスが二つに分かれるのは pimpl でもいっしょじゃないの?
比較記事もけっこうあるね。
https://www.google.co.jp/search?q=interface+"pimpl"
0138デフォルトの名無しさん
2015/12/14(月) 01:42:56.68ID:MegyS/CV0139デフォルトの名無しさん
2015/12/15(火) 02:04:47.70ID:GD1VdqaIforkを実行した時点で、forkの戻り値のpidが違うだけの同じコードが実行されるプロセスが複製されるの??
何がどうなってるのかさっぱりだけど衝撃的過ぎる
0140デフォルトの名無しさん
2015/12/15(火) 03:33:31.62ID:AjaVKfD6親プロセスでファイルを見ると更新されてる。
0141デフォルトの名無しさん
2015/12/15(火) 05:25:11.90ID:RYa4o3uw#include <vector>
using std::vector;
class vtest
{
public:
vector<int> hoge(10);
}
みたに書くと型を指定しろって言われて、個人的には関数として認識されてるんじゃないかなって思うんですけれど…
0142デフォルトの名無しさん
2015/12/15(火) 05:39:14.20ID:B8igkfF6その通り
何でこんな面倒な機能があるかはこことか参考になるかと
http://www.ncad.co.jp/~komata/c-kouza3.htm
0143デフォルトの名無しさん
2015/12/15(火) 06:58:46.88ID:1RaqkxGqvtest() : hoge(10) {}
0144デフォルトの名無しさん
2015/12/15(火) 07:05:23.53ID:RYa4o3uwつまりはクラスのコンストラクタで渡せ、って事でいいのかな?
なんかいろいろ試してたら
hoge._BConstruct([要素数],[数値])で初期化できるっぽい…?
0145デフォルトの名無しさん
2015/12/15(火) 07:13:02.00ID:RYa4o3uwhoge.resizeで要素数の設定から初期パラメータまで設定できるっぽいな、サンクス
0146デフォルトの名無しさん
2015/12/15(火) 09:51:36.66ID:9AhINhvX抽象クラスは委譲コードの分の余地がないので
基底への変更にものすごく弱い
0147デフォルトの名無しさん
2015/12/15(火) 10:10:25.74ID:FTksUk/b「委譲コードの分の余地」ってどんなの?
pimpl にしかできないことっぽいんだけど、思いつかない。
0148デフォルトの名無しさん
2015/12/15(火) 10:14:40.27ID:9AhINhvXpimplの呼び出し部分で変更余地があるだろ
委譲コードなら何でもそうだけど
0149デフォルトの名無しさん
2015/12/15(火) 10:29:07.10ID:FTksUk/bそれがなんで抽象クラスではできないことになるのか、わからない。
0150デフォルトの名無しさん
2015/12/15(火) 11:12:33.82ID:9AhINhvX言っている意味がわからない、派生先で委譲するという事か?
その場合も結局クラス定義で委譲先への依存が起こるので同じ事
継承してファクトリ経由で生成しても必ず何処かで実装依存する事は避けられない
pimplの場合はpimplのみの緩衝で防げる
0151デフォルトの名無しさん
2015/12/15(火) 11:14:47.92ID:9AhINhvX0152デフォルトの名無しさん
2015/12/15(火) 14:19:47.85ID:Z+PgRVVdまーWindowsしか知らない人がfork知るとひっくり返るよね
Windowsではスレッドを使うのが一般的だけど
Unix系ではforkでマルチプロセスが基本だったんだよね
他にもファイルの扱いとかいろいろ斬新だよね
0153デフォルトの名無しさん
2015/12/15(火) 19:54:49.22ID:crf4TWR5基底クラスの実装変更が派生クラス全てに影響するし
もうまじさいあくぷんぷん
0154デフォルトの名無しさん
2015/12/15(火) 22:34:09.78ID:46Jh9WrXvector<int> baka = vector<int>(10);
0155デフォルトの名無しさん
2015/12/15(火) 22:52:06.66ID:FTksUk/bごめんよ。↓こんなコードを比べてると思ってるんだけど、あってる?
// PimplInterface.hpp
struct PimplInterface {
int f();
private:
class Impl;
Impl* pimpl;
};
// PimplInterface.cpp
struct PimplInterface::Impl {
int f() { return 1; }
};
int PimplInterface::f() { return pimpl->f(); }
// AbstractInterface.hpp
struct AbstractInterface {
virtual int f() = 0;
};
// AbstractInterface.cpp
struct AbstractInterfaceImpl : AbstractInterface {
int f() { return 1; }
};
「基底の変更」は AbstractInteface つまり外部インターフェースの変更のことで、
pimpl の「委譲コード」が PimplInterface::f() の定義のことだと思うんだけど、
やっぱり「基底の変更にものすごく弱い」とか「実装依存」とか言ってるのが
なんのことだか見えてこないんだ。
*Interface にどんな変更が入った場合に起こる問題のことを言ってるの?
0156デフォルトの名無しさん
2015/12/16(水) 11:31:36.35ID:3uR0/mnz派生クラスも実装だぞ
基底クラスへの変更は、派生の非公開部分の定義に影響が波及しうる
防止する方法は委譲が簡単で、その極端な物はpimpl
0157デフォルトの名無しさん
2015/12/16(水) 11:57:18.05ID:3uR0/mnz派生クラスでpublicメンバ増やす事もよくあるし
0158デフォルトの名無しさん
2015/12/16(水) 12:08:47.02ID:fTEXesYP個人的には利用者側に
AbstractInterface *x = new AbstractInterfaceImpl;
のように使わせることを強制するからインターフェースは使わないけど
0159デフォルトの名無しさん
2015/12/16(水) 12:14:31.21ID:3uR0/mnzインスタンス化についてはファクトリ云々でとっくに言及したつもりだが…
0160デフォルトの名無しさん
2015/12/16(水) 12:40:53.99ID:3uR0/mnzそれが何の役に立つかは、大規模になってみればわかる
0161デフォルトの名無しさん
2015/12/16(水) 23:04:32.63ID:ReBK9+wBインターフェースが変わったら実装に影響が波及しうるのはあたりまえじゃないの?
それの何が問題になるの?
仮に問題があったとして、 AbstractInteface を変更したときに
AbstractInterfaceImpl に変更が入るのが問題だというのなら、
PimplInterface を変更したときに PimplInterface::Impl や
PimplInterface::f() に変更が入るのも同じように問題なんじゃないの?
0162デフォルトの名無しさん
2015/12/17(木) 08:13:07.84ID:qGFinMD/実装に依存するとかしないとか継承がいいか移譲がいいかとかは関係のない話だよ
0163デフォルトの名無しさん
2015/12/17(木) 20:25:09.68ID:M1gCQnPPPimplは公開側のヘッダへの変更がなくなり依存元の定義には影響しない
全く別
0164デフォルトの名無しさん
2015/12/17(木) 20:26:53.95ID:M1gCQnPPいいやそれも違う
実装をきちんと分離している分、モジュール性は上
継承が無駄な依存関係を作るのはもはや常識だろ
0165デフォルトの名無しさん
2015/12/17(木) 20:37:51.88ID:NMgzdQxk{
char data[5'000'000];
};
int main()
{
auto p = new large{};
return 0;
}
出力
1>------ ビルド開始: プロジェクト:CppTest, 構成:Debug x64 ------
1> main.cpp
..........main.cpp(8): fatal error C1060: ヒープの領域を使い果たしました。
========== ビルド: 0 正常終了、1 失敗、1 更新不要、0 スキップ ==========
配列のサイズを5MB以上にすると上記エラーが出てコンパイルに失敗するんですが、どのように直せばいいでしょうか。
0166デフォルトの名無しさん
2015/12/17(木) 20:42:26.86ID:T7FXs248デザインパターンを語るコンテキストではbridgeパターンと呼ぶ
c++に特有のコンパイルコストを削減するテクニックの事を語るコンテキストではpimplイディオムと呼ぶ
pimplイディオムをbridgeパターンの意味で語る人は理解が浅い
0167デフォルトの名無しさん
2015/12/17(木) 22:39:55.30ID:RFQK/sQsここは初心者が討論する場です
場違いだから動的メモリをGoogle様に教えを乞え
0168デフォルトの名無しさん
2015/12/17(木) 23:51:42.56ID:SCk0qjaEそれ抽象インターフェースでも同じだろ。
>>164
抽象インターフェースでも実装をきちんと分離できてるだろ。
違うというのなら >>155 のコードに対する変更で、
抽象インターフェースの場合だけ問題が起こるような例を挙げてみろよ。
0169デフォルトの名無しさん
2015/12/18(金) 10:44:40.42ID:mykTsSjnコンパイルが速いのは翻訳単位の分離の効果の一つでそれだけではないだろ
それとpimplは確かに大部分はbridgeと見ることはできるが
形式上の汎化なので変更のすりあわせは考えなくていい利点がある
>>168
例を挙げてみろという以前に
そもそも>>155では実装が見える位置に必要な時点で論外だと思うが
0170デフォルトの名無しさん
2015/12/18(金) 11:16:58.75ID:auMwa2zzは?コード読めてないのに偉そうに言ってたの?
hpp →使用者から見える位置
cpp →使用者から見えない位置
だろ?
どちらも実装は使用者から見えないところで好きにできる。
0171デフォルトの名無しさん
2015/12/18(金) 11:20:44.51ID:O/HlozI2おいおい…
0172デフォルトの名無しさん
2015/12/18(金) 18:28:01.68ID:LQ+VNahfみんなでC#を使おう
0173デフォルトの名無しさん
2015/12/18(金) 18:57:55.99ID:znmCm21O0174デフォルトの名無しさん
2015/12/18(金) 21:25:47.60ID:LbePE/nB0175デフォルトの名無しさん
2015/12/19(土) 09:37:32.82ID:n5v6Wxrv0176デフォルトの名無しさん
2015/12/19(土) 13:18:46.45ID:O2ZUrLIwえ gccなら何の問題もないけど。数ギガでもいけるよ。
vcにそんな設定あったかな。
0177デフォルトの名無しさん
2015/12/19(土) 17:09:31.16ID:dNXWfsX0たかが32bitのフルハイビジョンの画像でも7MBあるのにさー
今時5MB以下じゃ何にも出来ねーじゃん
ありえないと思ってVS3015でコンパイルしたら普通にできたし、当然
struct large
{
char data[5000000];
};
new large();
0178デフォルトの名無しさん
2015/12/19(土) 17:38:00.46ID:L2SZ6ujcこの手順通りにやれば解決すると思うけど面倒くさい
https://msdn.microsoft.com/ja-jp/library/yz7kx3y2.aspx
質問者はこれは試したのか?
0179デフォルトの名無しさん
2015/12/19(土) 20:20:28.18ID:8yNt9Gxa3015・・・
0180デフォルトの名無しさん
2015/12/19(土) 20:31:32.46ID:phu0BYTxそんな糞コンパイラ捨てちまえ
0181175
2015/12/19(土) 20:53:16.90ID:n5v6Wxrvタスクマネージャを見てるとcl.exeが4GB近くメモリを消費した上でコンパイルエラーになっていました。
しかし>>177さんがやったように、newの波括弧を丸括弧に変えるとすぐにコンパイルが完了しました。
どうもありがとうございました。
0182デフォルトの名無しさん
2015/12/19(土) 23:34:04.44ID:O2ZUrLIwc++11準拠のgccならどっちでも出来ます。
0183デフォルトの名無しさん
2015/12/21(月) 18:59:46.87ID:WFqlvm2l0184デフォルトの名無しさん
2015/12/21(月) 20:12:38.96ID:KpoKQwNCNode *node;
~Node() {
delete node;
}
};
こんなコードを考えたのですが、インスタンス生成時、nodeポインタは常にNULLで初期化されると考えてよいですか?
言語仕様上仮にポインタ型メンバ変数へのNULL初期化が保証されない場合、
delete node;のタイミングで未知のアドレスを参照し、セグメントエラーが発生する気がします。
Clangでは常にNULLで初期化されることを確認していますが、これは言語仕様として本来保証されていることなのでしょうか?
0185デフォルトの名無しさん
2015/12/21(月) 20:19:38.56ID:hysKJ3zZコンストラクタで0にしておきましょう
0186デフォルトの名無しさん
2015/12/21(月) 21:56:30.70ID:pRvfBbh10187デフォルトの名無しさん
2015/12/22(火) 15:56:31.30ID:yVaIQO7mたしかにデフォルトコンストラクタのアセンブラコード読むとNULLでの初期化は行われていませんでした。
Clang上で常にNULLになるのはたまたまなのかもしれません。
0188デフォルトの名無しさん
2015/12/22(火) 21:49:46.29ID:iXAEsn1T0189デフォルトの名無しさん
2015/12/22(火) 23:47:23.54ID:ntafDQl80190デフォルトの名無しさん
2015/12/23(水) 01:04:09.01ID:Bzaz3PF30191デフォルトの名無しさん
2015/12/23(水) 01:32:56.47ID:xKy7nhKtゼロだと動いちゃうかもしれない
0192デフォルトの名無しさん
2015/12/23(水) 01:35:24.25ID:arljeKOEふえぇぇふえぇぇ
0193デフォルトの名無しさん
2015/12/23(水) 01:58:19.57ID:at23GWqEそれならcdcd...で初期化されてない?
0194デフォルトの名無しさん
2015/12/23(水) 09:21:35.68ID:ODpqAUDQだっけ
0195デフォルトの名無しさん
2015/12/23(水) 15:31:40.52ID:ECsqfIr3じゃなかったっけ
0196デフォルトの名無しさん
2015/12/23(水) 15:55:47.35ID:r+tlUph/だったかも
0197デフォルトの名無しさん
2015/12/23(水) 16:12:39.75ID:xKy7nhKt0198デフォルトの名無しさん
2015/12/23(水) 22:38:54.77ID:7WMNq5Xe0199デフォルトの名無しさん
2015/12/23(水) 22:57:15.26ID:1ZCzEE1G仕様だと思ってたぜ。
NULL初期化って余計なお節介だな。
0200デフォルトの名無しさん
2015/12/23(水) 23:24:02.70ID:McSS3rOm規格でゼロ初期化に変更あったっけ
0201デフォルトの名無しさん
2015/12/24(木) 01:00:03.19ID:VDgCwlJnもしなっていてもそれはタマタマと考えるべきかと
0202デフォルトの名無しさん
2015/12/24(木) 01:10:23.72ID:K6EVLoojnew Pod; // 初期化されない
new Pod(); // ゼロ初期化される
の違いが分かってないとか
0203デフォルトの名無しさん
2015/12/24(木) 01:19:35.59ID:fAuO55DH0204デフォルトの名無しさん
2015/12/24(木) 02:01:32.75ID:V9PGbmLB0205デフォルトの名無しさん
2015/12/24(木) 11:28:46.92ID:JZgNJNA50206デフォルトの名無しさん
2015/12/24(木) 12:25:55.70ID:dR07FXZ0これ、規格になってる??
0207デフォルトの名無しさん
2015/12/24(木) 18:29:24.36ID:tvPg4lrF0208デフォルトの名無しさん
2015/12/24(木) 18:46:20.52ID:Ar5g1rkf0209デフォルトの名無しさん
2015/12/24(木) 19:55:11.14ID:dcfXgtmn0210デフォルトの名無しさん
2015/12/24(木) 20:13:24.98ID:dw0e86QI0211デフォルトの名無しさん
2015/12/24(木) 22:17:30.83ID:Ar5g1rkf【改訂版】組込みソフトウェア開発向けコーディング作法ガイド[C言語版]
あと、職場独自の作法には慣れといた方がいいかもしれない
0212デフォルトの名無しさん
2015/12/25(金) 02:23:10.06ID:0EBqQae1安定して儲かってるのが自動車産業で、
その大多数がC言語なのにな
0213デフォルトの名無しさん
2015/12/25(金) 03:04:12.73ID:DzMu9hDD0214デフォルトの名無しさん
2015/12/25(金) 20:31:38.55ID:/bEJrxfYアドレスの参照値がたまたまNULLだったってことだと思うが。
二回目の呼び出しではNULL以外の値が入ってるはずだぜ?
0215デフォルトの名無しさん
2015/12/26(土) 22:16:59.57ID:IeRmux4pC++の摩訶不思議な世界に行くと自分はゴミ同然だと気付かせてくれる
0216デフォルトの名無しさん
2015/12/26(土) 22:21:14.22ID:bmbNcMd50217デフォルトの名無しさん
2015/12/26(土) 22:33:59.51ID:HLaSlD1p0218デフォルトの名無しさん
2015/12/26(土) 22:39:10.27ID:+JcsFmSH逆はキツイよね
0219デフォルトの名無しさん
2015/12/26(土) 23:21:16.13ID:YV12MLKoC/C++の縛りは現実の計算機の縛り
0220デフォルトの名無しさん
2015/12/27(日) 03:03:31.33ID:zaprQqThと思う事しばしば
0221デフォルトの名無しさん
2015/12/27(日) 09:08:19.31ID:PMis8xQ4他人への価値提供のためでなく自分の満足のためにCを採択する
0222デフォルトの名無しさん
2015/12/27(日) 13:47:27.66ID:9EE16oiU0223デフォルトの名無しさん
2015/12/28(月) 23:47:04.43ID:ESQO+1YWというコードを見て一瞬思考が止まった
0224デフォルトの名無しさん
2015/12/29(火) 00:03:33.08ID:J2wZ8xV40225デフォルトの名無しさん
2015/12/29(火) 00:17:26.08ID:yDsgWReu0226デフォルトの名無しさん
2015/12/29(火) 02:00:39.39ID:RQT/AIDK単なる趣味でやってるオタがC++のやっかいなところに嵌って暇つぶししたって何の問題もない
0227デフォルトの名無しさん
2015/12/29(火) 11:21:41.23ID:tOZW1499vector<int> v{10};
これを正しく使い分けないといけない言語改定が開発効率向上とな
0228デフォルトの名無しさん
2015/12/29(火) 12:46:42.30ID:RQT/AIDKはい。熟練者はそんなところで混乱したりしませんから。
0229デフォルトの名無しさん
2015/12/29(火) 13:05:11.52ID:yDsgWReu0230デフォルトの名無しさん
2015/12/29(火) 13:34:33.37ID:TUTY/6iGperfect forwarding(完全転送)という名の完全でも転送でも無いstd::forwardを正しく使うくらい朝飯前だろ?
0231デフォルトの名無しさん
2015/12/29(火) 13:53:41.29ID:m+tOu9MT0232デフォルトの名無しさん
2015/12/29(火) 21:40:43.02ID:PaSnbjgD「型」の完全転送だからな。
0233デフォルトの名無しさん
2015/12/29(火) 22:14:54.20ID:yDsgWReu0234デフォルトの名無しさん
2015/12/29(火) 22:34:59.08ID:RwgMy6a6どうしてそう息を吸って吐くように嘘をつくのか
std::forward<string>( std::string{} )
型は変わっている
0235デフォルトの名無しさん
2015/12/30(水) 22:59:16.88ID:gI1ebqZAと思って調べたら13.5節か
何でこんな変なとこに定義が書いてあんだよ
0236デフォルトの名無しさん
2015/12/30(水) 23:57:37.11ID:JlgYQswX添字演算子とか書いてあるサイトも有るよ
0237デフォルトの名無しさん
2015/12/31(木) 01:38:07.39ID:W0RDddJCa[0] でも 0[a] でもいいって。
ちょとウニるわな。
0238デフォルトの名無しさん
2015/12/31(木) 16:39:09.60ID:2szMeuyR変わってないよね?
0239234
2015/12/31(木) 17:19:22.64ID:QJzU9MHDどう見ても変わってるのだが
http://melpon.org/wandbox/permlink/5ln4xBZ6GrD2jUbw
0240デフォルトの名無しさん
2015/12/31(木) 18:09:22.91ID:QJzU9MHDstring型がstring&&型に変わると言いたかった
0241デフォルトの名無しさん
2016/01/01(金) 14:17:09.15ID:7oU3J/K5no, name, state, price
1, yamada, sleep, 100
2, higuchi, alive, 250
3, inage, alive, 170
みたいに、列に名前をつけているデータがあります。
列はたまに動的で、name と state の間に列が割り込んだりします。
はじめは const で state = 2 として、
決め打ちで読み出していたのですが、
列がずれると定義を変更しなくてはいけません。
そこで、列名でアクセスすれば良いのではないかと思い、
例えば 2番の state を調べるときに
state が何列目か一行目を右に調べてから
2行目の何列目という風にアクセスしています。
一応できているのですが、もっと良い方法はないでしょうか。
あるいは、普通こういうときはどうすべきでしょうか。
この読み込んだ CSV は、かなり頻繁にアクセスするので、
そこも踏まえてアドバイス頂けると嬉しいです。
なんでカラムが変わる前提なのかと疑問があると思いますが、
そこはご容赦お願いします。
0242デフォルトの名無しさん
2016/01/01(金) 14:33:17.05ID:R5F49H24列名 ⇒ 列番号 の対応表を作ればいいだけじゃね?
0243デフォルトの名無しさん
2016/01/01(金) 14:33:27.43ID:yq6n8segヘッダ部分をヘッダ名->インデックスのディクショナリに格納
おしまい
0244デフォルトの名無しさん
2016/01/01(金) 21:33:51.36ID:7oU3J/K5それだと、列が増えたりする度に定義ソースを書き換えるような…
>>243
すみません、二次元コレクション調べたのですがイミフでした。
にわかなもので、すみません。
const しているのを変数にして、
一番最初に列の名前の場所を動的に拾い、
構造体に放り込んでみます。
みなさん、ありがとうございました。
0245デフォルトの名無しさん
2016/01/01(金) 22:01:13.16ID:NO+H6ZMg> それだと、列が増えたりする度に定義ソースを書き換えるような…
当然「動的」に作るってこと
>>243
> ヘッダ部分をヘッダ名->インデックスのディクショナリに格納
と同じことを言っている
0246デフォルトの名無しさん
2016/01/01(金) 22:22:51.52ID:dF7ELeO+ファイルからデータを読み込んで上記クラスのインスタンスに格納する
以上
0247デフォルトの名無しさん
2016/01/01(金) 23:36:34.95ID:9DJLBWi4>一応できているのですが、もっと良い方法はないでしょうか
いえそれが最善です
>>242-246のたわごとは無視して下さい
0248デフォルトの名無しさん
2016/01/02(土) 18:39:57.59ID:nW8KZWOhclass A {
public:
A(){}
~A(){}
int i:1;
};
int main(int argc, char const* argv[])
{
A a;
std::cout << a.i ;//0
return 0;
}
UE4のソース見ていると、
メンバ変数末尾に:がついたコードがあるんですが一対何なんでしょう
なぜコンパイルエラーにならないのか?
UEヘッダーツールで後々セッティングするための記述なんでしょうか?
よろしくお願いします
0249デフォルトの名無しさん
2016/01/02(土) 18:42:48.44ID:5/Tw741l0250デフォルトの名無しさん
2016/01/02(土) 18:49:51.57ID:BIgpFdUh自分が知っているものを他人も知っている前提で物申すな低能
0251デフォルトの名無しさん
2016/01/02(土) 18:51:55.62ID:nW8KZWOh使ったことなかったので知りませんでした
どこかで聞いたことぐらいはあったかも知りませんが、
いまいちぐぐり方が難しいので助かりました
C++ デフォルト メンバ変数 : とか結構見当違いな方向でぐぐってました
ありがとうございました
0252デフォルトの名無しさん
2016/01/02(土) 19:03:02.99ID:9k2o+ba6思えば一回も使った事ないです。
0253デフォルトの名無しさん
2016/01/02(土) 20:09:45.36ID:Ko89Gf9xレスにソース書いてあるのに何を言ってるんだよ
0254デフォルトの名無しさん
2016/01/05(火) 18:38:18.23ID:zgQ43Iu90255デフォルトの名無しさん
2016/01/08(金) 20:37:47.38ID:gc7pwQgrこの^記号ってどういう意味?
0256デフォルトの名無しさん
2016/01/08(金) 20:39:12.47ID:yJqiucPCそれは別の言語だからVisual C++ C++/CLI関連のスレで訊け
0257デフォルトの名無しさん
2016/01/08(金) 20:41:04.59ID:h+RBpIK2^ は bit毎の xor
0258デフォルトの名無しさん
2016/01/08(金) 20:48:43.06ID:/U+i+vMxいや 2項演算子じゃないぞ
C++/CLI のハンドル型とかいうポインタ(*)の変形らしい
0259デフォルトの名無しさん
2016/01/08(金) 20:51:12.19ID:h+RBpIK2頭の int が見えてなかった
ありがとね >>258
0260デフォルトの名無しさん
2016/01/08(金) 20:59:30.22ID:2h/9GNmm0261デフォルトの名無しさん
2016/01/08(金) 21:03:02.67ID:h+RBpIK20262デフォルトの名無しさん
2016/01/08(金) 23:39:42.16ID:WIwHnmZz0263デフォルトの名無しさん
2016/01/11(月) 13:29:58.86ID:VxUMtYXUtemplate template_key_value
class MapA {};
template template_key_value
class MapB {};
これと同じことをより安全に実現する方法って有りますか?
0264デフォルトの名無しさん
2016/01/11(月) 13:41:04.34ID:IUrb95R1何も危険なことなんて無いような?
そのままじゃコンパイル通らないけど、そこが問題でも無いだろうし。
クラス定義が空だからテンプレートにする意味が無さそうだけど、そういう話でもないだろうし。
何がしたいのかよくわかんない。
0265デフォルトの名無しさん
2016/01/11(月) 15:45:01.43ID:NVJocn8Z0266デフォルトの名無しさん
2016/01/11(月) 22:00:19.19ID:E66NlO7ovisual studio使えば自動的にc++やん
0267デフォルトの名無しさん
2016/01/12(火) 00:23:03.57ID:fG9YW/Cm…??
0268デフォルトの名無しさん
2016/01/12(火) 00:34:18.71ID:wtMUPjLqVisualStudio使ったこと無いの?
昔から.cppを使う慣習があって、VisualStudio含むいくつかの開発環境ではそれに従うと使いやすくなってるんだよ
0269デフォルトの名無しさん
2016/01/12(火) 00:36:04.73ID:wtMUPjLqそうなら紛らわしい書き方すんな
0270デフォルトの名無しさん
2016/01/12(火) 09:32:08.92ID:gKzzuNPX0271デフォルトの名無しさん
2016/01/12(火) 11:00:20.32ID:vQw7MuFLすみません書き方間違ってました。
#define template_key_value <typename K, typename V>
template template_key_value class MapA {};
template template_key_value class MapB {};
テンプレートが長く複雑になる場合にわざわざ直書きすると、可読性が悪くなるので別名を付けたいと考えています。
ただC++の世界ではマクロが嫌われているようなので、どうしても以下の様な聞き方を強制されてしまうのです。
template <typename K, typename V> class MapA {};
template <typename K, typename V> class MapB {};
0272デフォルトの名無しさん
2016/01/12(火) 11:16:41.18ID:zdBaNW7Z「嫌われている」から排除を強制と思うのはおかしい。
実際にマクロを使って何が問題なのか、よく考えて判断したほうが自由になれるよ。
使い終わったら #undef してもいいんだぜ。
少なくとも書き込まれた例だけではマクロを使うほどの話とは思わないけど、実際はもっとあるんだろうな。
違いを無視できる話かどうか知らんけど、ひとつのクラステンプレート内にクラスを定義する形でいくらか
マシにできるかもしれない。
0273デフォルトの名無しさん
2016/01/12(火) 12:44:56.38ID:jL8tZsFOtypedef MapA<string, int> MAP_A_1;
typedef MapA<string, string> MAP_A_2;
とかじゃダメなの?
0274デフォルトの名無しさん
2016/01/12(火) 17:49:46.69ID:rnRes0fv言うほど短くならないような。
templateが冗長だから頭のtemplateもマクロに含めたら?
0275デフォルトの名無しさん
2016/01/12(火) 18:50:45.22ID:ezb8i33T#define L long
#define typename TN
0276デフォルトの名無しさん
2016/01/12(火) 23:47:38.33ID:9sPejAjF(アカン)
0277デフォルトの名無しさん
2016/01/13(水) 13:25:11.31ID:36fPT7nKtemplate <typename K, typename V> class Map {};
class MapA : Map<K, V> {};
class MapB : Map<K, V> {};
0278デフォルトの名無しさん
2016/01/13(水) 20:41:54.84ID:kNuNR485fscanfの返り値がおかしく、EOFとならずに処理が終了しません。
データの列要素は15なので、返り値も15となるはずなのですが、
「1」と表示されてしまいます。
行は2千万行近くありますが、その値を過ぎても終了しません。
csvファイルのデータ容量は1.42GBあります。
助言宜しくお願いします。
問題だと思われるループとfscanfの部分を記載します。
while(ret=fscanf(fp,
0279デフォルトの名無しさん
2016/01/13(水) 20:44:10.04ID:kNuNR485&d[0][0],&d[0][1],&d[1][0],&d[1][1],&d[2][0],&d[2][1],
&e[0][0],&e[0][1],&e[1][0],&e[1][1])!=EOF){
処理等
}
0280デフォルトの名無しさん
2016/01/13(水) 20:46:51.56ID:Lg0tGVPBfopen(); 付近はどうなってるのか
0281デフォルトの名無しさん
2016/01/13(水) 20:49:56.90ID:kNuNR485すいません書き忘れてました。
FILE *fp
fp=fopen("example.csv","r");
if(fp==NULL){
printf("no file\n");
exit(0);
}
0282デフォルトの名無しさん
2016/01/13(水) 20:50:31.77ID:Lg0tGVPBああなるほど、fopen関係なさそう。
> while( (ret = fscanf(fp,"…",)) != EOF){
みたいにカッコで明示すべきでは。
というか、それコンパイル通ってるの?
0283デフォルトの名無しさん
2016/01/13(水) 20:50:57.42ID:XHmQOsbKwhile ((ret = fscanf()) != EOF) な
ret = fscanf() != EOF だと fscanf() != EOF の論理演算の結果が ret に入る
csvファイルなら fgets() で行を切り出して sscanf() したほうがよさそう
なお、厳密にやり始めると一文字ずつパースするはめになるだろう
0284デフォルトの名無しさん
2016/01/13(水) 20:52:18.55ID:Lg0tGVPB0285デフォルトの名無しさん
2016/01/13(水) 20:58:57.11ID:kNuNR485今確認してみたところ、最終行を迎えたあと、fscanfの返り値は0となっていました。
0286デフォルトの名無しさん
2016/01/13(水) 21:02:30.81ID:kNuNR4850287デフォルトの名無しさん
2016/01/13(水) 21:09:44.61ID:kNuNR485while((ret=fscanf())!=0)とすることで解決しました。
エクセルファイルの作成方法が間違っていたのかもしれません。
そちらを確認したいと思います。
ありがとうございました。
0288デフォルトの名無しさん
2016/01/13(水) 21:10:13.23ID:Lg0tGVPB0289デフォルトの名無しさん
2016/01/13(水) 21:11:30.82ID:Lg0tGVPB>>283だけ見て。
0290デフォルトの名無しさん
2016/01/14(木) 00:45:24.54ID:guxsAoupfscanf() の戻り値の仕様見直せ。
0291デフォルトの名無しさん
2016/01/14(木) 07:40:34.39ID:dQ9Y6guQRPGツクール2000 , RPGツクールMV https://tkool.jp/mv/ ( JavaScript 採用 )
WOLF RPGエディター http://www.silversecond.com/WolfRPGEditor/
デュエル・マスターズ Android版 ,i-OS版、公式 http://dm.takaratomy.co.jp/extra/dmapp/entrygate_ds/
デュエル・マスターズ対戦CGI ex
https://web.archive.org/web/20150809154946/http://www53.atwiki.jp/dmsuishinparty/pages/314.html
デュエル・マスターズ(デュエマ)DM ONLINE 1.8a / VanGuard ONLINE 1.5a
https://web.archive.org/web/20150809160254/http://uhyohyohyo.sak ura.ne.jp/hsp.html
ヴァンガード専用ネット対戦ツール【 VanGuard Online 】
https://web.archive.org/web/20150809155032/http://kiimaa.jugem.jp/?eid=61
「カードファイト!!ヴァンガード」のネット対戦ができる公式オンラインゲーム「Cardfight!! Online」 2015年冬スタート
https://web.archive.org/web/20150809153724/http://supersolenoid.blog63.fc2.com/blog-entry-6886.html
遊戯王 Automatic Dueling System
https://web.archive.org/web/20150809164855/http://www3.atwiki.jp/ads-wiki/pages/20.html
遊戯王 デュエル・オンライン
https://web.archive.org/web/20150809171527/http://www31.atwiki.jp/vipdo/pages/15.html
https://web.archive.org/web/20140628005202/http://do.yugioh-portal.net/
ウィクロス( WIXOSS ) WEBXOSS http://webxoss.com/about_en.html http://webxoss.com/DeckEditor/
BG(ボードゲーム)Engine https://web.archive.org/web/20151209080842/https://bgengine.net/
https://web.archive.org/web/20151209172205/http://14owl.hateblo.jp/entry/2015/12/09/011234
アプレンティス マジック:ザ・ギャザリング(MtG)オンライン化 http://homepage1.nifty.com/Q_Q/ap.html
https://web.archive.org/web/20151202202725/http://homepage1.nifty.com/Q_Q/ap.html
0292デフォルトの名無しさん
2016/01/14(木) 07:41:31.92ID:dQ9Y6guQデュエル・マスターズ的な非電源TCGの 《 オンライン化ツクール系ソフト 》 制作の企画。
例えば、ガチンコ・ジャッジを直ぐにでも導入できる機能を持っておりながら、
当面それを扱わず単純化させておいて、事後的に導入拡張する際に当該システムを
ブロック構造の組み合わせで後付け挿入できるように予めシステム化してあるソフト(エディター)。
既存の非電源TCGを劣らずに再現できるならば大概のニーズに応えられる筈。
デュエマ、ヴァンガ、ウィクロス、ポケカ、デジモン、ゼクス、モンコレ、旧ガンダム・ウォー、ライブオン、ディメンション・ゼロ、シャーマン・キング、カードヒーローなど
のシステムを完全再現できるように設計するけど、他に此のTCGの此のシステムは再現希望とか有ったら書け。
マジック:ザ・ギャザリングの全システムを完全に再現するのは無理だから、此れだけは必用だ!って部分のみリクエストしろ。
個vs個、多数乱戦、チームvsチーム、個vsチームを実現し、P2P通信対戦プラグイン有り。
設計思想は 《 RPGツクール 》 が良いかな? 他に、優れたエディター有ったら挙げてみろ。
個人や企業などのベンダーが提示する開発費(見積もり)で折り合えば、発注する。
↓
エディター群から基本コンセプトを絞り込む(もちろんオリジナルで優れた新ネタが有れば導入する)。
↓
遊戯王OCGに関しては、タッグフォース、ADS、デュエルオンラインを発注先ベンダーに研究させる。
バトスピ、ヴァンガ、デュエマなど発売済みゲームソフトが存在してるTCGはベンダーに研究させる。
↓
各社TCGを再現するテストプレイ ⇒ 更に改良や修正 + コード記述の仕様書(設計書)を作成。
↓
機能制限した下位版を制作しても原則として発売せず + 上位版デュエリ−グ用でサーバー稼動。
↑
下位版を仮に発売した場合の改造および商用利用には、別途で当社との契約が必要。
さ〜て、インド人ベンダーと日本人の翻訳担当SEを見つけよっと!ww
http://wc2014.2ch.net/test/read.cgi/entrance2/1451262577/-16
0293デフォルトの名無しさん
2016/01/15(金) 06:36:40.59ID:KIFGsBEOこれ何?
いかにもDQNあがりのヴァカ企画が付けそうな名前だけど
0294デフォルトの名無しさん
2016/01/15(金) 07:38:29.68ID:POz82VxFここまで宣伝テンプレ
0295デフォルトの名無しさん
2016/01/20(水) 04:13:40.21ID:CT14PSG+$ cat text.txt
aa\nbb
$
となってます。
これを
42 fin.open("test.txt",ios::in);
49 while(fin && getline(fin, buf))
50 cout<<buf<<endl;
な感じで表示すると、
aa\nbb
って表示されます。
どうして
aa
bb
ってならないのでしょうか。何か勘違いしてますか。
0296デフォルトの名無しさん
2016/01/20(水) 04:31:24.49ID:CT14PSG+0297デフォルトの名無しさん
2016/01/23(土) 13:01:50.67ID:W4+KYwy50298デフォルトの名無しさん
2016/01/23(土) 14:01:00.59ID:47kTF92K0299デフォルトの名無しさん
2016/01/23(土) 14:37:50.67ID:xYcOlVg1しかしftellが作られた当時は無かったかもな、詳しく知らんが
それにftellがファイルに何も書き込まなかったとしても
FILE構造体を何も書き換えないとは限らないしな
排他処理で何か書き換える実装もあり得る
ftellの実装はコンパイラ毎、環境毎に違うし
ベンダーが自分たちで用意するわけだから
いろんな環境に対応しなければならないC言語としては
安易にconstにできないな
0300デフォルトの名無しさん
2016/01/23(土) 16:09:29.81ID:EPxA/CX7void で引っ張ればどうにでも化ける。
fstream知ってからは怖いって感じはする。
0301デフォルトの名無しさん
2016/01/23(土) 16:19:37.61ID:ruaa+Fticlass Map<typename K, typename V> {};
そもそもこれが書けないC++仕様の怠慢が問題。
0302デフォルトの名無しさん
2016/01/23(土) 22:07:23.87ID:YzHFCyx5このサイトの5-2の問題、数字を漢数字に変換する問題をやってるのですが(面倒なので1〜3のみとする)
#include<iostream>
#include<string>
#include<map>
using namespace std;
int main() {
string a;
map<string, string> m;
int i;
string names[] = { "1","2","3" };
m[names[0]] = "一";
m[names[1]] = "ニ";
m[names[2]] = "三";
cout << "入力してください:"<<endl;
cin >> a;
string::iterator it = a.begin();
for (it = a.begin(); it < a.end();it++){
cout << m[*it] ;
}
//else { cout << "存在しません"; }
return 0;
}
このコードのcout<<m[*it];の部分でエラーが出てしまいます
自分の考えではiterator itを入力されたaの1文字目から最後の文字まで動かし、そのitが指す値をmapで変換しています
なぜダメなのでしょうか?
0303デフォルトの名無しさん
2016/01/23(土) 22:13:15.13ID:xc9KTHaP0304デフォルトの名無しさん
2016/01/23(土) 22:53:37.80ID:YzHFCyx5ありがとうございます。
続いてまた質問なのですが、以下のコードで1から10の乱数を10回発生させてsetにその乱数をいれてるのですが、毎回10個の乱数が同じになってしまいます
何が悪いのでしょうか?(実行すると、coutの結果として22222222222、5555555555のようになります)
#include<stdio.h>
#include <stdlib.h>
#include<time.h>
#include<iostream>
#include<set>
using namespace std;
int main() {
int a;
set<int> number;
for (int i = 0; i < 10; i++) {
srand((unsigned) time(NULL));
a= rand() % 10 + 1;
cout << a ;
number.insert(a);
}
0305デフォルトの名無しさん
2016/01/23(土) 22:54:32.40ID:Ipz3ttx/つい最近までLinuxではftellするとファイル位置がリセットされるバグがありました
つまり書き込まれてます
0306304
2016/01/23(土) 22:56:59.97ID:YzHFCyx5srandの部分をコメントアウトしたら解決しました
0307デフォルトの名無しさん
2016/01/23(土) 23:04:49.75ID:2kp06Cdrsrandはプログラム中1回でいい
0308デフォルトの名無しさん
2016/01/24(日) 00:56:19.17ID:fkWZRTEw今度は「毎回同じ乱数の並びになります」とか言わないのか?
>>307
日本語が不自由な馬鹿は引っ込め
0309デフォルトの名無しさん
2016/01/24(日) 01:30:42.36ID:0rZjknv20310デフォルトの名無しさん
2016/01/24(日) 01:39:13.09ID:WyN3o1JX>>307が理解できないお前が不自由なんだろw
0311デフォルトの名無しさん
2016/01/24(日) 05:48:23.27ID:S0J2srO3>>309 の関連で rand() % 10 で0〜9の乱数を出すのも疑義あり。
ところで >>304 の症状の報告も完全ではないね。
何度もやってるうちには 4444222222 みたいな、
前半と後半で値が違うっていうパターンも生じるはず。
現代の機械だとかなり稀なタイミングだろうけど。
0312デフォルトの名無しさん
2016/01/24(日) 08:51:16.26ID:fkWZRTEwお前はいつも日本語が不自由だな
ここは「1回でよい」じゃなく「毎回呼んではだめ」なことを教えてやらんといかんのだ
ついでに消してしまって0回になってしまったのに「1回でよい」は日本語がおかしい
0313デフォルトの名無しさん
2016/01/24(日) 09:19:44.06ID:OknlX178stdlib.h使うな、setはおかしい
とか文句言いそうだな
0314デフォルトの名無しさん
2016/01/24(日) 09:33:13.94ID:bw3MWu8tそう言うバグがもっと早く見つかったじゃね?
0315デフォルトの名無しさん
2016/01/24(日) 10:07:36.64ID:fkWZRTEw「ファイル位置を保持する変数を誤って書き換えてしまった事実からFILEの内容を書き換える何らかの必要性が有ったのだろう」
という意見に対し
「FILE全体がconstになっていればファイル位置の変数の書き換えをコンパイルエラーに出来たはず」
という思考はちょっとずれている
0316デフォルトの名無しさん
2016/01/24(日) 10:49:11.35ID:Aj6v4F1zsystem関数で
rm -r "*"
など実行すると出来ると思うのですが、パスを間違えると全部消してしまいそうで
怖いのですがどうすればよいでしょうか?
0317デフォルトの名無しさん
2016/01/24(日) 10:54:20.90ID:bw3MWu8t> 「ファイル位置を保持する変数を誤って書き換えてしまった事実からFILEの内容を書き換える何らかの必要性が有ったのだろう」
> という意見に対し
はあ?
恥の上塗りでもしに来たのか? w
0318デフォルトの名無しさん
2016/01/24(日) 10:57:22.78ID:ETeqPEGX気をつけろ
0319デフォルトの名無しさん
2016/01/24(日) 12:20:43.25ID:Aj6v4F1zそれ以外に良い対策はありますか?
0320デフォルトの名無しさん
2016/01/24(日) 12:32:46.58ID:lehWL+vOリソースなら予め登録されたファイルパス以下にあるファイル名以外消せないようにチェックするとか
0321片山博文MZ ◆T6xkBnTXz7B0
2016/01/24(日) 12:40:56.45ID:30PPh5ie0322デフォルトの名無しさん
2016/01/24(日) 12:50:28.16ID:LHp2Xjej0323デフォルトの名無しさん
2016/01/24(日) 17:42:47.61ID:cIbjxOLA|ofs.close();
|C言語に慣れていると、open と close が対応付いていないことに違和感を感じるかも知れませんが、 |
|C++ の世界では、自動的に行われるのならば、余計な手を出さずに任せてしまうべきです。
fstream の場合、close()しない方がいんですかねぇ
0324デフォルトの名無しさん
2016/01/24(日) 18:09:23.58ID:7qZdBJlKエラーを無視して良いのであればデストラクタ任せで良いけど
そうでなければ自分でcloseする
0325デフォルトの名無しさん
2016/01/24(日) 19:46:16.98ID:sP2ua92Hパスを明示して毎回ユーザに承認を求める
現実的には、そのアプリ専用の作業ディレクトリを作りそこだけを消す
何らかの間接指定で可変ならば、親ディレクトリへの相対パスがあればはじく
ちなみに通常ディレクトリごとに適切に権限設定されてれば万一の時の被害も少ない
0326デフォルトの名無しさん
2016/01/24(日) 20:36:40.08ID:WyN3o1JXいつもってお前は俺をどれと同一人物視してるんだw
都合が悪いレスは全て同一人物とか頭おかしいだろw
元々ループ内で呼んでたからの突っ込みなんだが
お前はそれすら理解できなかったようだな
0327デフォルトの名無しさん
2016/01/24(日) 20:56:23.40ID:BROMbZ7/なぜこんな事をしたいかというと、元々constで初期化で宣言したかったのに、
�@初期化のためには資源の調達が必要であり
�A初期化が済み次第すぐさま資源の解放をしたい
この場合、
SomeObj o;
{
資源確保;
o = 資源による処理;
}// ここで資源は解放される。
以降、oを用いた処理。
となるでしょう。そうなると、最初のoの宣言は、当然直後に代入があるので、constにできません。しかし事実上の初期化が済んだら、もうoはconstにしたいのです。
0328デフォルトの名無しさん
2016/01/24(日) 21:03:56.70ID:50ZcCt7z「以降」の処理を const& を受け取る関数に移して、そこに渡す。
あるいは初期化済みの SomeObj を返す関数を作る。
しかし資源の確保となると根本的には SomeObj の責務(コンストラクタの処理など)に移したいところ。
0329デフォルトの名無しさん
2016/01/24(日) 21:18:25.81ID:fkWZRTEw>>328の対処が取れないときは
http://ideone.com/pekqNE
0330デフォルトの名無しさん
2016/01/24(日) 22:13:23.33ID:0dMHn0uaF#?
0331デフォルトの名無しさん
2016/01/24(日) 22:19:03.60ID:WyN3o1JX0332デフォルトの名無しさん
2016/01/24(日) 22:20:15.90ID:eLuVQ3YFスレタイ読み直せ低能ども
0333デフォルトの名無しさん
2016/01/24(日) 22:21:45.85ID:WyN3o1JXブーメラン
0334デフォルトの名無しさん
2016/01/24(日) 23:03:43.91ID:cIbjxOLAもう使用しないとわかった時点でフォーカス外れる前に自分でcloseした方がお作法ですよね。
なかなかC脳から抜けられない。
0335デフォルトの名無しさん
2016/01/24(日) 23:21:22.85ID:B3HWqMcaデストラクタでのクローズが失敗したらどうなるの?
0336327
2016/01/25(月) 02:02:52.33ID:8FNbwGHhconst auto o { [&...]()->SomeObj
{
資源確保;
資源から必要な情報をまとめる;
return SomeObj {情報};
}()// ここで資源は解放される。
};
以降、oを用いた処理。
0337プログラム初めてやってます
2016/01/27(水) 19:48:26.87ID:GcWX3DUV負の値の整数値をscanfで読み込んで、
絶対値を求めるプログラムを書きたいのですが
今の所わかってる知識としてはprintfでの簡単な計算と、簡単なif文のみです
課題としては、printf、putsとif文
今までに習った関数を用いてやれと言う事だと思うんですが
どう考えてもわからなかったため、どうか質問させてください
0338デフォルトの名無しさん
2016/01/27(水) 19:58:02.06ID:0xRCKJUw0339デフォルトの名無しさん
2016/01/27(水) 20:04:03.17ID:Fmvz75rf0340デフォルトの名無しさん
2016/01/27(水) 20:10:22.92ID:j65DqSaHそれ以上に簡単な入力手段がないからだろ
0341デフォルトの名無しさん
2016/01/27(水) 20:12:44.23ID:1VQKsEBj0342デフォルトの名無しさん
2016/01/27(水) 20:24:33.23ID:ghSXEhkjhttps://ideone.com/Kn3dfH
0343デフォルトの名無しさん
2016/01/27(水) 20:43:01.06ID:H/VHXeqjprintf("hello, world\n"); なら大丈夫だけど、
printf("all 50%discount today\n"); だともう怪しい。
>>339 の言う通りだわ。
0344デフォルトの名無しさん
2016/01/27(水) 21:34:21.69ID:tY0EzgE5問題はそんなものを初学者に学ばせること。初学者がそんな重要な部分の開発をするわけがないのだから
0345デフォルトの名無しさん
2016/01/27(水) 23:06:55.48ID:eULyfEEH学んだことの応用が効いて実用性のある言語が他にあるか?
初心者が学ぶのに妥当だと思うが
0346デフォルトの名無しさん
2016/01/27(水) 23:09:52.37ID:3jiwec3B0347デフォルトの名無しさん
2016/01/27(水) 23:23:38.65ID:13Hm1XjY一人では全く何もできないコンピュータに1から仕事を教える物でもある。
だが、ラクしてjavaやperlに走る人とは付き合いにくい。
0348デフォルトの名無しさん
2016/01/27(水) 23:29:27.89ID:4Ckw423u電卓として使う程度ならどの言語だって大して変わらんし
0349デフォルトの名無しさん
2016/01/27(水) 23:37:38.39ID:1VQKsEBj学習の重点となっているところが、入力後から出力前に集約できてれば良いんだが…
0350デフォルトの名無しさん
2016/01/27(水) 23:38:02.86ID:LZEmbO/H大学の講座とかで教えるならCを超える言語あるかな?
Javaとか?
0351デフォルトの名無しさん
2016/01/27(水) 23:44:41.36ID:4Ckw423u工学系で高級なアセンブリとして使うならC
0352デフォルトの名無しさん
2016/01/27(水) 23:50:57.65ID:eULyfEEHボクシングとかアンボクシングとかどうやって教えればよいのか頭が痛いだろう
C++なんかもってのほかだしさ
>CPUを覚えるのと大差無いから基本であるが難しい
CPUに詳しくなって悪いことは無いよね、どんな言語にも応用が利くし
Cはいろんな言語のベースになっているからCを覚えると他の言語に展開しやすい
言語仕様も必要最小限でかつ、ぎりぎり実用可能なレベルで玩具というわけでもない
これがRubyとかなら、matzの実装について詳しくなる必要があるわけだが
こんなものを学んだところで有り難くない
0353デフォルトの名無しさん
2016/01/28(木) 05:14:25.23ID:a6m1UVUKポインタの理解あたりが容易になるのは間違いないね。
ただし、特定のCPUに詳しくなりすぎると
慣用表現から外れた独特な書き方を始める弊害もあったり。
・C慣用
for (i = 0; i < 10; i++)
・C++慣用
for (i = 0; i != 10; ++i)
・あるCPUのアセンブラ経験者
for (i = 10; i != 0; --i)
どのループも10回の繰り返しのはずだが、
今となっては3番目は本当に10回か自信がないわ。
0354デフォルトの名無しさん
2016/01/28(木) 05:52:39.11ID:OteWNMPZfor (i {0}; i < 10; ++i)
0355デフォルトの名無しさん
2016/01/28(木) 06:04:06.09ID:xn/xn1Lr出直してこい
0356デフォルトの名無しさん
2016/01/28(木) 06:35:33.04ID:OteWNMPZ0357デフォルトの名無しさん
2016/01/28(木) 06:51:25.56ID:87VXcHuk> ボクシングとかアンボクシングとかどうやって教えればよいのか頭が痛いだろう
そんな特殊な機能は必要になった時に教えればいいだけだろ
バカなのか?
0358プログラム初めてやってます
2016/01/28(木) 07:10:42.59ID:v1B3KP04342さんありがとうございました!
書き込んでから自分でも考えてみていて、
こんな感じになってました
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
/* 読み込んだ整数値の符号を判定 */
int main(void){
int a;
printf("整数を入力してください:");
scanf("%d", &a);
if (a < 0)
a = -a;
printf("絶対値は%dです");
return 0;
}
342さんのコーディングすごいですね!
参考になりました ありがとうございました!
0359プログラム初めてやってます
2016/01/28(木) 07:11:49.38ID:v1B3KP040360デフォルトの名無しさん
2016/01/28(木) 12:31:44.00ID:a9w0Gglx参考書なりネットなりで一人で勉強するもんだ
基礎から教えて貰わなきゃ理解出来ない時点でプログラマーに向いてない
0361デフォルトの名無しさん
2016/01/28(木) 12:36:59.20ID:mW8CPdakでも応用効かないのは向いてないと思う
0362デフォルトの名無しさん
2016/01/28(木) 12:43:58.60ID:U7RHxiIqそうでないならCからとか論外
0363デフォルトの名無しさん
2016/01/28(木) 12:51:39.77ID:a9w0Gglx一人で考えても分からない所を聞くのは別にいいと思うが、
授業とかで教えて貰うまで参考書があるのに手も付けない奴は向いてないと言いたかった
0364デフォルトの名無しさん
2016/01/28(木) 13:04:08.57ID:mW8CPdak仕事にするんじゃなきゃ関係ないか
0365デフォルトの名無しさん
2016/01/28(木) 15:21:07.00ID:hWNVXd5g面倒くさがりでズボラな人が怠惰を求めて勤勉に行き着く過程が王道では
だから教育としてはいかにそれが面倒くさいか、いかにそれをやらずに済ませるかを強調していく
0366デフォルトの名無しさん
2016/01/28(木) 16:30:44.07ID:CWsUf0Ic0367デフォルトの名無しさん
2016/01/28(木) 22:38:32.61ID:to2yFDLL他のどの言語から教えたほうが良いと思っているのか書くべきだよね
0368デフォルトの名無しさん
2016/01/29(金) 03:01:29.22ID:bzmjGvNe向いていないというか興味が無いんだと思う
必須授業とかで無理やりやらされてる感じ
>>365
一度作ってしまえば後は利用して効率が上がるからなw
ずっと面倒か作る間だけ面倒で後楽かを選ぶだけで
>>367
ただ批判するだけじゃ誰でもできるからな
0369デフォルトの名無しさん
2016/01/29(金) 09:02:47.15ID:x/sxD8MECは頭が良くても10分じゃ覚えきらん。仕様書からしてSchemeの10倍近く分厚いからな。2時間は掛かるんじゃねぇか?
0370デフォルトの名無しさん
2016/01/29(金) 09:49:39.15ID:qombZsi/仕様書の厚さに比例するっていう観点は公平だと思うよ
0371デフォルトの名無しさん
2016/01/29(金) 10:14:08.59ID:x/sxD8ME仕様書が分厚いからCを教えるのが論外だとするのなら、
手続き型系の言語で教えるのに適した言語はPASCALかLuaあたりになると思う。
Lua良いよLua。PASCALもね。
0372デフォルトの名無しさん
2016/01/29(金) 13:26:54.55ID:cTI0Jdzp後はリファレンスさえあれば、一生忘れる事はないと思うけどなぁ。
C++はもう底なしでw でもそれが楽しいのですが。
0373デフォルトの名無しさん
2016/01/29(金) 15:52:03.82ID:9SCZR58b入門に最も適した言語なんてのは幻想だと思う
0374デフォルトの名無しさん
2016/01/29(金) 17:58:02.16ID:cTI0Jdzp0375デフォルトの名無しさん
2016/01/29(金) 18:08:01.54ID:BAJfHtoc0376デフォルトの名無しさん
2016/01/29(金) 18:47:15.34ID:i41mJkcJ専門じゃなくて国立だけど。
0377デフォルトの名無しさん
2016/01/29(金) 19:53:42.72ID:XYL4UGBKPascal教えられていたときは激しくモチベが下がった
2年目にCになって無茶苦茶うれしかったよ
だって、Pascalは現場で使われてない言語だったから
何処でも使われてない言語を覚える苦痛と言ったらね
breakが有るくせにreturnが無いあたりも最悪だった
returnが無いから、どうにもこうにも関数の最後までいかないと
関数を抜けれないんだよ!
当然フラグだらけになるし、マジ鬼畜言語だと思った
その点Cは未だに世界中で使われている言語なわけで
だったら覚えてみようってなるし、モチベが上がるってものよ
0378デフォルトの名無しさん
2016/01/29(金) 20:07:57.52ID:cTI0JdzpDelphiとか評判良かったんだけどねぇ。
0379デフォルトの名無しさん
2016/01/29(金) 20:57:35.02ID:6a9kiPQ9式文とdo-while文にセミコロンを含むか、
各文の間は必ずセミコロンで区切るかの差であって、
どちらも一貫してるよ
0380デフォルトの名無しさん
2016/01/29(金) 21:36:27.47ID:KHfAKsC30381デフォルトの名無しさん
2016/01/29(金) 21:56:42.92ID:XYL4UGBK0382デフォルトの名無しさん
2016/01/29(金) 22:13:16.22ID:V57FZVNV0383デフォルトの名無しさん
2016/01/30(土) 03:16:59.92ID:d4C/IYFO0384デフォルトの名無しさん
2016/01/30(土) 12:04:09.34ID:qiIX3neU0385片山博文MZ ◆T6xkBnTXz7B0
2016/01/31(日) 18:52:32.63ID:KGvneECtC++のstd::stringは長さを記録しているから、ヌル文字が
途中に来ても大丈夫!
ということはstd::stringはバイナリデータも扱えるんだ! 大発見だね!
0386デフォルトの名無しさん
2016/01/31(日) 18:56:36.30ID:umKDphm10387デフォルトの名無しさん
2016/01/31(日) 21:04:07.72ID:kn/5LVuq単にC++11以前は連続した領域に確保されることが保証されてなかったからバイナリデータ置き場として使われてなかっただけ
0388デフォルトの名無しさん
2016/01/31(日) 21:13:17.94ID:JH58iwLT話を理解できない>>387はもっと哀れ
0389デフォルトの名無しさん
2016/01/31(日) 23:23:19.06ID:0VTupv6x0390デフォルトの名無しさん
2016/02/01(月) 00:16:08.05ID:Jc+yiccsハハッ
0391デフォルトの名無しさん
2016/02/01(月) 01:45:26.45ID:k88EDqNX0392デフォルトの名無しさん
2016/02/01(月) 04:58:19.06ID:wHu9vKIt>>386
0393デフォルトの名無しさん
2016/02/01(月) 17:08:19.81ID:Ev74Df4F生きてて辛いだろうな
0394デフォルトの名無しさん
2016/02/01(月) 19:06:25.95ID:aUqGS129スゲーいいこと書いたつもりなんだろうなぁ w
0395デフォルトの名無しさん
2016/02/01(月) 21:07:47.33ID:cp5cboQs0396デフォルトの名無しさん
2016/02/02(火) 11:36:29.11ID:NTv/QStdまじ?
連続性保証されてると思ってたわ。
vectorは03で規格化されてたよね?
stringはされてなかったのか。
ま、いっか。
0397デフォルトの名無しさん
2016/02/02(火) 22:25:20.39ID:+WV++cRd実数を2つ入力させて大小比較させるプログラム
http://codepad.org/JYV0bpuL
0398デフォルトの名無しさん
2016/02/02(火) 22:29:57.47ID:7f7wf/mW0399デフォルトの名無しさん
2016/02/02(火) 22:34:55.10ID:7f7wf/mW同じ環境で、同じ入力文字列から読み取った二つの浮動小数点数型数が厳密に一致するって仕様で決まってたっけ?
つまり、入力として
0.1 0.1
って入れた時に、scanf("%lf%lf", &a, &b);なりなんなりした後のa == bの値って処理系依存だっけ?
0400デフォルトの名無しさん
2016/02/02(火) 22:58:44.04ID:+WV++cRd通りました。ありがとうございます。
けど、最後のはifがなくてはならないのでしょうか。
ストラウストラップ自身のテキストに、最後はelseとなっているのですが。
0401デフォルトの名無しさん
2016/02/02(火) 23:00:44.47ID:7f7wf/mWストラなんちゃらってのは知らんけど
(a == b)が付くなら文法上ifが必要。
ifを省くなら括弧も省け。
0402デフォルトの名無しさん
2016/02/02(火) 23:05:17.62ID:+WV++cRd実際のところ、
「2つの数字の差が1.0/10000000未満である場合に、どちらが大きくてどちらが小さいかを
書き出した後、the numbers are almost equalと書き出すようにプログラムを変更する」
という問題で、これより前にint型をdoubleに変更しろという問題もあって、
a == b はここでは必要ないかもしれないです。
0403デフォルトの名無しさん
2016/02/02(火) 23:07:14.24ID:+WV++cRdあ。たしかに最後は条件式書いてないです。ありがとうございます!
>>ストラ
C++の設計者です。
0404デフォルトの名無しさん
2016/02/02(火) 23:11:00.17ID:7f7wf/mW誰かと思ったらB. Stroustrupさんか。
カタカナって難しい
0405デフォルトの名無しさん
2016/02/02(火) 23:13:08.88ID:RveVHAYz最近の老衰っぷりを見るとかなり頭がヤバそうだが
0406デフォルトの名無しさん
2016/02/02(火) 23:18:37.12ID:+WV++cRd細かいエラーは最後の「小数が入力されてない」で一括りなんです。
入門書なんで。
0407デフォルトの名無しさん
2016/02/02(火) 23:20:19.55ID:7f7wf/mW多分そういうことじゃないと思う。
0408デフォルトの名無しさん
2016/02/03(水) 08:53:05.13ID:6UPbxu8zその入力の結果
memcmp(&a, &b, sizeof a) で 0 は保障して欲しいところだな
処理系依存だとなんかキモイ
0409デフォルトの名無しさん
2016/02/03(水) 10:15:51.45ID:JXLYa8UB0.1 == 0.1
atod("0.1") == atod("0.1")
atod("0.1") == 0.1
ぜんぶ成立してほしい
誰か規格を解読して
0410プログラム初めてやってます
2016/02/03(水) 10:19:42.77ID:lWEagrs5皆さんにお礼も言わずに去ってしまったなと思っていたのですが、
その後、高度な(に私は見えました)話題が続いていたので水を差してはいけないと思って
どうしてもわからない事が出てきてしまって、また来てしまいました。
【二つの整数値を読み込んで、小さい方の数以上で大きい方の数以下の
全整数を加えた値を表示するプログラムを作りなさい 】
という課題なのですが
インクリメント記述、全整数表示まではうまくいったのですが、
この後の合計値がどうしても出せません
ご助力お願い致します。
ここまでできたのですが…
https://ideone.com/THBj7S
多分恥ずかしいコーディングだと思います…
0411プログラム初めてやってます
2016/02/03(水) 10:21:57.21ID:lWEagrs52つの整数を入力し a以上b以下の全整数の和を求めなさいとの事でした
0412デフォルトの名無しさん
2016/02/03(水) 10:23:18.63ID:Gb259GwXfor (i = min; i <= max; i++) {sum += i;}
0413プログラム初めてやってます
2016/02/03(水) 10:24:14.98ID:lWEagrs5でも、for文はまだ出てきてなくて、for文を使わずにと言う事でした
0414デフォルトの名無しさん
2016/02/03(水) 10:36:23.49ID:JzoFZA2F0415デフォルトの名無しさん
2016/02/03(水) 10:37:46.94ID:JXLYa8UBたとえば、1から1000の合計の計算式知ってれば、それを使う
0416プログラム初めてやってます
2016/02/03(水) 10:40:20.13ID:lWEagrs5一応ある本の課題を見ています
今までに習ったのは簡単なprintfでの計算とif文do文なのですが
0417デフォルトの名無しさん
2016/02/03(水) 10:46:44.73ID:XI3wSbIfatodと言うものが何物かは知らんが保証は無いんじゃね
ISO/IEC 9899:2011 5.2.4.2.4p6
The accuracy of the floating-point operations (+, -, *, /) and of the library functions in <math.h> and <complex.h> that return floating-point results is implementationdefined,
as is the accuracy of the conversion between floating-point internal representations and string representations performed by the library functions in <stdio.h>, <stdlib.h>, and <wchar.h>.
0418デフォルトの名無しさん
2016/02/03(水) 10:48:09.46ID:XI3wSbIf5.2.4.2.4
正
5.2.4.2.2 Characteristics of floating types
0419デフォルトの名無しさん
2016/02/03(水) 10:51:30.15ID:O/9tVwNcmin = 5, max = 10, sum = 45て事なら
sum = ((min + max) * (max - min + 1)) / 2;
じゃあかんの?
0420デフォルトの名無しさん
2016/02/03(水) 10:53:19.38ID:Gb259GwXforはwhileやdoを使って書き直せる。
for (A; B; C) D;
A; while (B) {D; C;}
A; do {if (B) {D; C;}} while (B);
0421プログラム初めてやってます
2016/02/03(水) 10:55:10.44ID:lWEagrs5416さんありがとうございます!できました!
皆さんもいろいろありがとうございました!
0422プログラム初めてやってます
2016/02/03(水) 10:56:18.48ID:lWEagrs5>>416さんもありがとうございました!
0423プログラム初めてやってます
2016/02/03(水) 10:58:29.06ID:lWEagrs50424デフォルトの名無しさん
2016/02/03(水) 11:02:27.43ID:JXLYa8UB正確性については実装依存だけど、毎回の同一性まではここでは触れてないね
0425デフォルトの名無しさん
2016/02/03(水) 12:55:54.71ID:R1lQnZw2int main() {
printf("hello, world\n");
return 0;
}
g++ (GCC) 4.8.2 を使っているんだが、上のソースがエラーなくコンパイルできる。
しかし printf() は std::printf() と書くべきじゃないかと思うんだ。
あるいは using で省略表記を明示するか。
この書き方でエラーにならないのはC++の規格通りなのか、
あるいはGCC独特の動作なのか教えてほしい。
またGCC独自だとしたら、コンパイル時にエラーとするオプションを知りたい。
(以前は -fhonor-std というオプションが使えたらしいが廃止されたみたい)
0426デフォルトの名無しさん
2016/02/03(水) 14:52:41.84ID:1RubKd280427デフォルトの名無しさん
2016/02/03(水) 14:54:41.83ID:XI3wSbIfアンビバレンツなものであると錯覚していた?
0428デフォルトの名無しさん
2016/02/03(水) 15:53:30.47ID:hvk9CpKQ0429デフォルトの名無しさん
2016/02/03(水) 16:41:54.73ID:uEOUJl1KCのコードからC++を呼ぶことはない
それに C/C++どちらも呼び出し規約が1種類ではないから
一部の関数はそういう指定がある
0430デフォルトの名無しさん
2016/02/03(水) 16:47:26.68ID:XI3wSbIf>Cは外部リンゲージでexternをつけるのにC++はつけない
>CのコードからC++を呼ぶことはない
お前等の個人的なスタイルがさも普遍的であるかのように語られても
0431デフォルトの名無しさん
2016/02/03(水) 16:54:04.33ID:1RubKd28外の変数を使う時はexternが必要ってことで。
0432デフォルトの名無しさん
2016/02/03(水) 16:56:12.19ID:I+U+ZaiGC++の規格通りっぽい
cstdioとかはシンボルをグローバルにしてもいいししなくてもいいらしい
0433デフォルトの名無しさん
2016/02/03(水) 17:00:58.37ID:XI3wSbIfへー、規格のどこにそんなことが
0434デフォルトの名無しさん
2016/02/03(水) 17:06:35.02ID:I+U+ZaiGhttp://stackoverflow.com/questions/10460250/cstdio-stdio-h-namespace
ここで引用されてた
Annex D (normative) Compatibility features [depr] states:
0435デフォルトの名無しさん
2016/02/03(水) 17:13:24.24ID:j8SYABEm0436デフォルトの名無しさん
2016/02/03(水) 17:19:43.24ID:XI3wSbIfそこに書いてあるのは「グローバル名前空間にも提供するかも知れない」なのだが
「cstdioとかはシンボルをグローバルにしてもいい」というのはどこから来たのか
0437デフォルトの名無しさん
2016/02/03(水) 17:22:04.36ID:I+U+ZaiG間違ってたかな
0438デフォルトの名無しさん
2016/02/03(水) 17:31:35.42ID:2Q1iapWx太字のここでしょ?
Every C header, each of which has a name of the form name.h,
behaves as if each name placed in the standard library namespace by
the corresponding cname header is placed within the global
namespace scope.
どこに「かも知れない」とかあるの?
behavesって断定してるんじゃない?
0439デフォルトの名無しさん
2016/02/03(水) 17:33:45.85ID:6UPbxu8z0440デフォルトの名無しさん
2016/02/03(水) 17:35:11.06ID:XI3wSbIfstd::でアクセスできることが義務づけられているかどうかが違う
>>438
それは>>425とは関係ないstdio.hの記述
その下の
It may also provide
ではないのか
0441デフォルトの名無しさん
2016/02/03(水) 17:41:25.46ID:1RubKd28c* → global空間とstd空間で定義
って事ですかい。
0442デフォルトの名無しさん
2016/02/03(水) 17:52:45.70ID:R1lQnZw2確かに cstdio は シンボルをstd名前空間に入れて
グローバル名前空間にも入れる「かもしれない」、と読めるね。
#include <cstdio> でstd修飾なしの printf() が使えるのは
規格通りでもあり、GCCがその挙動を選んだ、ということか。
しかしながら、グローバル名前空間に入れない環境もありうるし、
それで >>425 のコードがエラーになっても、これまた規格通りか。
うっかり std:: を書き忘れる癖があるので、
コンパイラがチェックしてくれると助かると思ったのだけれど。
>> ID:XI3wSbIf の人
有用が情報がなく挑発的なだけの投稿ばかりだね。
だからどうこうってわけじゃないよ。単なる感想として。
0443425 == 442
2016/02/03(水) 20:13:16.38ID:R1lQnZw2Including cstdio imports the symbol names in std namespace and possibly in Global namespace.
Including stdio.h imports the symbol names in Global namespace and possibly in std namespace.
cstdio をインクルードするとシンボルはstd名前空間に入る(必ず)。
グローバル名前空間にも入るかもしれない(入らないかもしれない)。
stdio.h をインクルードするとシンボルはグローバル名前空間に入る(必ず)。
std名前空間にも入るかもしれない(入らないかもしれない)。
だと思われる。
0444デフォルトの名無しさん
2016/02/03(水) 20:19:16.88ID:pejUVpHJ0445デフォルトの名無しさん
2016/02/03(水) 21:13:49.98ID:1RubKd28Cシンボルは鬼っ子で色々議論したけどこうなった。
って事なんだろな [Stroustrup2013] に書いてあるかな?
簡単な事だけど、かなり根が深いのかも。
実際は c関数を使う場合は 衝突回避のため、独自の名前空間の中で使用する事になるだろうから
問題ないのかも
namespace MyUtil{
auto aaa=strlen("wahaha");
}
みたいな。
0446デフォルトの名無しさん
2016/02/03(水) 22:55:02.36ID:XI3wSbIfG++が::absのバグを十数年間放置したぐらいには根が深いだろう
0447445
2016/02/04(木) 01:51:05.67ID:ZGjCmtZ80448デフォルトの名無しさん
2016/02/04(木) 19:27:08.85ID:6dQTBxjx0449デフォルトの名無しさん
2016/02/04(木) 20:07:26.52ID:ZGjCmtZ80450デフォルトの名無しさん
2016/02/04(木) 20:15:30.56ID:M5WeNgYcむしろ今までなんでこれが書けなかったのか、設計者に問い詰めたい。
0451デフォルトの名無しさん
2016/02/04(木) 20:51:10.15ID:cr9CcGXP0452プログラム初めてやってます
2016/02/05(金) 08:05:08.38ID:0uefFKkYなんで??そうなるんです???
Qとかって人じゃないですし…
毎日ここ見てられませんよ;
自力で勉強しないと失礼だって思ったのになんでそんな事言う人いるんです?
もう来ない方がいいのでしょうか Qさんが誰かわかりませんが…
0453デフォルトの名無しさん
2016/02/05(金) 08:05:39.03ID:0uefFKkY0454デフォルトの名無しさん
2016/02/05(金) 09:12:32.23ID:40iMBEwgID:0ue... が Que のパチモン臭く見えるのが素敵。
0455デフォルトの名無しさん
2016/02/05(金) 19:48:30.40ID:7eaUpuXVその通りだ
去れ
0456デフォルトの名無しさん
2016/02/10(水) 17:04:42.31ID:nNZFJpwwC++のラムダとCのブロックどちらを使うべきだろうか。
0457デフォルトの名無しさん
2016/02/10(水) 17:17:22.70ID:9hAEzh2Z0458デフォルトの名無しさん
2016/02/10(水) 18:22:47.43ID:VRPmATP2ラムダとブロックは対比するものではないし
CからC++への移行の手段でもない
0459デフォルトの名無しさん
2016/02/10(水) 23:43:46.75ID:EbqYVSknブロック内でリソースを確保しておけば、ブロックを抜けるときに自動的に解放されるのでこの意図を達成できます。
int i;
{
なにかリソースを確保したり、いっぱい一時変数を使ってこれからiの値を決める;
i = 求めた値;
}//用済みなった変数はここで即解放される
C++ではこのアナロジーとしてλ式を当てはめられます。
const auto i { [&...]()
->int{
何かのリソースを確保したり、いっぱい一時変数を使ってこれからiの値を決める
return 求めた値;
}()
}
これで定数を初期化でき、且つ、初期化時に用いた一時記憶域は即解放できることになります。
0460デフォルトの名無しさん
2016/02/10(水) 23:57:21.06ID:+sMp0qjD0461デフォルトの名無しさん
2016/02/10(水) 23:59:35.45ID:lc1dGjcs0462デフォルトの名無しさん
2016/02/11(木) 00:50:30.55ID:ECJX98k8C言語でクロージャーを実現するための機能なんだが、そういえばまだ標準になってなかったな。
0463デフォルトの名無しさん
2016/02/11(木) 03:25:55.80ID:vUnRYzap0464デフォルトの名無しさん
2016/02/11(木) 12:22:58.36ID:qM+VfxEi0465デフォルトの名無しさん
2016/02/11(木) 13:15:50.37ID:5TnQ2D6C0466デフォルトの名無しさん
2016/02/11(木) 15:26:10.43ID:Ijn2TjOB何を? 初期化に使用した資源?
後で使うならそれは使用済みではないということなので解放しちゃダメだから、ブロックの外のスコープで宣言するしかないのでは?
0467デフォルトの名無しさん
2016/02/11(木) 15:26:52.10ID:Ijn2TjOB○用済み
0468デフォルトの名無しさん
2016/02/11(木) 15:34:20.94ID:5TnQ2D6Creturnが仮に10なら
const auto i { [&...]()
->int{
何かのリソースを確保したり、いっぱい一時変数を使ってこれからiの値を決める
return 求めた値;
}()
}
int a;
a = i;でaに10が入る?
0469デフォルトの名無しさん
2016/02/11(木) 17:44:59.48ID:R5nKPKgbconst auto &&i = [&]()->int{ return 10; }();
と書かないのは何故?
0470デフォルトの名無しさん
2016/02/11(木) 18:03:43.29ID:rWlIZ3EB0471デフォルトの名無しさん
2016/02/11(木) 18:16:52.89ID:R5nKPKgbconst auto &&i = []()->int
{
return 0;
}();
好みの問題であるけどね
0472デフォルトの名無しさん
2016/02/11(木) 18:28:52.25ID:9LpCQunf何故入らないと思うのか
>>469
C++11から初期化は{}で囲むことがお行儀良いとされる。良い癖をつけよう。= {初期化値}も可。
0473デフォルトの名無しさん
2016/02/11(木) 20:04:31.18ID:9LpCQunfint i = 10;
これからは
int i {10}, j {1}, k {0};
の時代だ。jやkの位置が改行されたりタブで距離を取っていてもこれなら一目瞭然だ
0474デフォルトの名無しさん
2016/02/11(木) 20:45:28.76ID:rWlIZ3EBへー、ではなぜC++14のmake_uniqueには{}の初期化が使われていないのですか
0475デフォルトの名無しさん
2016/02/11(木) 22:38:27.35ID:h5Y5qyZF0476デフォルトの名無しさん
2016/02/11(木) 23:39:53.97ID:rWlIZ3EBスコットメイヤーの本に別の理由が書かれていたのですが騙されていたのですね
0477デフォルトの名無しさん
2016/02/12(金) 00:00:23.89ID:VRvtWrj20478デフォルトの名無しさん
2016/02/12(金) 08:24:28.26ID:pW7dPptSアスペか
0479デフォルトの名無しさん
2016/02/12(金) 13:18:35.65ID:3nWopzdP0480デフォルトの名無しさん
2016/02/12(金) 14:18:31.86ID:tZNW1Sh60481デフォルトの名無しさん
2016/02/15(月) 19:28:14.77ID:qDxZgP2m良作ドラマやったな
0482デフォルトの名無しさん
2016/02/16(火) 01:32:33.39ID:iqNNo75YこれがMSVC2015だとエラーになるのなんでなん?
回避方法知ってる人いる?
0483デフォルトの名無しさん
2016/02/16(火) 07:15:41.19ID:wJ7D3Nu/俺の環境では通った
0484デフォルトの名無しさん
2016/02/16(火) 08:11:34.25ID:nCCZDf8c0485デフォルトの名無しさん
2016/02/16(火) 14:37:40.64ID:WNE9IDAH0486デフォルトの名無しさん
2016/02/16(火) 17:38:29.31ID:nE46Ot5uvoid append(T o) { vector.push_back(o); }
void append(const T& o) { vector.push_back(o); }
boostのコードで値渡しの方法を見かけたのですが、
(http://www.boost.org/doc/libs/1_60_0/boost/assign/std/vector.hpp)
push_back内で行われるコピーを考えると二重のコピーになってしまう気がします。
参照を使わない方法にはなにか意図的な物があるのでしょうか。
またはC++では値渡しが基本ということなのでしょうか。
0487デフォルトの名無しさん
2016/02/16(火) 17:43:40.27ID:3V9H/1fh0488デフォルトの名無しさん
2016/02/16(火) 22:16:20.17ID:eGMzofhZtype_traitsヘッダを明示的にincludeしなきゃだめとかじゃないのか
0489デフォルトの名無しさん
2016/02/17(水) 00:02:13.91ID:BJJMKH5P実際のコードではincludeしてたしそうでもないなー
http://webcompiler.cloudapp.net/
ここでコンパイルすると通るけど
新規プロジェクトでWin32コンソールアプリケーション選んで同じコードコピペしてもエラーになるわ・・
俺のVisual Studio 2015 Communityがおかしいのか・・・?
0490デフォルトの名無しさん
2016/02/17(水) 00:47:09.77ID:BJJMKH5Pどうもありがとうございました。
0491デフォルトの名無しさん
2016/02/17(水) 01:24:40.77ID:1H9n+Lj4オブジェクト変更しないならconst参照でいいと思うけどなぁ
0492デフォルトの名無しさん
2016/02/17(水) 01:37:30.39ID:N1klTUFYだから安易に値渡しになってる
0493デフォルトの名無しさん
2016/02/17(水) 03:30:55.57ID:1UNcQaMiBoostに採択されるような手練れがそんな甘い設計をするのだろうか?
0494デフォルトの名無しさん
2016/02/17(水) 07:43:08.25ID:MVw4Ur3fまぁでも、call_traitsみたいなやつくらいかましてくれても良いような気がするね
forkして直すか、issueあげれば?
0495デフォルトの名無しさん
2016/02/18(木) 12:57:49.40ID:cxWjsl/xビットフィールドを切り捨てていいならforwarding-reference一択
そうでなければ値
0496デフォルトの名無しさん
2016/02/24(水) 22:51:52.03ID:VzuGlgNz_Ios_Openmodeと同じように使いたいのですが、_Ios_Openmodeのように使う演算子を全て定義するのはしんどいです
0497デフォルトの名無しさん
2016/02/25(木) 00:30:18.43ID:uN/qSY7henumなりconst intなりで定義してintで受けるでいいじゃん
0498デフォルトの名無しさん
2016/02/27(土) 09:14:46.60ID:B5OJFLka0499デフォルトの名無しさん
2016/02/27(土) 09:24:04.15ID:YM9sOpwdエディタは何使ってますか?
全角スペースを表示してくれるものを使うべき。
0500デフォルトの名無しさん
2016/02/27(土) 09:46:15.34ID:EVrRfJ4L無料ならMicrosoft Visual C++ **** Expressええよ
****は2015とか2010とか
0501デフォルトの名無しさん
2016/02/27(土) 09:53:46.81ID:EVLCSxnr0502デフォルトの名無しさん
2016/02/27(土) 10:22:01.85ID:ip4T9kfk個人で使うなら Community でいいだろ
0504デフォルトの名無しさん
2016/02/27(土) 12:35:38.21ID:kGYWxRyl0505デフォルトの名無しさん
2016/02/27(土) 19:42:06.67ID:e3iZnQnQ0506498
2016/02/27(土) 21:29:31.24ID:B5OJFLkaありがとう
ためしてみます。
>>505
コピペしてvisual studioでエラーチェックするほうが楽なような…
0507デフォルトの名無しさん
2016/02/27(土) 21:31:46.76ID:5GAk+yBj0508デフォルトの名無しさん
2016/02/27(土) 22:19:08.19ID:7YlZaAlcPICに全角スペースを送ることが無ければ sed で機械的に置換しても良さそうではあるね
0509デフォルトの名無しさん
2016/02/28(日) 13:30:58.62ID:awPHDJ6Kフォントの全角スペースを改造すればいいのか
Windowsだと欧文と日本語で違う書体を結合して使えた気がするけど
なにかツール作ったら売れるかしら
0510デフォルトの名無しさん
2016/02/28(日) 16:37:36.49ID:/QarnVVy0511デフォルトの名無しさん
2016/02/28(日) 17:46:35.50ID:y2JqqQss0512デフォルトの名無しさん
2016/02/28(日) 18:43:14.09ID:p5UOgBYD0513デフォルトの名無しさん
2016/02/28(日) 19:37:45.32ID:LskVG92e文字列リテラルの書式が複雑だから
並のテキストエディタでは無理だな
0514デフォルトの名無しさん
2016/02/29(月) 20:06:10.85ID:S6WeIjHM置換すればいいじゃんというのは後出しジャンケン
0515デフォルトの名無しさん
2016/02/29(月) 21:12:02.39ID:9U61NZXR>>505が死にたくなっちゃうだろ
0516デフォルトの名無しさん
2016/02/29(月) 21:32:37.11ID:WsXCEdmC0517デフォルトの名無しさん
2016/02/29(月) 21:42:50.19ID:lyAYNKhs0518デフォルトの名無しさん
2016/02/29(月) 23:56:37.61ID:R5/f1yHW0519デフォルトの名無しさん
2016/03/01(火) 08:32:17.13ID:DE/IoWWP0520デフォルトの名無しさん
2016/03/01(火) 16:23:22.30ID:sgxRB/xWC++11 から努めて初期化は中括弧で括るようにしてたら、vectorの初期化で何故か要素の個数がおかしい
cin >> columns;
vector<size_t> row {columns,0};
これのsize()が2となってしまう。
rowはcolumns個の0で満たされてる筈だろと怒り狂ってたが、なんのことはない。initializer_listのせいで配列の直接初期化みたいに解釈されてたってわけだwwwwwwwwwwwwwwww
vector<size_t> row(columns,0);
こう書かなきゃいけなかったって罠wwwwwwww
せめて警告だせや・・・
0521デフォルトの名無しさん
2016/03/01(火) 16:43:11.99ID:2hHFbr9O>C++11 から努めて初期化は中括弧で
この時点で間違い
0522デフォルトの名無しさん
2016/03/01(火) 17:57:47.16ID:QXg/KhC50523デフォルトの名無しさん
2016/03/01(火) 18:11:11.19ID:EJretKYd0524デフォルトの名無しさん
2016/03/01(火) 19:19:04.01ID:oKiiXTzA>>520はこの記法(type name = {};)とこんがらがってるんじゃ。
0525デフォルトの名無しさん
2016/03/01(火) 19:41:55.72ID:PHR3lkCJあの初期化方って、文書けるのかな?
やってみよ!
0526デフォルトの名無しさん
2016/03/01(火) 20:46:19.21ID:9dWygJNI0527デフォルトの名無しさん
2016/03/01(火) 23:49:31.25ID:GW+Y//Y5どうも忘れるな
0528デフォルトの名無しさん
2016/03/01(火) 23:50:46.86ID:duXxLpAEinitializer_listを取るコンストラクターを持つクラスに直接初期化の構文を使うとロクなことが無い
0529デフォルトの名無しさん
2016/03/02(水) 08:58:11.81ID:Y9OGG++l0530デフォルトの名無しさん
2016/03/02(水) 09:50:33.07ID:Bi9ZhcNYscanf はセキュリティ的に危ないからこっち使えというコンパイラの方針
0531デフォルトの名無しさん
2016/03/02(水) 09:59:31.83ID:fFa0LFn2最初に提唱したのは>>530の言うようにMSかも知れない
しかし今は規格にも取り入れられた
0532デフォルトの名無しさん
2016/03/02(水) 10:40:41.56ID:hquUwf2jロクなことが〜というより使えんだろ
0533デフォルトの名無しさん
2016/03/02(水) 11:08:38.96ID:HysrTsvI0534デフォルトの名無しさん
2016/03/02(水) 11:59:58.90ID:VauVagFGint i = 0;
int i();
int i(0);
int i = int();
int i = int(0); //←コンストラクタじゃなくてキャスト? www
int i{};
int i{0};
int i = {};
int i = {0};
まだある?
0535デフォルトの名無しさん
2016/03/02(水) 12:39:27.01ID:9ZwWQH++int i = int {0, };
int i = {{{}}};
0536デフォルトの名無しさん
2016/03/02(水) 12:56:24.00ID:yw99+KKCは関数宣言
0537デフォルトの名無しさん
2016/03/02(水) 16:05:56.86ID:VauVagFGここまで変数宣言と初期化のような初歩的な機能が
混沌としている言語はC++以外には存在していないだろうな
0538デフォルトの名無しさん
2016/03/02(水) 16:26:45.80ID:P6X03PkU0539デフォルトの名無しさん
2016/03/02(水) 21:18:48.31ID:9ZwWQH++という条件を付けると何か良いことがあるのあろうか
0540デフォルトの名無しさん
2016/03/02(水) 21:23:17.04ID:aR2d45Hi0541デフォルトの名無しさん
2016/03/03(木) 17:33:12.60ID:NgCVuGhZ私はWindowsVistaの為アップグレード対象ではありません。ヤマダ電機へ行っても
正規のWindows10は売ってますがアップグレードエディションが売ってません。
Windows10のアップグレードエディションは売ってないのですか・・?
0542デフォルトの名無しさん
2016/03/03(木) 17:57:15.74ID:7LVuWV6Jそこから10の無償アップグレード使うのはどうかな
ってここプログラム板じゃん、、、
続きがあったらWindows板で
0543デフォルトの名無しさん
2016/03/03(木) 18:14:46.52ID:94sJe93w> そこから10の無償アップグレード使うのはどうかな
無茶な 無料ならかんがえなくもないが失敗リスク高いわ
0544デフォルトの名無しさん
2016/03/03(木) 18:44:47.01ID:94sJe93w素人か
_, ,_ パーン
( ‘д‘)
⊂彡☆))Д´) >>542
0545デフォルトの名無しさん
2016/03/06(日) 10:19:43.11ID:8wRYX6K4どっちが素人なんだかw
0546デフォルトの名無しさん
2016/03/07(月) 06:07:42.46ID:LVGGCeesauto で結果的にintの変数が作られるパターンはどう?
auto i = 0; // i は(初期化値0がint数なので)int変数
0547デフォルトの名無しさん
2016/03/07(月) 07:11:06.02ID:u8+PBg0+それは
int i = 0;
と同じ
0548デフォルトの名無しさん
2016/03/07(月) 09:43:23.40ID:0FSfFoA9これは char* ? string ?
0549デフォルトの名無しさん
2016/03/07(月) 12:44:37.88ID:LVGGCees#include <string>
#include <typeinfo>
int main(void)
{
std::string s_str = "std::string";
const char *c_str = "c-style";
auto a_str = "auto variable";
std::cout << "s_str is '" << s_str << "', " << typeid(s_str).name() << '\n';
std::cout << "c_str is '" << c_str << "', " << typeid(c_str).name() << '\n';
std::cout << "a_str is '" << a_str << "', " << typeid(a_str).name() << '\n';
}
俺の環境 gcc 4.8.2 では auto だと const char * と同じになった。
まぁ、順当なところか。
auto で std::string を作りたけりゃ
ユーザ定義リテラルでも使えってことだろう。
0550549
2016/03/07(月) 13:02:50.93ID:LVGGCees0551549
2016/03/07(月) 13:12:20.25ID:LVGGCees#include <string>
#include <typeinfo>
std::string operator"" _ss(const char *s, std::size_t len)
{
return std::string(s, len);
}
int main(void)
{
std::string s_str = "std::string";
auto u_str = "user defined"_ss;
std::cout << "s_str is '" << s_str << "', " << typeid(s_str).name() << '\n';
std::cout << "u_str is '" << u_str << "', " << typeid(u_str).name() << '\n';
}
0552デフォルトの名無しさん
2016/03/07(月) 15:45:03.96ID:0FSfFoA9怒られるって事すかね。
0553デフォルトの名無しさん
2016/03/07(月) 17:43:24.21ID:SPuLNVrG0554デフォルトの名無しさん
2016/03/07(月) 19:20:45.14ID:LVGGCees標準機能の一覧を丸暗記してるわけじゃいってことも大きいけど。
0555デフォルトの名無しさん
2016/03/07(月) 21:06:24.05ID:rcA1ymXWorerator ""s を見て気づいたが、そうでもないようだ
0556デフォルトの名無しさん
2016/03/07(月) 21:46:22.54ID:Ha68PnBT0558デフォルトの名無しさん
2016/03/07(月) 21:58:53.22ID:rcA1ymXW0559デフォルトの名無しさん
2016/03/07(月) 21:59:06.92ID:Ha68PnBTありがとうございました。
さっそく調べてみます。
0560デフォルトの名無しさん
2016/03/09(水) 22:44:47.52ID:LKL6xiHNUnityでC#のコードを書いていたのですが、興味のあるOSSがC++で書かれていたためC++を勉強したくなりました
そこでAndroidの学習用アプリをやってみたものの、C#でもJavaでも一緒じゃないのかと思える演習を延々とやらされて嫌になってきました
C++11以降に対応している入門書で、かつC#やJavaとの違いが現れる程度の段階まで解説している書籍はないのでしょうか?
よろしくお願いします
0561デフォルトの名無しさん
2016/03/09(水) 23:50:40.33ID:t6r0Jvyr速習C++・リファレンス・柴田望洋など。
実際にこういう本があるかどうかは、知らないよ。
あくまでも傾向として言っただけ
0562デフォルトの名無しさん
2016/03/09(水) 23:57:12.01ID:K6L14kPg定番の丁寧さなら望洋先生のC+編がいいかなぁと。
http://www.bohyoh.com/
ちょと丁寧すぎるかな。まぁ人によるかならなぁ。
一番手っ取り早いのはC++入門でググる事w
0563デフォルトの名無しさん
2016/03/10(木) 00:38:34.16ID:xK6/zWJTC++なのに、(正しいアルゴリズムを選択した)Javaに負けるコードを書く人がいますが全くもって恥ですね
ロバートセジウィック先生のアルゴリズムC++を古本屋から発掘して読み尽くすと良いでしょう
演習問題も面倒くさがらず全部自力で取り組むんですよ
一部フォートランで書けとか無茶ぶりされますけどね
0564デフォルトの名無しさん
2016/03/10(木) 03:05:49.16ID:uW25MwRS0565デフォルトの名無しさん
2016/03/10(木) 08:35:56.52ID:A6Yloxowtemp /C bcc32.exe "○○.c"
*** 拡張エラー情報 ***
指定されたファイルが見つかりません。
ってエラーがでるんだけど、何が駄目なんだろうか
勿論環境変数やコンパイラの設定してあるんだけども
0566デフォルトの名無しさん
2016/03/10(木) 10:48:50.11ID:99+oyHKa0567デフォルトの名無しさん
2016/03/10(木) 12:18:56.89ID:A6Yloxowいや、"C:\borland"にあるんです…
0568デフォルトの名無しさん
2016/03/10(木) 12:32:52.66ID:/Qk8unTb「C言語を始めよう!」ってアプリ側の設定じゃないの?
ttp://homepage3.nifty.com/aokura/phoebe/phoebe.htm
・本ソフトを起動し、「ビルド(B)」→「コンパイラ(E)の設定」→「Borland C++ 5.5 の設定(B)...」で、BCC32.EXE の位置を指定します。
・その下にある「bcc32.cfg と ilink32.cfg を作成する(B)」ボタンを押します。
・ステータスバーに「BCC55」が表示されるまで、「ビルド(B)」→「コンパイラ(E)の設定」→「コンパイラの切り替え(T)」を1、2回実行します。
・あとは、ソースファイルを記述して、名前を付けて保存し、「コンパイル(C)」を実行します。
・コンパイルに成功したら、「実行(X)」で、出来たプログラムの動作の確認が出来ます。
・コンパイルオプションについては、bcb5tool.hlp を参照して下さい。
※
「C言語を始めよう!」が コンパイラをキックするのが ShellExecute なのか CreateProcess なのか
ついでに ソース名をフルパスで渡すのか どこかからの相対なのか
は知らん
0569デフォルトの名無しさん
2016/03/10(木) 12:45:41.08ID:A6Yloxowうぅん手順は合ってるんだけどな…
C言語を始めよう!は使わないでおくわ。色々教えてくれてありがとう
0570デフォルトの名無しさん
2016/03/10(木) 13:49:15.72ID:99+oyHKaまあ普通にIDE使ったほうがよさ気
0571デフォルトの名無しさん
2016/03/10(木) 14:47:52.44ID:+KZ/FiYH0572デフォルトの名無しさん
2016/03/10(木) 21:13:24.71ID:kWiWVk9s簡単な方の本は演習問題付きで結構良さそうですね
C++言語第四版もアマゾンで中身を見た限りでは結構丁寧に書かれているように感じる上、後半は私にとって意味不明なので重点的な勉強が必要そうです
確かにこれを買わないと先に進まない気がします
ちょっと高いもののC++言語第四版の方を試しに買ってみます
参考になりました、ありがとうございます
0573デフォルトの名無しさん
2016/03/10(木) 22:13:51.79ID:gCv4zjHZ第四版は入門書ではありませんので、是非本屋で立ち読みしてからの方がいいです。
0574デフォルトの名無しさん
2016/03/11(金) 00:53:11.95ID:bR4JsiM7アルゴリズムで検索が速いのは、ハッシュ・O(1)か、
赤黒木などの2分探索木・O(log N)
リストは線形探索(全探索)・O(N)になるけど、
中ほどの要素の、追加・削除が速い。
ポインタの付け替えだけだから。
それ以外なら、vectorを使えばいい。
vectorでは、要素の中ほどに、要素を追加すれば、
それ以降の要素がすべてずれる(コピーされる)けど、
データがメモリ上で連続しているため、
キャッシュ乗りが良いので、初心者でも扱いやすい
0575デフォルトの名無しさん
2016/03/11(金) 08:59:25.84ID:GtTxavTA後半は実装を踏まえた話
0576デフォルトの名無しさん
2016/03/11(金) 09:16:11.60ID:jmyOAi9V言われてる通りアルゴリズムの選び方のがクリティカル。
0577デフォルトの名無しさん
2016/03/12(土) 15:50:30.76ID:J24la46V0578デフォルトの名無しさん
2016/03/12(土) 16:21:04.16ID:UiFNIvX8そう。RandomAccessIteratorだから
0579デフォルトの名無しさん
2016/03/12(土) 16:43:01.27ID:U/A263z30580デフォルトの名無しさん
2016/03/12(土) 17:07:01.55ID:J24la46Vありがとうございます
0581デフォルトの名無しさん
2016/03/13(日) 18:20:07.45ID:m8jmEMPqこれにvectorのようなRandomAccessIteratorを適用した場合、RandomAccessIterator用の実装がタグ指名されるのでしょうか?
つまり、ちゃんと二分探索されるのでしょうか?
0582デフォルトの名無しさん
2016/03/13(日) 18:28:12.05ID:9MkMKiKH実装がどうなってるかは別として、計算量はランダムアクセスイテレータに対してちゃんと規定されてる。
25.4.3 [alg.binary.search] より
> ... They work on non-random access iterators ... They are especially
> appropriate for random access iterators, because these algorithms do a
> logarithmic number of steps ... For non-random access iterators they
> execute a linear number of steps.
0583デフォルトの名無しさん
2016/03/13(日) 19:02:30.27ID:m8jmEMPq0584デフォルトの名無しさん
2016/03/23(水) 22:52:06.37ID:g6Pst4N6forで0をループさせるか、べた書き以外に他にあるのでしょうか。
struct hoge2
{
int a[500]; ←これだけを0クリアしたい
int b[30];
}
struct hoge1
{
hoge2 [5];
int hogehoge;
}
0585デフォルトの名無しさん
2016/03/23(水) 23:02:07.00ID:ck1lVuwK推測で言えば、5回ループ必須でその中はmemset一発かな
0586デフォルトの名無しさん
2016/03/23(水) 23:23:00.77ID:zr0GrXhr{
int a[500] = {};
int b[30];
};
はどうですか?
0587デフォルトの名無しさん
2016/03/24(木) 00:18:15.33ID:jvrnTjtw0588584
2016/03/26(土) 09:21:58.80ID:MMAwLytCすみません。確かに構文エラーでした。
中はmemsetで1発で0になりました!
>>586
宣言時や要素1つだけなら{}だけでもクリアできるんですね。
{}に0を入れなければならないと思い込んでいました。
>585さん>586さんありがとうございました。
0589デフォルトの名無しさん
2016/03/27(日) 17:29:03.71ID:GYHXz8Cuint&& rr = 1;
// rrは左辺値
int& i = rr;
int d = 2;
// 左辺値を代入できる
rr = d;
}
最後の文がなぜ可能なのでしょうか?
0590デフォルトの名無しさん
2016/03/27(日) 18:20:38.68ID:3sUtyXnx0591デフォルトの名無しさん
2016/03/27(日) 22:36:24.60ID:GYHXz8Cuなぜrrに左辺値を代入できるのかなという・・・
0592デフォルトの名無しさん
2016/03/27(日) 22:47:09.37ID:TPLiUYg3自分で書いてるとおりにrrは左辺値だから
>>590
・右辺値
・右辺値参照
・ムーブセマンティクス
はそれぞれ別個の概念だから勝手に一つにまとめて混乱しないように
(互いの関連性は高いけど)
0593デフォルトの名無しさん
2016/03/27(日) 22:50:54.20ID:GYHXz8Cu左辺値は受け取れないのでは、という所で躓いてます
0594デフォルトの名無しさん
2016/03/27(日) 22:55:14.91ID:OgqSzyNS0595デフォルトの名無しさん
2016/03/27(日) 22:56:22.98ID:TPLiUYg3左辺値はただの左辺値で(元が)参照の左辺値とか参照でない左辺値とかの区別はしない
>>589の
rr = d;
は厳密にはdを評価した結果の右辺値を代入していて
int a = 1, b = 2;
での
a = b;
と意味は変わらない
0596デフォルトの名無しさん
2016/03/27(日) 22:56:39.39ID:xH5LcqvW0597デフォルトの名無しさん
2016/03/27(日) 22:57:11.06ID:nUenius6その制限は初期化の時だけだ(関数の仮引数の初期化も含む)
初期化後はint&もint&&も、型は違うがintの参照だからint値を代入できる
0598デフォルトの名無しさん
2016/03/27(日) 22:59:59.91ID:GYHXz8Cuつまり、
int&& rr = 変数;
だと変数を評価した値をバインド使用とせず、変数自体をバインドしよう
とするからエラーになり、
int && rr = 1;
rr = 変数;
とすると、変数を評価した値をバインドするから、OK
ということでしょうか?
0599デフォルトの名無しさん
2016/03/27(日) 23:02:33.68ID:GYHXz8Cu#include <utility>
int main() {
int&& rr = 1;
// rrは左辺値
int& i = rr;
int d = 2;
std::move(rr) = d;
}
なるほど。
上記のコードで確かにエラーになりました。
0600デフォルトの名無しさん
2016/03/27(日) 23:05:27.53ID:GYHXz8Cuなんか違う原因でエラーになっている気がするが、、、まあいいや
回答ありがとうございました。
調べても分からなかったので、非常に助かりました。
0601デフォルトの名無しさん
2016/03/27(日) 23:17:13.59ID:TPLiUYg3初期化と代入を混同しない、というC++での基本からの話になるか?
参照がなにかをバインドできるのは初期化の時だけ
それ以降は参照ではない変数のときと同じようにただの値の代入になる
0602デフォルトの名無しさん
2016/03/27(日) 23:25:59.05ID:GYHXz8Cu確かにそうですね。
ありがとうございます。
0603デフォルトの名無しさん
2016/03/27(日) 23:59:30.41ID:nUenius6>左辺値はただの左辺値で(元が)参照の左辺値とか参照でない左辺値とかの区別はしない
いや区別はあるだろ
int型の左辺値なのかint&型の左辺値なのかint&&型の左辺値なのか
という区別が
0604デフォルトの名無しさん
2016/04/01(金) 02:55:46.43ID:ZvSssTS60605デフォルトの名無しさん
2016/04/01(金) 05:28:15.19ID:mYua7P08ttp://codepad.org/ryyEJmJ5
ttp://codepad.org/6nI27etD
実験はできたけどC++の仕様として確実かは不明。
…て、まるで役に立たないね。
0606デフォルトの名無しさん
2016/04/01(金) 05:34:19.47ID:mip+hcrZ規格のどこに書いているかは次の人が教えてくれます
0607デフォルトの名無しさん
2016/04/01(金) 10:59:41.28ID:gprSplwfend of block が表示されてるのが、ものすげ怖いんですけどぉw
0608デフォルトの名無しさん
2016/04/01(金) 12:22:32.44ID:KUrtZxE4C99だと下記で、構文上はOK
static const struct Hoge {
char cmd[3];
char dat;
} cmdTable[] = {
{ .cmd = "abc", dat = 1 },
{ .cmd = "def", dat = 2 },
};
けど、存在しないcmd[3]にnull文字が書かれ(datには入る、だろう)、
その後にdat への値代入?で上書きを期待したいのだけど、その順序は保証されてるのでしょうか?
0609デフォルトの名無しさん
2016/04/01(金) 12:31:22.43ID:KUrtZxE4cmd[0] = 'a', cmd[1] = 'b' ... ときちんと書けば済むのでしょうが、
゙゙で文字列として一括で記述できればと思い、この記述にしています
0610デフォルトの名無しさん
2016/04/01(金) 12:40:14.97ID:1REg68oq0611デフォルトの名無しさん
2016/04/01(金) 13:00:21.30ID:FjOqpklz存在しないcmd[3]にnull文字が書かれたりしない
配列サイズを越える分は無視される
0612デフォルトの名無しさん
2016/04/01(金) 13:04:43.36ID:mip+hcrZ何が怖いんだよ?2つ目(gotoしない)でend of blockが表示されるのは当たり前だろ
0613デフォルトの名無しさん
2016/04/01(金) 15:09:07.42ID:gprSplwfすまん 漢違いしてた。
0614デフォルトの名無しさん
2016/04/01(金) 20:12:30.50ID:mT+xJTkcアクセス指定の固まりの中での順序は確か宣言の順
0615デフォルトの名無しさん
2016/04/02(土) 14:53:07.60ID:pO9IxWzb0616デフォルトの名無しさん
2016/04/03(日) 01:38:59.37ID:ACxMRHW8ソースは江添
0617デフォルトの名無しさん
2016/04/03(日) 12:59:25.20ID:ZT/2NYWz6.7 Declaration statement
『Variables with automatic storage duration declared in the block are destroyed on exit from the block (6.6).』
ちなみにこの次の段落で、宣言文をスキップしてブロック内へ入るgotoや、
宣言前からトリビアルでない初期化の後の位置へのgotoは出来ないとされている
0618デフォルトの名無しさん
2016/04/11(月) 15:25:04.17ID:iHblbFKBそこで、C言語でプログラムを作るとき、ソフトウエアの中でわざわざメモリ上にHDDのデータを
バッファとして持っておくように作るのは意味はないのでしょうか
トータル500MBくらいある中で、10MBくらいを選んで使うのですが、500MBをまとめてメモリ上にとっておいて
バッファも含めて作るのと、気にせずに実際に使用する10MBをいちいちHDDから持ってくるように作るのと
実際の使用速度はかなり違うのかそれほど差異はないものなのか
もちろん500MBを取って来てプログラムをつくる方が多少めんどくさくなりますが
0619デフォルトの名無しさん
2016/04/11(月) 16:51:26.05ID:U1EchCEfSSDでもバッファは付いてるわけでして。
0620デフォルトの名無しさん
2016/04/11(月) 18:37:12.33ID:eEUFGthi頻繁にアクセスするなら自分管理する方が速い可能性があるけどそうでないなら大差ないでしょ
気になるなら自分でベンチとって速度と保守性のバランス考えてね
0621デフォルトの名無しさん
2016/04/11(月) 19:49:07.91ID:lMeZFfb2こう言う質問をするレベルなら
まず
> 気にせずに実際に使用する10MBをいちいちHDDから持ってくるように作る
ようにしなよ
それで実際に動かして遅いと感じたら
まずどこがボトルネックなのかを調べて
ネックがディスクアクセスってわかってからバッファ云々を検討すればいい
0622デフォルトの名無しさん
2016/04/11(月) 23:54:49.61ID:PEl2MjDLWindows APIのみ?
MSVCのリソースエディター?
DXライブラリやQtの様なライブラリ?
そもそも、C++でWindowsアプリはあまり作りませんか?
0623デフォルトの名無しさん
2016/04/12(火) 00:57:34.77ID:mly3h82B0624デフォルトの名無しさん
2016/04/12(火) 01:37:17.06ID:EGwuD3BS0625デフォルトの名無しさん
2016/04/12(火) 07:22:37.54ID:kaM2R7Ii0626デフォルトの名無しさん
2016/04/12(火) 23:02:47.88ID:wtwAGKCLその手の質問には昔から「実測あるのみ」としか言いようがない。
環境的な要素が多すぎて正答がないんだよね。
0627デフォルトの名無しさん
2016/04/13(水) 07:23:10.91ID:cvjtCiXi逆にあまりにも少ないとI/Oアクセスが多くて効率が落ちる
さじ加減はデータ処理方法・環境・状況に応じては変わるよな
0628デフォルトの名無しさん
2016/04/13(水) 08:54:20.67ID:s5MRiDQ8プログラムは架空の世界の出来事のようで
実際には現実世界のハードウェアの制約や
人間がぎりぎり我慢できる応答時間とか
そういった物理的係数の制約を受けるので
単純にスケールしないのだよね
0629デフォルトの名無しさん
2016/04/13(水) 09:35:38.80ID:1hmYwVcIなんか用語がいろいろアレだな
言いたいだけ症候群かな
0630デフォルトの名無しさん
2016/04/13(水) 10:29:29.84ID:5DjU41A/0631デフォルトの名無しさん
2016/04/13(水) 23:10:38.49ID:58qYoL8gベースがWindowsとトラブったら終わりだもんな。
C++ならピクセル単位、ビット単位でコンピュータを動かせる。文字列型が何やってるか分からん言語は分かりにくい
0632デフォルトの名無しさん
2016/04/14(木) 05:36:19.87ID:/Il1GiFb0633デフォルトの名無しさん
2016/04/14(木) 07:04:00.58ID:J7AkptOM老害 w
0634デフォルトの名無しさん
2016/04/14(木) 07:43:14.59ID:HDYqfg9O0635デフォルトの名無しさん
2016/04/14(木) 16:28:37.86ID:K2RPj8lQ最近はJavaも速いみたいだし、勉強中。
0636デフォルトの名無しさん
2016/04/14(木) 23:04:32.60ID:oDeQeVDH文系オペレーター乙
0637デフォルトの名無しさん
2016/04/15(金) 06:18:38.71ID:PF+9HQCIそんな古くさい煽りやる暇あるなら、>>634 の疑問に答えてやれよ w
0638デフォルトの名無しさん
2016/04/19(火) 22:13:28.01ID:4s2SrkGyそれはC++03までの仕様
C++11以降は同じ種類のアクセス指定内では宣言順
struct A {
public: int v1;
public: int v2;//C++11以降はv1より後を保証
private: int v3;//v1,v2との順序保証は無し
};
0639デフォルトの名無しさん
2016/04/19(火) 22:19:17.22ID:4s2SrkGy初期化はクラス定義に書いた順番。
忘れて
0640デフォルトの名無しさん
2016/04/19(火) 22:23:28.21ID:ZZHh95Jtこれでけっこはまった。
0641デフォルトの名無しさん
2016/04/20(水) 17:48:40.57ID:Cy4IjGhJ0642デフォルトの名無しさん
2016/04/21(木) 16:22:57.21ID:7grM4YJBなんだかやればやる分何を目的で学んでいるのか分からなくなってきた
今は暇つぶし程度にDXライブラリでゲーム制作挑戦してるけど
こんな気持ちで続けてていいのだろうか
0643デフォルトの名無しさん
2016/04/21(木) 17:34:38.42ID:RHijWpMC0644デフォルトの名無しさん
2016/04/21(木) 17:50:53.17ID:P2F3Eqhgでもlinuxで言えばI/Fはsystemcall しかないんで、結局ラッピングしてるって事?
-pthreadオプションが必要だしね。
0645デフォルトの名無しさん
2016/04/21(木) 18:22:00.58ID:pog3nPgLラッピングしてるに決まってるだろ
0646デフォルトの名無しさん
2016/04/21(木) 20:05:21.37ID:P2F3Eqhg0647デフォルトの名無しさん
2016/04/21(木) 20:44:28.87ID:7fNr57Mnそして、linusはC++への置き換えなんて毛頭ない
たとえlinusの威光が届かなくなっても、
C++への移行も半世紀はなさそう
>>642
さわりたいプラットフォームも考えて取り組むといいよ
確かに従来のゲームといえばC/C++だが、それはプラットフォームが固定されてたから、
ソフトを高速に動かすことが求められた
現代っ子にとってのゲームは、開発スピード優先のスマホやブラウザで、
ユーザーに高速なプラットフォームを要求すればいいだけだからC/C++は求められてない
0648デフォルトの名無しさん
2016/04/21(木) 21:50:11.94ID:lgWYV0Nw0649デフォルトの名無しさん
2016/04/22(金) 00:14:50.67ID:eVjWh5baゲームのより本質に注力できるようになったことが
老人には耐え難い憤りと嫉妬を覚えさせるのです
0650デフォルトの名無しさん
2016/04/22(金) 06:10:16.92ID:m6wpWus9消費側は時間ごとにクジを引いてデータを集めるだけ。
ランキング狙いは金の力で有利な条件を買い揃えるだけ。
ゲームの本質ですかねぇ?
C/C++ともプログラムとも関係ない老人の繰り言でした。
0651デフォルトの名無しさん
2016/04/22(金) 06:18:16.72ID:mTUrU59j0652デフォルトの名無しさん
2016/04/22(金) 08:31:01.24ID:FElhleN00653デフォルトの名無しさん
2016/04/22(金) 11:32:27.41ID:i/sRwbGN標準入力から
0654デフォルトの名無しさん
2016/04/22(金) 11:34:43.99ID:i/sRwbGNistream_iteratorとstringに関する質問です。
標準入力から
32 22 10[Ret]
みたいに空白区切りで複数の数値を入力して、
vector<int>に入力させるコードは、確か
istream_iterator<int> start(cin);
istream_iterator<int> end;
vector<int> v(start, end);
で書けたと思う(うろ覚え)のですが、
同じように中身が
32 32 10
というstringから入力反復子を作って
vectorに突っ込む方法はあるのでしょうか。
誰か知っていたら教えてください。
0655デフォルトの名無しさん
2016/04/22(金) 12:52:03.35ID:aTezeKcM0656デフォルトの名無しさん
2016/04/22(金) 13:14:16.14ID:nTzk5WkPstringstrean(<sstream>)
ttp://codepad.org/7X4uxza1
0657デフォルトの名無しさん
2016/04/22(金) 17:49:01.15ID:7kzznYmMなんか最近こういうのが沸くなぁ
技術無くてちゃちい2Dゲーしか作れないからコンプレックス持ってんだろうけど
>ユーザーに高速なプラットフォームを要求すればいいだけだからC/C++は求められてない
これが事実なら大規模な3Dゲーでもとっくにそうなってないといけないんだが・・・
どの言語を使うかなどプラットフォームや目的による。当たり前の話。
お前らC/C++のスレに何しに来てんだ?
0658デフォルトの名無しさん
2016/04/22(金) 18:42:01.64ID:R2X74ulv0659デフォルトの名無しさん
2016/04/22(金) 20:32:13.51ID:FElhleN0>>657みたいな指摘されても話題の本質が理解できずに、
周りを見下すだけしかできず、無価値な発言しかしない老害にはならんようにな
C/C++で現役で食ってる身だし、専用機のゲームの方が断然好きの立場だが、
方向性を見失っている初心者に「当たり前」を説いて何が不満なのか
つか「C/C++は求められてない」しか目に入ってなくて、意味不明なツッコミだな
0660デフォルトの名無しさん
2016/04/22(金) 20:42:17.69ID:aTezeKcM0661デフォルトの名無しさん
2016/04/22(金) 20:59:45.44ID:54q4G/YR>>658
無い
ISO/IEC 14882:2014 29.6.5 p3
『leaves the atomic object in an uninitialized state. [ Note: These semantics ensure compatibility
with C.』
0662デフォルトの名無しさん
2016/04/22(金) 21:10:51.76ID:aTezeKcM0663デフォルトの名無しさん
2016/04/22(金) 22:06:45.90ID:Fy2sPSRRどうも
0664デフォルトの名無しさん
2016/04/22(金) 22:19:56.32ID:7kzznYmM>指摘されても
は??俺このスレ(現行)書いたの初めてなんだが
>無価値な発言しかしない
>>649に価値があるのか?俺を叩くなよボケ
まぁ647の方は荒らすような内容ではないんで言い過ぎたかもしれないが、
PCゲーとコンシューマの開発経験者として言わせてもらうと
>ユーザーに高速なプラットフォームを要求すればいいだけだから
乱暴過ぎるんだよ、これ。ゲーム開発経験者じゃないだろ絶対。適当言わないでくれ
コンシューマならともかく、PCゲーで常に最新のCPU、GPU要求してたら会社潰れるぞ
まるで今のゲームといえばスマホゲーしか無いかのように言っててその上
>>649-651
の流れ見たらさすがにスルーできんわ・・・
あと俺のは>>642に宛てたレスじゃないんだがどこ見てそう思ったんだよ
0665デフォルトの名無しさん
2016/04/22(金) 22:59:49.91ID:heBwzWJC>このスレ(現行)書いたの初めてなんだが
おじいちゃんこの前も>>647でレスしてたでしょ
0666デフォルトの名無しさん
2016/04/22(金) 23:07:00.10ID:qC8a/KEYとりあえずやさしいc++を練習しつつ読み終えたところなんだが、次に進んだほうがいい本orサイトがあれば教えてくださいお願いします。
0667デフォルトの名無しさん
2016/04/23(土) 00:17:37.99ID:UhtZslrV構文理解したなら、他人のソースを読む…
の前にリーダブルコードってのもアリか
>>664
初っ端から見当違いに噛み付いた時点で非はおまいさんにある
オレは流れ読んでないから、見当違いなこと言ってもいいだなんて無茶苦茶
0668デフォルトの名無しさん
2016/04/23(土) 04:38:33.81ID:0FPGkntRアンカー間違えたの?
657で書いたのが初めてなのに「指摘された」っておかしいだろと言ったんだが
>>664
知ったかぶって初心者に嘘教えるのを非難したら見当違いか。へぇー。
ここに限らずああいう話が出るとすぐ>>649みたいなのが沸くんだが
>>649には諌めるどころか”「老害」の部分に同調した”煽りレス(>>659 >>665)が出てくるし
ということは、彼らは自分宛のレスでないにも関わらず
>技術無くてちゃちい2Dゲーしか作れないからコンプレックス持ってんだろうけど
あたりが図星で勝手に発狂したということになるんだが
知ったかぶって偉そうに言ってたことが実務経験者に間違いだと指摘されて
勝手に逆ギレし、「荒らしを叩く健全なスレ住民」を装って調子に乗って煽るのが
「スレの流れ」なんですかね。
>>666
本に限って言うなら、C++の難しいとこは置いといて
(もっと理解したいなら「C++の設計と進化」「プログラミング言語C++第4版」とか)
Windows上のプログラミングを理解できる本を1つ手元に置いといた方がいいかも
自分の場合は「Windows2000 プログラミング標準講座」だったけど、古いし改訂されてるかどうか・・・
目的から言って、ちゃんとメッセージループの仕組みとかをWin32APIでちゃんと解説してくれる本
あるいは.NET(C++/CLI)でも、さわりだけではない詳細な本がいいと思う(安い本はだめ)
あとサイトはとりあえず「猫でもわかる」をブクマしとけば十分かなと
0669デフォルトの名無しさん
2016/04/23(土) 06:08:08.35ID:6r718OAO本質ですよ
人に「楽しい」と感じさせた、
お金を払ってでも続けたいと思う価値を創造した、
これこそエンターテイメントの本質
技術自慢や規模自慢はまさに
レーゾンデートルを失って焦る老人の遠吠え
0670デフォルトの名無しさん
2016/04/23(土) 06:30:53.63ID:0FPGkntR前半は一見もっともらしいんだけど
>>650を読んだ上だと・・・・・w
グリーやモバゲーの社員(or下請け)なのかね、別に技術自慢してないし昨今のスマホゲーをけなしもしないけど
自分の不勉強を棚に上げるためにそういう屁理屈こねまわしてるとしたらいかがなもんか
0671デフォルトの名無しさん
2016/04/23(土) 08:17:17.80ID:lEfknhOE0672デフォルトの名無しさん
2016/04/23(土) 11:06:28.46ID:UhtZslrV横から割り込んできて「人殺し!」みたいに見当違いに騒いでおいて、
一瞬落ち着いたと思ったら、オレはマグロも三枚におろせるんだぞ、
お前らは魚さばいたこともないだろとか言い出してる感じ
0673デフォルトの名無しさん
2016/04/23(土) 11:12:11.94ID:dTOQaivR>>650がゲームの本質とは何か?にこだわり始めたようだ
後者は話をずらそうとする嵐
>>672は人殺しと攻められる幻覚が見えた糖質
ちょっと落ち着いた方がいい
0674デフォルトの名無しさん
2016/04/23(土) 11:23:00.04ID:UhtZslrV包丁でよくある話を出しただけなんだけどな
こんな断片的な発言で、幻覚だとか糖質だとか、ちょっと妄想働かせすぎでない?
被害者(?)ではない第三者の発言だぞ?
まぁ既にこのやり取りも、>>642をほったらかしにはなるがw
0675デフォルトの名無しさん
2016/04/23(土) 11:38:20.22ID:dTOQaivR>>657が>>647に対して「お前は道具の使い分けを否定している」と異を唱えた
>>647はむしろ使い分けを主張している
0676デフォルトの名無しさん
2016/04/23(土) 11:40:07.10ID:0FPGkntR捏造すんな
正確には、包丁を使った料理方法を教え合う場所で、野菜切ろうとしてる初心者Aに
「フードプロセッサーでもいんじゃね?何でも出来るよそれだけで料理してるプロも居るよ(誇張)」と言った奴Bがいて
(ここまではともかく)
そこで調子に乗って「今時包丁とかありえねーよww」とか言い出す奴Cまで出てくる上それを誰も咎めないので
包丁使ってる一応プロの料理人Dが「お前ら何しにここ来てんだ」とブチキレたようなもん
ちなみにAがプロの料理人(フードプロセッサだけではやっていけない)あるいはアマチュアだが包丁の達人を目指してるのか
それとも手軽に美味しい家庭料理作りたかったのか(それならフードプロセッサだけでも良い)は誰もわかってない
多分理解が無いゆえに思いっきり誤解してる人が多いみたいだが、GTAみたいな大規模な3Dゲームでも
速度が必要な部分だけをC/C++で作り、後はデザイナが好きにいじれるように(既存/自作問わず)簡単な言語で作れるようにするのが結構昔から常識だぞ
GTAでいえばRockstarが「俺はC++が好きなんだい!!」とかいうエゴで言語を選び、無駄な作業増やすアホな技術者ばっかりだったら潰れとるわ
悪いけどそれ頭に入れた上で俺のレス読み返してもらえるかな・・・・
0677デフォルトの名無しさん
2016/04/23(土) 11:42:36.84ID:0FPGkntR説明が悪かったのもあると思う、ヒートアップしてすまんかった、言いたいことは全部書いた
0678デフォルトの名無しさん
2016/04/23(土) 11:47:13.86ID:dTOQaivR…やあスマン。すっきりしたわ!
ちょ、マジやめてくださいね
0679デフォルトの名無しさん
2016/04/23(土) 11:58:53.15ID:0FPGkntR>>649の
>本質的でない無駄なことに注力する
が一番腹が立ったんだよ俺は(それを沸かせたのは647なんで一括りにしてしまったが)
ゲーム開発のためにC/C++一生懸命勉強してる人がみんな
「本質的でない無駄なことに注力するバカ」だと決めつけてる
そんなバカがどこに居るというのか?ずれすぎだろ
>>649はただの荒らしだと思って反応した自分に罪悪感も感じたが
あれがまともな話に見えるのなら無理解も甚だしいぞ
0680デフォルトの名無しさん
2016/04/23(土) 12:00:36.82ID:0FPGkntR○647に対する批判が筋違いだと
0681デフォルトの名無しさん
2016/04/23(土) 12:00:39.45ID:UhtZslrVその一行前の「現代っ子にとってのゲームは、開発スピード優先のスマホやブラウザで、」
の前置きが見えておらず、
>>657はPCゲー、コンシューマゲー前提で一方的に語ってるだけだな
ってかオレオレコンテキスト多過ぎぃ!(しかも後付け)
オレの背景、知識、世界を理解しろとか、そりゃ噛み合わん
0682デフォルトの名無しさん
2016/04/23(土) 12:06:43.43ID:0FPGkntR>オレの背景、知識、世界を理解しろとか
だから無理解なまま適当言うのやめろ、って言ってたじゃん
経験してない業種に決めつけで言うと初心者混乱させるだけだろ
>前置きが見えておらず
その一行前もがっつり決めつけじゃないか
「まるで今のゲームといえばスマホゲーしか無いかのように言って」
って書いたじゃん
0683デフォルトの名無しさん
2016/04/23(土) 12:19:21.71ID:dTOQaivR>その一行前もがっつり決めつけじゃないか
なぜそこで話をややこしくするのか
「>>679に書いたとおり、一括りにしてしまったが>>649への批判のつもりだった」
と言うべきだろう
相手に反論形でレスを返さないといけない教義でもあるのかね
0684デフォルトの名無しさん
2016/04/23(土) 12:21:35.25ID:UhtZslrVって書いたじゃん
それも後付けじゃね
>>657ですでに大規模な3Dゲーという前提に置き換わってる
>>657の解釈 ゲームはスマホゲーしかない
>>647の意図 仮に今主流のスマホゲーの開発を想定してるなら
つか、上の階が真昼間から結構いい声でギシアンしてて草w
0685デフォルトの名無しさん
2016/04/23(土) 12:43:31.19ID:0FPGkntR>>647みたいなけなすような言い方すると必ず>>649みたいなのが沸くんだよ
ドヤ顔で「現代っ子にとっての・・・」とか「求められてない」とか言うからだ
>>684
ちゃんと読んでくれよ・・・
「これが事実なら大規模な3Dゲーでもとっくにそうなってないといけない」
って書いたのは、「それは事実じゃない」と言ってるの
(それ=ユーザーに高速なプラットフォームを要求すればいいだけ)
例えば銀行のシステム作るor保守するときに「全部取っ替えてJavaで作りましょう」ってのは少々現実離れしてんじゃないの?
スマホゲーだってスマホの制約は食らうし自分で作って自分で遊ぶにしてもPCやスマホの性能次第になる
それが>>642にとって望ましくないのなら、「C/C++じゃなくても」ってのは完全に筋違いだ
(ただしもちろん本人が「単にゲーム作れりゃ何でもいい」のなら>>647の「別の言語でもいいんじゃね」という部分は正しいが)
少なくとも>>642が「DXライブラリでゲーム作ってる」って書いてんのに何でスマホゲーやブラゲーの話になるんだ?
ドヤ顔したくてそういう話(しかも誇張)に持って行っただけ、と見られてもしょうがないよな
それに対して
「どの言語を使うかなどプラットフォームや目的による」って書いたんだが・・・・あんたはどう曲解したんだ
話置き換えてなんかないってわかってもらえたか?
0686デフォルトの名無しさん
2016/04/23(土) 12:50:59.28ID:0FPGkntR自分で作って遊ぶだけならPCの性能使い切るのは難しいから、制約あんま関係無いな
0687デフォルトの名無しさん
2016/04/23(土) 13:06:19.66ID:dTOQaivR>>647で「ゲームやりたいならプラットフォームに応じて言語を選べ」になってしまった
0688デフォルトの名無しさん
2016/04/23(土) 13:09:06.45ID:0FPGkntR>>642は「ゲーム作るのが目的」とはどこにも書いてない
そしてここはC/C++のスレ
>>647の方が筋違いだと思うんだが・・・・普通、もっと楽しくなれる学習法とか提案するんじゃないの。
そうしないことについて、同じく何も提案してない俺は何も言えないんだけど
多分誰も>>642に対して適切なアドバイスはしてないよね、少なくとも
0689デフォルトの名無しさん
2016/04/23(土) 13:09:56.95ID:0FPGkntR0690デフォルトの名無しさん
2016/04/23(土) 14:05:18.67ID:vLXn9W+E0691デフォルトの名無しさん
2016/04/23(土) 15:23:23.69ID:dTOQaivR「Cにかかわると、きけんだぞ!」と
0692デフォルトの名無しさん
2016/04/23(土) 17:03:26.75ID:lEfknhOE0693デフォルトの名無しさん
2016/04/23(土) 21:37:32.57ID:UX7m5yK/0694デフォルトの名無しさん
2016/04/23(土) 23:02:30.71ID:X/qVSAL9WCHAR型をchar型に変換するメソッドを書いているんですが7行目でエラーがでて
ビルドが通りません
使う側からバッファサイズを指定できたらいいのになと思って書いたんですがどう書けば動きますか?
0695デフォルトの名無しさん
2016/04/23(土) 23:06:07.71ID:X/qVSAL90696デフォルトの名無しさん
2016/04/23(土) 23:06:47.98ID:9/IfcXxp一から設計やり直させたいところだけど
0697デフォルトの名無しさん
2016/04/23(土) 23:40:40.87ID:X/qVSAL9書き直しました
ふと思ったんですがこれWcharToChar関数のresult変数はどうやって開放するんですか?
返り血を受けたポインタをfree関数に渡せばいいんでしょうか?
>>696
一から設計やり直させたいってどういうところがですか?
0698デフォルトの名無しさん
2016/04/23(土) 23:48:03.51ID:9/IfcXxpまさにそういうところで、まずmallocとfreeを対応させることを頭に置きつつ
この関数を使うということは、さらにこの関数とfreeを対応させることも頭に置かなければならない
例えばさらに別の関数を作って、それはfreeしなくていい、となると、使っていくうちにこんがらがって
二重freeとかfree忘れに繋がる
C++ならstd::string使いたいところだけど、malloc,freeをようやく使う段階だとなかなかそれも難しいか
0699デフォルトの名無しさん
2016/04/24(日) 00:08:24.65ID:5Zvq9JitほんとはWCHARをstringクラスに入れてあれやこれやしたいんですが
した後でまたWCHARに戻したりしたいんですがどうすればいいんですか?
Win32APIでどうしても文字列の相互変換をできるようにならないと前に進めないです
0700デフォルトの名無しさん
2016/04/24(日) 00:18:33.81ID:MjCYi9ICお前は前に進まなくていいぞ
http://ideone.com/KTLkKj
0701デフォルトの名無しさん
2016/04/24(日) 00:25:01.22ID:n8ERBj5Pこれあんま認知されてない気がするけど気のせい?
0702デフォルトの名無しさん
2016/04/24(日) 02:14:36.02ID:12WzAHT3もうポインタも要らないかも。暴言
0703デフォルトの名無しさん
2016/04/24(日) 08:37:43.50ID:DoWZ3H64Win32APIでって
MultiByteToWideCharとWideCharToMultiByteじゃあかんの?
0704デフォルトの名無しさん
2016/04/25(月) 14:03:39.54ID:HSarKqaj0705デフォルトの名無しさん
2016/04/25(月) 22:08:47.06ID:P6k38L+Pありがとうございます
C#はいままで長いことやってきたんですがC++はかなり難しいですね
C++の標準ライブラリの関数などの機能を知りたいんですがぐぐっても見つかりません
stringやwstringのメンバ関数?等全くわからないです。どうやって調べればいいんでしょうか?
0706デフォルトの名無しさん
2016/04/25(月) 22:19:49.00ID:Oxb8EK6D0707デフォルトの名無しさん
2016/04/26(火) 00:21:39.59ID:3CJYmNHFc++ stringで十分にでてきて他のはそこから手繰っていけるだろ
ttps://www.google.co.jp/search?q=c%2B%2B+string
0708デフォルトの名無しさん
2016/04/26(火) 00:27:08.62ID:HKZNbvQrもう型変換で悩まされて悩まされてどうにかならないですか?
WinAPIは引数や返り値としてWCHARやTCHARしか受け付けてくれないし
文字置換や抜き出ししようとするとstringクラスにしないといけない
調べても調べても埒が明かなくて、D&Dされたexeファイルと同じ場所に別名のファイルを作る
というアプリを作りたいんですが、心が折れそうです
0709デフォルトの名無しさん
2016/04/26(火) 01:14:02.31ID:6CK+xbXnなんでいちいちstringにする
0710デフォルトの名無しさん
2016/04/26(火) 02:55:48.07ID:uH9a/9FF0711デフォルトの名無しさん
2016/04/26(火) 08:53:17.56ID:LYWJsM33MFC使う前提なら CString だろうけどー
0712デフォルトの名無しさん
2016/04/26(火) 09:34:07.81ID:CpGCwN8/0713デフォルトの名無しさん
2016/04/26(火) 10:22:43.51ID:uH9a/9FFそうでしたっけ? tchar もwchar も使わなかった記憶があります。
確かに、ダイアログ形式のプロジェクトでシコシコいろんなツール作ってました。
0714デフォルトの名無しさん
2016/04/26(火) 20:40:48.65ID:QSwyI9tG変換はcodecvtとwstring_convert使えば標準ライブラリだけで全部できる
0715デフォルトの名無しさん
2016/04/26(火) 21:13:35.43ID:nbNQNZJ4ところでC++11のstd::stringって中のデータ連続してるって聞いたけどVC2015ではこの点どうなの?
0716デフォルトの名無しさん
2016/04/26(火) 22:06:04.73ID:hDzbV5lu規格の上ではC++11からだけど、
実装上はかなり前のVC++から連続してたと思う
0717デフォルトの名無しさん
2016/04/26(火) 22:13:32.60ID:NDKRlMpi0718デフォルトの名無しさん
2016/04/26(火) 23:07:37.03ID:HKZNbvQrwstringを使うようにします
std::string::c_str()とstd::wstring::c_str()って違うものですよね?
stringのほうがconst char *を返し、wstringのほうがconst WCHAR *を返すという認識でいいですよね?
http://www.geocities.jp/eneces_jupiter_jp/cpp1/010-055.html
http://ideone.com/ziwB4d
文字置換を見よう見まねでwstring版を作ったんですが正常に動きません
なぜ動かないのかわからないです
0719デフォルトの名無しさん
2016/04/26(火) 23:30:16.25ID:nbNQNZJ4せんきゅー
>>718
・GetCommandLine()関数の戻り値の型はPTSTR(TCHAR*)
・TCHAR*はUNICODEマクロが定義されている場合WCHAR*でありそうでない場合CHAR*
・UNICODEマクロはVisualstudioを利用しているならプロジェクトのプロパティ[全般]の[文字セット]の項目で「Unicode文字セットを使用する」を選択すると定義される
・WCHARはwchar_tでありCHARはchar
・マルチバイト文字とUNICODE文字(ワイド文字)についてググれ
0720デフォルトの名無しさん
2016/04/28(木) 17:59:43.52ID:c/7AsRbPwstringだけで足りないの?
0721デフォルトの名無しさん
2016/04/28(木) 21:38:58.71ID:DqjglUBW0722デフォルトの名無しさん
2016/04/28(木) 21:46:33.60ID:c/7AsRbPそのまま使う
0723デフォルトの名無しさん
2016/04/28(木) 22:04:53.24ID:U5e08bbEそ そんなのがあんのか
0724デフォルトの名無しさん
2016/04/28(木) 22:07:58.58ID:U5e08bbE0725デフォルトの名無しさん
2016/04/29(金) 21:37:16.83ID:wbzz+Mz0いろいろ考えてみたんですがこういうことですか?
wchar *とchar *の相互変換は文字コード変換が必要
Win32APIの関数もchar(ANSI版?)とwchar(Wide)で定義されていてこれもマクロで呼び出しを変えている
MessageBoxAとMessageBoxWみたいな関係?
>>720
文字列置換をしたいので
.netにあるStringクラスのReplaceメソッドみたいに便利なメソッドが作りたかったんです
でも減ったら文字を詰めないといけないし、結構めんどくさそうですね
0726デフォルトの名無しさん
2016/04/29(金) 22:50:50.37ID:bedvQBPC0727デフォルトの名無しさん
2016/04/30(土) 08:35:11.59ID:olAQ2y8zお前は前に進まなくていいと言っただろう
http://ideone.com/cp9F3B
0728デフォルトの名無しさん
2016/04/30(土) 08:43:59.70ID:fMBM4QUAだからMultiByteToWideCharとWideCharToMultiByteじゃあかんの?って
0729デフォルトの名無しさん
2016/04/30(土) 22:07:00.23ID:NxyK0Alw前に進みます
>>728
wstring使うようにしました
wstring型の文字列から置換をしたいので、今勉強しています
0730719
2016/05/01(日) 00:27:42.08ID:RWwAd4Sf俺も完全な理解なんてしてないないけどさ
>いろいろ考えてみたんですがこういうことですか?
>wchar *とchar *の相互変換は文字コード変換が必要
これはないだろ
お前に必要なのは答えじゃなくて理解だから以下の三つを調べてこい
�@文字列とは何ぞや
→配列と文字列の関係についても理解しろ
�Aポインタとは何ぞや
�Bキャストとは何ぞや
→C++スタイルの以下のキャストについても調べろ「static_cast」「dynamic_cast」「const_cast」「reinterpret_cast」
それとな、本を買え
0731デフォルトの名無しさん
2016/05/01(日) 01:24:47.13ID:1jzF+/1T違うんですね。すいません
勝手にchar*はマルチバイト文字列を格納してwchar*はワイド文字列なので
ANSIとUnicodeだから文字コード変換が必要なのかなと勝手に思っていました
�@はどういうことかわかりません。スタックとかヒープって意味ですか?
�Aポインタってアドレスを格納している変数?
�B明示的や暗示的がある型変換ですよね?
本高いので買えません
0732デフォルトの名無しさん
2016/05/01(日) 01:46:58.19ID:2RNzlY+s○○とは何ですか? ここで聞かなくてもいい事をわからないと
どこでも誰にも相手されない。
0733デフォルトの名無しさん
2016/05/01(日) 02:04:44.14ID:1jzF+/1Tありがとうございました
0734デフォルトの名無しさん
2016/05/01(日) 02:10:24.56ID:gm/snJ6R0735デフォルトの名無しさん
2016/05/01(日) 02:31:14.68ID:RWwAd4Sf>>731
諦めるのは勝手だけど
勘違いされたままだと困るので
文字コード変換に関数を使わなければいけない、という認識はあってる
0736デフォルトの名無しさん
2016/05/01(日) 05:32:22.07ID:p2YCnIW8とはなんだったのか
0737デフォルトの名無しさん
2016/05/01(日) 06:15:37.36ID:Ahsu41sE0738デフォルトの名無しさん
2016/05/01(日) 07:10:06.21ID:1U34S4Ix2chで初心者相手に偉そうにする馬鹿
0739デフォルトの名無しさん
2016/05/01(日) 08:57:34.41ID:tKi6j9CTBitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw
The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
r
0740デフォルトの名無しさん
2016/05/01(日) 16:56:21.08ID:mNgTtUMj0741デフォルトの名無しさん
2016/05/03(火) 15:30:55.73ID:66J4LMLe>配列と文字列の関係についても理解しろ
大変興味があります
アフォな私めに教えていただけませんでしょうか
0743デフォルトの名無しさん
2016/05/03(火) 23:30:37.23ID:al79N4UUC/C++で文字列を扱うのはcharかwchar_tの配列。大抵、ASCII文字ならchar/wchar_t型に収まる。
それらの羅列である文字列はchar/wchar_tの配列で扱われる。ライブラリにしろユーザー関数にしろ、一文字ずつ処理を行う。
buff[10]で"Windows"ならbuff[0]は'W'、buff[3]なら'd' という使い方だ。
配列に入った文字列の最後にゼロ(NULL文字)が入ることで文字列の終端を示す。これを忘れるとランタイムエラーを引き起こす。
0744デフォルトの名無しさん
2016/05/03(火) 23:43:13.54ID:zIDR9cMA配列よりもvectorですなぁ。
最近は mallocはもちろん new も直には使ってないです。
0745デフォルトの名無しさん
2016/05/03(火) 23:51:24.06ID:al79N4UUライブラリと言語仕様の区別もつかないで、よくC++使えるな
0746デフォルトの名無しさん
2016/05/04(水) 00:46:24.41ID:jmo8gOMxわかってないで書いてると思ってる お前が ぼけなんだよ。
0747デフォルトの名無しさん
2016/05/04(水) 08:32:43.88ID:OhRmCsOoちなみに標準化委員会の人はライブラリを除いた部分を「core language」と呼ぶことが多いようだ
0748デフォルトの名無しさん
2016/05/04(水) 08:35:29.02ID:OhRmCsOo「元々CPUに文字列を扱う機能は無い」
=「ボクのパソコンのCPUには無かった」
のレベルだからどうしようもない
0749デフォルトの名無しさん
2016/05/14(土) 16:28:17.39ID:fLeelvLJ標準ライブラリによってchar配列などが事実上の文字列型としてサポートされる
\0を終端として用いることにより簡便な可変長データ構造を実現
またCPUによってはこれを支援する専用の仕組みを持つ
0750デフォルトの名無しさん
2016/05/14(土) 17:03:03.04ID:EHXndh+5C++のstd::stringはNUL文字終端ではないし
Cでもごく一部はstrncpyの様にNUL終端にならないケースがある
0751デフォルトの名無しさん
2016/05/14(土) 19:04:51.28ID:Hwp5XNP7規格ではstd::stringの内部表現がNULL終端であることは保証されてないかもしれないが(???)
NULL終端でない実装なんて見たことないなあ
そうじゃなきゃc_str()をどうやって実装するんだよ
0752デフォルトの名無しさん
2016/05/14(土) 19:48:26.84ID:i0UC0Qx50753デフォルトの名無しさん
2016/05/14(土) 20:28:20.16ID:EHXndh+5そもそも概念的にNUL終端を含めないクラスについて内部実装の話をされても。
まあ実装にしても「NULL終端」とか言っちゃうレベルではc_strを定時間にする実装が思い浮かばなくても致し方ない
0754デフォルトの名無しさん
2016/05/14(土) 21:21:21.46ID:Hwp5XNP70757デフォルトの名無しさん
2016/05/15(日) 20:45:26.67ID:TLapgfGj荒らしは去れ
0758デフォルトの名無しさん
2016/05/16(月) 06:07:51.35ID:ImqJR5xM0759デフォルトの名無しさん
2016/05/16(月) 06:46:12.15ID:7RTqmQ/i0760デフォルトの名無しさん
2016/05/16(月) 06:47:37.01ID:7RTqmQ/i○ floor(d)
0761デフォルトの名無しさん
2016/05/16(月) 07:10:43.85ID:ptsyD+4U0762片山博文MZ ◆T6xkBnTXz7B0
2016/05/16(月) 07:35:27.11ID:TOoYG9yGd-0.5以上だから、ここは天井を使わないといけない。
ceil(d-0.5)
0763デフォルトの名無しさん
2016/05/16(月) 22:06:43.25ID:ygw1DlKj0764デフォルトの名無しさん
2016/05/16(月) 22:20:26.48ID:ptsyD+4U↓クソコテが一言
0765デフォルトの名無しさん
2016/05/16(月) 22:21:05.57ID:ygw1DlKj>>762が正しい。
0766デフォルトの名無しさん
2016/05/16(月) 22:22:04.11ID:H4doO3aTだからroundじゃダメだね
0767デフォルトの名無しさん
2016/05/16(月) 22:46:27.73ID:dIvaV2y+http://ideone.com/CDQ1vN
0768デフォルトの名無しさん
2016/05/16(月) 22:52:44.86ID:ptsyD+4U0769デフォルトの名無しさん
2016/05/18(水) 00:33:54.73ID:WN1OorbV0770デフォルトの名無しさん
2016/05/20(金) 22:43:27.76ID:eS3sHbgZpのメモリを変更するとどうなる?
vc限定で
0771デフォルトの名無しさん
2016/05/20(金) 22:45:55.87ID:1cinIEjU0772デフォルトの名無しさん
2016/05/20(金) 23:11:15.35ID:99X1purwC++ばっかやってると、なんかこんなコードを見るだけで、
寒気がするようになってしまったw
0773デフォルトの名無しさん
2016/05/21(土) 08:03:23.46ID:DrfWRUfn0774デフォルトの名無しさん
2016/05/21(土) 09:07:16.41ID:K70VO2ZY*pは知らんけど
0775デフォルトの名無しさん
2016/05/21(土) 22:54:26.71ID:ZP64SPFeプロトでエラー文字列格納するのにこのコード書いたら
本番コードでそのままコヒぺされたことあるわ
あの時は中国人プログラマ信用した俺が馬鹿だったと確信した
0776デフォルトの名無しさん
2016/05/22(日) 00:06:21.60ID:BMQP7PAp0777デフォルトの名無しさん
2016/05/22(日) 00:30:39.10ID:6ZSSVUok0778デフォルトの名無しさん
2016/05/22(日) 01:39:54.16ID:BMQP7PAp当然書き換えなかったのは、身体に染み付いてたからなのかな。
0779デフォルトの名無しさん
2016/05/22(日) 08:01:15.21ID:8h3SPrnH最初にchar *p=NULL;ってしておくと
なにも考えずにいきなりdelete [] p;実行しても中身NULLだから無視されてエラーにならない
chr *p=NULL;
...
DELETE[] p;
p=new char[16];
...
自分でstringとかset実装してみたけど頭禿げるねw
0780デフォルトの名無しさん
2016/05/22(日) 09:21:18.54ID:t+ool8rXtry {
p1 = new char[16];
p2 = new char[16];
}
catch(){
delete [] p2;
delete [] p1;
}
0781デフォルトの名無しさん
2016/05/22(日) 09:22:11.53ID:t+ool8rX× p2 = NULL
○ *p2 = NULL
0782デフォルトの名無しさん
2016/05/22(日) 10:24:25.53ID:+fS92ght大昔ならともかくちょっと前なら
const char *p="abc";
だな
0783デフォルトの名無しさん
2016/05/22(日) 10:48:34.39ID:BMQP7PApだな。オブジェクトの名前で これはリテラル用だから参照のみ という事だったのかも。
今更何言ってたんだという感じだがw
0784デフォルトの名無しさん
2016/05/22(日) 10:54:17.87ID:8h3SPrnHよく判らないけどcatchしたあとプログラムを停止させるのが必須だよね
char *p = new char[16];
try {
p = new char[16];
}
catch(){
delete [] p;
}
...フォロー処理
これcathできるの?
0785デフォルトの名無しさん
2016/05/22(日) 11:00:22.89ID:Ycsy37yV確認したいんだけど、リソース情報のお話なのかな?
昔の情報しか無いので、constは変更しないデータに使うと思っている。
変更の有る領域の初期化にもconst使える様になったの?
0786デフォルトの名無しさん
2016/05/22(日) 11:17:45.96ID:YKtsYTbtプログラマ引退してるよね?
0787デフォルトの名無しさん
2016/05/22(日) 11:22:15.50ID:t+ool8rXんな書き方しねーw
0788デフォルトの名無しさん
2016/05/22(日) 11:31:57.41ID:YKtsYTbt0789デフォルトの名無しさん
2016/05/22(日) 11:45:26.47ID:1oa7e5ACなんか、古いCとC++の区別がついてないおじさんな気がする
0790デフォルトの名無しさん
2016/05/22(日) 11:50:51.55ID:WBs54RLOhttp://codepad.org/KFOVIf0g
こんな感じでデータが壊れてしまいます
0792デフォルトの名無しさん
2016/05/22(日) 12:05:42.16ID:vKoFE7Z9えっ
0793デフォルトの名無しさん
2016/05/22(日) 12:22:50.06ID:1oa7e5AC訂正 C99→C89
https://docs.oracle.com/cd/E19957-01/805-7888/z4000220f2c4c/index.html
0794デフォルトの名無しさん
2016/05/22(日) 12:32:23.58ID:dF2ecomY変わる
0795デフォルトの名無しさん
2016/05/22(日) 15:18:43.60ID:BMQP7PAp連続である必要はないよね。
ん 連続である仕様なんだっけ? アドレスを直接触る事もないけど。
0796デフォルトの名無しさん
2016/05/22(日) 15:33:16.55ID:YKtsYTbtC++03からの仕様
0797デフォルトの名無しさん
2016/05/22(日) 15:40:33.57ID:YKtsYTbtそれまではemptyではないことを確認してから&v[0]とかやってた。
連続が保証されてるからOpenGLなどのC関数にバッファーを渡すのに便利
だからnew char[size];とか余程の事が無い限り要らない
連続してなくてよくて要素のポインタ変わって欲しくないならstd::list使えばいいよ
0798デフォルトの名無しさん
2016/05/22(日) 18:02:16.50ID:wU59/EOpそのような保証はなく、例えばdequeのようだったり、或いはlistのようだったりしないものでしょうか
0799デフォルトの名無しさん
2016/05/22(日) 18:10:14.58ID:BMQP7PApなるほど、他システムへの渡しが最速だわなぁ。
ストラップ先生が言うにはvectorはものすごく賢く作ってるらしいね。
0800デフォルトの名無しさん
2016/05/22(日) 18:14:52.32ID:ZEoOi4vfMFCのコレクションみたいにユーザーフレンドリーではないからかも。
極めれば面白いかもしれないが…
ちなみに職場でやったら他の人がメンテできなくなる。
0801デフォルトの名無しさん
2016/05/22(日) 18:23:05.05ID:BMQP7PAp0802デフォルトの名無しさん
2016/05/22(日) 18:42:51.25ID:dF2ecomY現C++仕様ではstd::stringもstd::vectorのようにメモリレイアウトは連続だよ
COW(Copy On Write)の使用も禁じられたはず
(もしなんか間違ってたら↓で規格マスターが怒ってくれるはず)
ただし規格上は\0デリミタのC文字列(const char*とか)を取り出したいときは&s[0]じゃなくs.c_str()を使うべき
0803デフォルトの名無しさん
2016/05/22(日) 18:44:39.93ID:dF2ecomY悲惨すぎる職場
0804デフォルトの名無しさん
2016/05/22(日) 19:47:54.90ID:6Km37UdcSTL が使えないなんて,なんの罰ゲームなんだ?
0805デフォルトの名無しさん
2016/05/22(日) 20:19:48.95ID:wU59/EOp0806デフォルトの名無しさん
2016/05/22(日) 20:20:18.76ID:wU59/EOpありがとうございます
0807デフォルトの名無しさん
2016/05/22(日) 20:46:25.51ID:DdN82XP20808デフォルトの名無しさん
2016/05/22(日) 20:55:45.28ID:dF2ecomYstd::getlineで足りないならテメエで実装しろという話
0809デフォルトの名無しさん
2016/05/22(日) 21:40:24.26ID:DdN82XP2まあboost使うんだけどな
0810デフォルトの名無しさん
2016/05/22(日) 22:09:53.03ID:aN2uVGWucontやcinって関数なんですか?
0811デフォルトの名無しさん
2016/05/22(日) 22:16:51.24ID:9DKQN5WFぶっちゃけあのオペレータのキモいHello worldからC++の解説始めるの辞めたほうがいいよな
C++を勘違いする
0812デフォルトの名無しさん
2016/05/22(日) 22:37:49.67ID:75AjufZcそれはさておき、>>790への回答レスがSSOについて一言もふれていないのがヒサンだ
0813デフォルトの名無しさん
2016/05/22(日) 23:45:52.01ID:75AjufZc>これcathできるの?
むしろ何か問題でも?
まさか「catch(...)」の書き間違いを言っている訳でもあるまい
因みに、catchしたあと「throw;」で再スローすることは良くあるがプログラムを止めるのは尋常ではない
0814デフォルトの名無しさん
2016/05/22(日) 23:52:29.75ID:Mkios/tW0815デフォルトの名無しさん
2016/05/23(月) 00:29:49.99ID:eWgYvVNc関係ないのになんで触れないといけないの?
0816デフォルトの名無しさん
2016/05/23(月) 02:58:17.69ID:gGR7PrHc0817デフォルトの名無しさん
2016/05/23(月) 03:04:27.90ID:7DLF1n9wそうです、delete []してないのに
同じ変数pにnewで領域確保したのは異常だから
なにか便利な機能が異常検出してくれるのか期待しました
実際にコード書いて開放しないで二重にnewしても動作しました(メモリーリーク)
便利なアセンブラって事を思い出しました。w
0818デフォルトの名無しさん
2016/05/23(月) 03:14:06.12ID:eWgYvVNc便利なツール使えば検出してくれるよ
0819デフォルトの名無しさん
2016/05/23(月) 09:30:01.65ID:7s+pfWOrそれは出来る。
0820デフォルトの名無しさん
2016/05/23(月) 21:46:15.68ID:V4lIoCTU>>790の文面は『stringのアドレス』となっていても
実際のコードはstringが管理している領域のポインターを覚えているのだから
何故それが無効になったかを補足しないと質問者がモヤモヤする恐れが僅かに存在するから
0821デフォルトの名無しさん
2016/05/23(月) 22:30:48.10ID:V4lIoCTUというメモリ管理の常識を覆えすクソみたいな仕様が規格に追加されたことを思い出した
0822デフォルトの名無しさん
2016/05/23(月) 23:41:54.97ID:0BO+DHCSスレッドBがあるとこまで行ったらスレッドAを再開させるにはどうするのがベストなの?
環境はwin32 Win32APIでもC++だけでもいい方法があったら教えて
でも2chなんかじゃまともな返しこなそうその場合C++のいい質問サイト教えて
0823デフォルトの名無しさん
2016/05/24(火) 00:00:21.00ID:+SiSXtjcそれスレッド使う意味無くね?
0824デフォルトの名無しさん
2016/05/24(火) 00:12:43.40ID:FmhjQBy2それとSS
0825デフォルトの名無しさん
2016/05/24(火) 00:13:06.42ID:FmhjQBy20826デフォルトの名無しさん
2016/05/24(火) 00:22:46.70ID:NuLhgynvごめん説明間違ったかももっと正確にいうと"Bのある処理をAのフラグで開始させて"かな
詳しく言うと長くなりそうだから言わんけど仕方なくマルチスレッド使わざるおえない状況 でも全然わからん
とりま"Bがあるとこまで行ったらAを再開させる"のベストな方法がわからない 詳しいなら教えてください
0827デフォルトの名無しさん
2016/05/24(火) 00:33:07.78ID:kjz0y2x3Win32APIが出るてことはVCだから
MSDNフォーラムでたずねるのが良い
0828デフォルトの名無しさん
2016/05/24(火) 00:58:58.93ID:FmhjQBy2mutexとcondition_variableと何らかの変数で出来る。
http://cpprefjp.github.io/reference/condition_variable/condition_variable/wait.html
0829デフォルトの名無しさん
2016/05/24(火) 00:59:23.21ID:ETPtdjuVそれはまさに条件変数のつかいどころじゃね
条件変数はc++11なら標準ライブラリにある(std::condition_variable)
使い方はググればでてくる
0830デフォルトの名無しさん
2016/05/24(火) 01:12:37.18ID:kjz0y2x3>マルチスレッド使わざるおえない状況 でも全然わからん
俺もマルチスレッド分からんないんだけど、コピペでやるならともかく
まず、マルチスレッドを少しは勉強しないことにはどうしようもないんじゃないのか。
0831デフォルトの名無しさん
2016/05/24(火) 01:13:08.13ID:NuLhgynvありがとマジ助かる 詳しくはもう寝ないといけんから明日というか今日になっちゃうんだけど
Win環境でマルチスレッドやる場合c++11かWin32APIのマルチスレッドどっちがベストなの??
速さとかスレッドの管理とかで
0832デフォルトの名無しさん
2016/05/24(火) 01:18:26.33ID:NuLhgynv今リアルタイムで勉強してる… 排他制御が必要なとこ必要じゃないとことかね
ほんと危ないねマルチスレッドは
0833デフォルトの名無しさん
2016/05/24(火) 01:31:22.29ID:FmhjQBy2c++11のthreadはWindows環境ならwin32を使用して実装されてるから速さはC++11がWin32を越えることはないmsvcのランタイムライブラリの実装の質次第
気になるならベンチマークでも作ってみれば?
管理はC++11の方が楽 Win32はC言語APIだから途中returnとかでunlockわすれてデッドロックとか慣れてないとなりがちだけどC++11の方はRAIIでlockとかunlockできるから
0834デフォルトの名無しさん
2016/05/24(火) 07:05:29.64ID:mI5a3HBZSSOが無ければ無効にならないことが期待できるんだから、関係無いってことは無いだろ
http://codepad.org/y3wgNmpt
0835デフォルトの名無しさん
2016/05/24(火) 07:32:55.63ID:7si/lGiySuspendThreadとResumeThreadかな
あるいはコルーチン的なものをやりたいのかな
0836デフォルトの名無しさん
2016/05/24(火) 09:07:19.56ID:+9luGJWTスレッドAとBでお互いの実行タイミングを制御したいでいいの?
0837デフォルトの名無しさん
2016/05/24(火) 09:39:30.39ID:0HWQ/i8x期待しちゃいかんだろ
0838デフォルトの名無しさん
2016/05/24(火) 11:11:11.01ID:FmhjQBy2それたまたま同じアドレスで確保されたかヒープにゴミが残ってるだけで未定義動作なんだけど
さすがヒサンな人だなぁ
0839デフォルトの名無しさん
2016/05/24(火) 11:16:37.65ID:DKqX4Svaこんなクズによくレス返すやつがいるなw
0840デフォルトの名無しさん
2016/05/24(火) 13:16:22.19ID:K90OG2AKおまえみたいな煽りだけの無能のこと言ってるんだよ失せろカス
0841デフォルトの名無しさん
2016/05/24(火) 13:33:15.17ID:H5cxpY8A0842デフォルトの名無しさん
2016/05/24(火) 13:49:43.32ID:K90OG2AK0843デフォルトの名無しさん
2016/05/24(火) 20:48:29.63ID:mI5a3HBZcodepadはムーブの無いC++98か
なるほど、理解した
0844デフォルトの名無しさん
2016/05/24(火) 21:11:14.49ID:0HWQ/i8xたとえmoveが有効だとしてもリアロケーション後の状態について余計な仮定しちゃダメだよ
0845デフォルトの名無しさん
2016/05/24(火) 21:49:28.89ID:0rn85x5Nありがとなんも考えずWinAPI使ってたけどいろいろ考えてより安全そうなC++11の方で書き直すの検討するわ
>>835
その中ならSuspendThreadとResumeThreadかなこれ考えたけどたぶんしっかり管理しないとまずいだろうから
ベストな方法なのかよくわからない むしろevent?待機関数?の方でうまいことできないかと思ったんだけど何使えばいいかわかんないんだよね
まぁ今使ってるどっかのサイトでみたwhile(flag==0){}だけ書いて使うよりましな気がする
まだ調べてないけどcondition_variableらへんなら簡単にできるのかな?
>>836
うんAがあるとこまできたらBの特定の処理やらせてA再開させたい
0846デフォルトの名無しさん
2016/05/24(火) 22:29:00.56ID:T7JCD34Pまたまたご冗談を
「ダメ!絶対」の類だろそれ
0847デフォルトの名無しさん
2016/05/24(火) 22:36:57.60ID:NcOn82rz往生際悪いな
現行のC++ではstd::stringのmoveはnoexceptじゃないからstd::vectorのresize処理でmoveは使われないよ
0848デフォルトの名無しさん
2016/05/24(火) 22:47:50.62ID:YIrQj88wどして?
0849デフォルトの名無しさん
2016/05/24(火) 23:18:27.50ID:0rn85x5N「ダメ!絶対」なの?具体的にどう使えばいいかまだ考えてないけど適切に使えばいけそうな気はするけど
知ったかじゃなくて詳しい人なら合法なおすすめの方法教えてください
0850デフォルトの名無しさん
2016/05/24(火) 23:32:28.73ID:FmhjQBy2適切な位置で無駄なく止める方法が無いからお勧めしない
>>828 のリンク先にcondition_variableの使い方書いてあるからそれ読んだらいいよ
0851デフォルトの名無しさん
2016/05/25(水) 00:10:40.60ID:amNKmmnw理解した。サンクス
0852デフォルトの名無しさん
2016/05/25(水) 00:35:42.82ID:ww7whTPS規格(23.3.6.5/1)にはis_nothrow_move_constructible<T>::value==falseな場合であっても、
moveコンストラクタを使っちゃイカンという規定はないと思うぞ。
いずれにせよmove結果のstringの文字列ポインタが同じである保障などはどこにもないけど。
0853デフォルトの名無しさん
2016/05/25(水) 01:01:43.05ID:ww7whTPSはtrueじゃん
0854デフォルトの名無しさん
2016/05/25(水) 17:39:31.57ID:8pMELv+ygenID(9,c1);
delete [] c1
ってお行儀よくdelete []しないと壮絶にメモリーリークする(させた)
char *genID(int len){
char *id=new char[len+1];
...色々
return id;
}
って書いて
printf("%s\n",genID(10));
をループさせてgenID内で確保した領域を失念してたらジャブジャブメモリーリークww
VS2015使っていたので
http://hwada.hatenablog.com/entry/20080304/1204609100
のメモリーリーク検出を使ったら、リーク数が膨大過ぎてリーク出力が終わらなかった。orz
ようやくIDを登録して重複を弾きながらID毎に一意の番号を返すプログラムができた
変数名とかラベルをintの番号で管理できる
"aaa" -> 1
1 -> "aaa"みたいに使う
勉強も兼ねて組んでみた
0855デフォルトの名無しさん
2016/05/25(水) 18:28:32.35ID:SWdr3iFV0856デフォルトの名無しさん
2016/05/25(水) 18:38:34.84ID:8+OpaV010857デフォルトの名無しさん
2016/05/25(水) 18:45:14.29ID:dwHnrEg20858デフォルトの名無しさん
2016/05/25(水) 19:20:53.52ID:dN6Ungbk0859デフォルトの名無しさん
2016/05/25(水) 19:50:39.59ID:Hv1ZKWmi0860デフォルトの名無しさん
2016/05/25(水) 20:35:35.50ID:I3XxdNkJWindowsXPの頃に作った簡単なプログラムがWindws7で動きません。
ソースを紛失していて、実行ファイルしかないのですが、
動作としては、文字列入力フィールドがあって、
そこにDOS上で動く別のプログラム名を入力すると、そのプログラムをDOS窓を呼び出して実行するという簡単なものです。
XPでは問題なく使えていたのですが、Windows7では、DOS窓が開いただけで別プログラムが実行されません。
文字列操作でstrcat()とか使ってるので、それ関係かな?とも思いますが、
Windows7を入れた2台のPCのうち、1台は動かないのですが、もう1台では動きます。
動かないPCは、クリーンインストゥールしたPCなので、他の要因で動かないということは無いと思います。
Windows7のOS上で動くPCと動かないPCがあるということです。
システム構成は3770Kと3770で、ほぼ同じと言えます。
これはやはりプログラムを書き直しする必要があるでしょうか?回避策はあるでしょうか?
0861デフォルトの名無しさん
2016/05/25(水) 20:44:24.28ID:8+OpaV01DOSで動くプログラムは64 bit環境下では動かない。
0862デフォルトの名無しさん
2016/05/25(水) 20:51:02.10ID:I3XxdNkJWindows7は、どちらも64bitです。
DOS窓で動かすプログラムは、自分でDOS窓を呼び出してコマンド入力すると動きます。
自作プログラムでコマンドを送ると、動かないというわけです。
文字列操作関係の障害とは思うのですが。
0863デフォルトの名無しさん
2016/05/25(水) 20:57:21.56ID:8+OpaV01実行ファイル同士の相対パスは同じ?
0864デフォルトの名無しさん
2016/05/25(水) 20:58:56.68ID:pZYZ14wu文字列とか全く関係ないし
他のプログラム呼び出すプログラムは簡単ではない
0865デフォルトの名無しさん
2016/05/25(水) 21:01:22.50ID:1fRRpIXD0866デフォルトの名無しさん
2016/05/25(水) 21:01:58.98ID:8+OpaV01クリーンインストールした方では動かず、ごちゃごちゃしてる方では動くんだよね。
.NET FrameworkとかVisual Studio Runtimeとかはちゃんと入ってる?
というかエラーメッセージは出てる?
0867デフォルトの名無しさん
2016/05/25(水) 21:02:07.03ID:I3XxdNkJ同じパスで動かしていますのでOKです。
>>864
ユーザー権限かもしれませんね?
どこかに設定ありましたっけ?
0868デフォルトの名無しさん
2016/05/25(水) 21:12:41.93ID:I3XxdNkJ文字列入力フィールドに、外部プログラム名を入力するのですが、
自作プログラムでは、自動でスイッチを追加するようにしてます。
例:
[hogehoge]
と、入力すると、
[hogehoge -A -g]
と、スイッチ付きでコマンドが出力されてDOS窓で実行される。
hogehogeプログラムは、[hogehoge]だけだと実行されない仕様。
動かないPCのほうで、
[hogehoge -A -g]
と、スイッチまでまとめて入力すると動きました。
ということは、やはりstrcat()で、
[hogehoge][ ][-A][ ][-g]と連結するあたりで、不具合が生じていると思われます。
>>866
MFCなんですが、ライブラリが他のソフトによって更新されてるのかもしれませんね?
0869デフォルトの名無しさん
2016/05/25(水) 21:18:07.94ID:1fRRpIXD・実行フォルダにスペース含んでてスイッチの有無の判断を誤爆した
0870デフォルトの名無しさん
2016/05/25(水) 21:19:17.06ID:xoXxd0b50871デフォルトの名無しさん
2016/05/25(水) 21:24:48.19ID:xRl3BmuU0872デフォルトの名無しさん
2016/05/25(水) 21:27:10.10ID:I3XxdNkJスペースは、半角スペースで問題ないと思います。
>ランタイムの違いで、単純な連結がおかしくなるなんて考えがたいな
そうですねえ。
不思議ですが。
0873デフォルトの名無しさん
2016/05/25(水) 21:42:08.35ID:SLfE9uQ30874デフォルトの名無しさん
2016/05/25(水) 21:54:19.59ID:tc536l9fこれで動かないほうと動いてるほうで違いはある?
http://pasofaq.jp/windows/admintools/vistataskmgrcommand.htm
0875デフォルトの名無しさん
2016/05/25(水) 22:16:54.36ID:I3XxdNkJそこでパスが見られるのは初めて知りました。
ありがとうございます。
さっそく見てみたところ、やはり文字列の連結部分に、変な文字バケが入っていました。
それでプログラムがスイッチを認識できなかったと思われます。
0876デフォルトの名無しさん
2016/05/25(水) 22:36:53.33ID:tc536l9f文字化けは、↓でいうところのどこに入ってる?
[hogehoge][ ][-A][ ][-g]
化けて入っている文字は毎回同じ?
差し支えなければ、タスクマネージャのコマンドラインに表示されてる文字列をそのままここに書いて欲しい
プログラム名は書き換えても構わんから
0877デフォルトの名無しさん
2016/05/25(水) 23:04:03.21ID:ppSs3u1IありがととりあえずC++11の方で書き直し始めたけど>>828がよくわらかない
これ結局whileでスレッドの流れ止めてるわけだよね?ってことは別に>>845のwhile一行で問題ない気がするんだけど違うの?
0878デフォルトの名無しさん
2016/05/25(水) 23:07:26.98ID:89Cyo5VB0879デフォルトの名無しさん
2016/05/25(水) 23:10:13.49ID:ppSs3u1Iん?誰に何に対して言ってるの詳しく
0880デフォルトの名無しさん
2016/05/25(水) 23:12:35.13ID:ORQIc+8+違う。
0881デフォルトの名無しさん
2016/05/25(水) 23:14:51.24ID:I3XxdNkJ[hogehoge]Hlw[ ][-A][ ][-g]
こんな感じで、プログラム名の直後に3〜4文字程度文字化けが入ります。
strcat()で文字を連結してる部分です。
後ろの文字列もstrcat()で連結してますが、問題ないようです。
毎回違う文字になるようです。
何十回か試したところ、文字化けしないで実行されることもありました。
もしかしたら、文字列格納用の配列を初期化し忘れてるかも?
XPだと動いてたのですが。
0882デフォルトの名無しさん
2016/05/25(水) 23:25:28.97ID:tc536l9f>>もしかしたら、文字列格納用の配列を初期化し忘れてるかも?
そんな感じの動きだね
バッファのサイズがわからないけど
[hogehoge ][ ][-A][ ][-g]
みたいに、入力するファイル名の末尾をスペースで埋めてやれば安定して動くかも
あとできることは、ランタイムを更新したり、互換モードで実行してみるくらいかな
0883デフォルトの名無しさん
2016/05/25(水) 23:29:59.50ID:J8vTQ7fe0884デフォルトの名無しさん
2016/05/25(水) 23:33:29.17ID:ppSs3u1Iなんでよ…?まだ理解できてないみたいそもそもこの場合lock排他制御とかの必要性がわからないわど詳しいなら教えてください
0885デフォルトの名無しさん
2016/05/25(水) 23:39:45.19ID:I3XxdNkJありがとうございます。
上手くいかないようなら、ソースから書き直すことにします。
0886デフォルトの名無しさん
2016/05/25(水) 23:42:15.41ID:gyPde1unwhile一行だとcpu無制限に使うだろ
あともう一つ理由あるけど初心者には理解出来ないだろうから言わない
0887デフォルトの名無しさん
2016/05/25(水) 23:48:54.40ID:ppSs3u1Iうんwhileだとcpu使いまくるから書き換えたくてそもそも質問したんだよね
OSにスレッドの処理の割り当てやめさせるのが本質的で理想だとは思うんだよね
できればもう一つのほうの理由ほんとにあるなら教えてくださいお願いします概略だけでいいので
0888デフォルトの名無しさん
2016/05/25(水) 23:51:47.79ID:gyPde1unいや、だからcondition_variable::wait使ったらcpu使わないの
0889デフォルトの名無しさん
2016/05/25(水) 23:59:01.49ID:ppSs3u1Iマジで?ありがとlockとかwaitのなかどうなってるのかまったくわからんけど
そうならサンプル通り書くわ とりま書いてみてどうなるか試してみる
0890デフォルトの名無しさん
2016/05/26(木) 06:18:45.01ID:UjMbTLsx普通はイベントを使って、ただ待つだけ。
そして、ある事象が起こったら、相手からコールバックしてもらう
0891デフォルトの名無しさん
2016/05/28(土) 05:44:24.51ID:ZBQoLo6f勉強のためにstd:set の項目を読み込んだら
赤黒木ってなに?な状態、確認したけど最速のアルゴリズムじゃねーか
勝負にならない、しかたないので赤黒木のアルゴリズムで実装してみる
自作のset は探索が O(log N)で登録が O(log N+N/2)位かな
ソート用INDEXへの登録はコピーして移動するから一種のバブルソート
INDEXのお陰で配列みたいなアクセスができる
0892デフォルトの名無しさん
2016/05/28(土) 06:19:17.90ID:1gMYSkQh0893デフォルトの名無しさん
2016/05/28(土) 08:50:19.33ID:DN9P7VVw書き方理解してる?
0894デフォルトの名無しさん
2016/05/28(土) 09:56:16.68ID:9LifERBh(1)std::set相当ということですが、コンテナ要件は満たしていますか?
たとえば、イテレータを返す関数はありますか?
(2)std::mapとそのデータ構造は知っていますか?
インデックスアクセスが必要ならmapのキーをintにするだけでよいと思うのですが
(3)std::unorder_set/std::unorder_mapとそのデータ構造は知っていますか?
0895デフォルトの名無しさん
2016/05/28(土) 09:56:59.54ID:EvwqXBgm0896デフォルトの名無しさん
2016/05/29(日) 00:42:11.12ID:GHX5PbEy具体的にどうやんのそれ?condition_variableで書いてみたけど
while一行の十倍以上遅いんだけど…マジ助けて ここマジ速度いるとこだから困る
やっぱWinAPIの方が早いんかな?
0897デフォルトの名無しさん
2016/05/29(日) 00:44:54.07ID:GHX5PbEyspurious wakeupとかいうの防止のためらしいね でもここまで遅いとなるとベストな方法なのかわからん
0898デフォルトの名無しさん
2016/05/29(日) 00:56:14.41ID:lkZpmfRhまずコードを晒せよ…
君が抱えている問題の起こる最小限のコードな。
もちろん動くもの。
人に聞く時の常識だぞ…
0899デフォルトの名無しさん
2016/05/29(日) 02:03:14.24ID:44Nx9wpP0900デフォルトの名無しさん
2016/05/29(日) 02:08:31.47ID:Ck0Wf5U3polingに比べてcondの遅延が10倍程度ならそんなものという気もするし。
0901デフォルトの名無しさん
2016/05/29(日) 02:19:18.40ID:Ck0Wf5U3環境依存がどれだけか知らんけど。
http://askldjd.com/2010/05/16/spin-wait-vs-condition-variable/
0902デフォルトの名無しさん
2016/05/29(日) 02:40:55.51ID:WUv99Md/適当に比較コード書いた
vc++2015では遅延,cpu負荷は
polling:1144490ns,17%
cond:2012008ns,3%
十倍遅いのはおかしんじゃね
あとideoneの結果は信じないほうがいいと思う
0903デフォルトの名無しさん
2016/05/29(日) 03:56:58.04ID:Pf08Insu0904デフォルトの名無しさん
2016/05/29(日) 12:45:14.14ID:uvUIKndN教えてもらったページのサンプル通り書いたてかまずコピペして書いたつもりなんだけどなぁ
とりあえず今のとこのコードをマルチスレッドのとこだけ抜き出して超簡略化して晒してみる問題があったらどんどん教えてください
変数名とか関数名とか適当だしただの趣味でやってるから公のルールとかしらんから勘弁してくれ
あとまだ一個whileスピンロック?使ってるけど気にしないで
http://ideone.com/qrSOQS
0905デフォルトの名無しさん
2016/05/29(日) 14:20:10.37ID:f/sZpflrただそれは当然実行が遅くなる方に動くから、この中だけでは10倍遅くなる理由はわからん
そもそもなんの時間を比べたんだ?
0906デフォルトの名無しさん
2016/05/29(日) 15:01:58.63ID:vZz5+wdAあと、マルチコアCPUで完全にコアが余っている場合、スピンロックのほうが早いよ
ただ、CPUを無駄遣いするというだけであってだね
CPUを無駄遣いした結果、他の仕事ができなくなって巡り巡って遅くなることもあれば
問題にならず、遅くならない場合もある
これはその時のCPUの利用状況によりけりで、マルチタスクOSにおいては、不確定要素で誰もわからない
かなり細かな粒度で同期する場合はスピンロックのほうが良いかもしれない、ががががが、しかし
同期が問題になるほど細かな粒度でマルチスレッドを組むなという話であって
他の人が同期時間をそれほど問題視していないのは、そこに理由がある
同期は時間がかかるものだと最初からわかりきっているから
初めから大きな粒度でスレッドを扱うように設計段階から気を配っている
そうしないと速度が出ないし、マルチスレッドにする意味が無くなってくる
0907デフォルトの名無しさん
2016/05/29(日) 15:06:45.81ID:44Nx9wpP0908デフォルトの名無しさん
2016/05/29(日) 15:19:50.13ID:vZz5+wdASIMDはマルチスレッドと比べれば同期処理もいらないし、後の運用が遥かに楽だよ
一つのプログラムカウンタだけ相手していればよいからね
ただ、データ構造を練らなければならないので
最初からそのつもりで作ってないとダメという意味ではマルチスレッドと同じかもしれないが
マルチスレッドは出来るだけ根元の方からごっそりと
枝葉の細かな高速化はSIMDで (というか、SIMDは枝葉にしか使えない)
っていうのが基本でしょう
0909デフォルトの名無しさん
2016/05/29(日) 15:48:54.98ID:uvUIKndNflagってboolかせいぜいintなんだしスレッドの一方が読み取り専用他方が書き込み専用だしこの場合mutexとかいらないんじゃないの?
比べたのは上のコードから単純にmutexとかlockとかをコメントアウトした奴 ほんとなんでこんな遅くなるかよくわからん
>>906,908
ありがとやっぱ理論的に最速なのはスピンロックなんかな けど今のPCは4コアにIntelのHTついてるだけだからなぁ
てか908難しいなぁもうスピンロックかこれで目をつぶるしかないかも
0910デフォルトの名無しさん
2016/05/29(日) 16:04:28.02ID:K6JtIDQDたとえboolでもc++では正常に動く保証はない、あるのは同時読み込みの時だけ
てか比べた対象がlockをコメントアウトしたやつって排他処理一切してないってこと?それプログラムとして正常に動作する保証まったくないぞ
排他処理はしなきゃダメ
0911デフォルトの名無しさん
2016/05/29(日) 16:19:24.34ID:uvUIKndNアライメントされてるわけだしCPUで勝手にアトミックとなるんじゃないの?
どこで問題が生じるか理解できん
0912デフォルトの名無しさん
2016/05/29(日) 16:21:05.69ID:uvUIKndN0913デフォルトの名無しさん
2016/05/29(日) 16:24:26.75ID:Zak8dvzg実質的にはアトミックかもしれんけど、かも だけでソレを信じて足元すくわれることもあるから
なんとも以遠
0914デフォルトの名無しさん
2016/05/29(日) 16:32:40.45ID:Pf08Insu0915デフォルトの名無しさん
2016/05/29(日) 16:36:52.24ID:yiOXqgD7未定義動作って知ってる?
0916デフォルトの名無しさん
2016/05/29(日) 16:42:59.54ID:yiOXqgD70917デフォルトの名無しさん
2016/05/29(日) 16:46:32.04ID:uvUIKndNせっかくコードあげたんだから読んでよ…
0918デフォルトの名無しさん
2016/05/29(日) 16:51:03.32ID:Pf08Insuあれか?trueが01010101でfalseが10101010になってるような処理系の話か?
確かにそれは盲点だったわ
0919デフォルトの名無しさん
2016/05/29(日) 17:10:00.39ID:+RHbqb5qTwo expression evaluations conflict if one of them modifies a memory location and the other one accesses
or modifies the same memory location.
$1.10.21
The execution of a program contains a data race if it contains two conflicting actions in different threads,
at least one of which is not atomic, and neither happens before the other. Any such data race results in
undefined behavior.
c++としては保障されません。
特定の環境で動作するかどうかはコンパイラやcpuによって変わるんだから、それぞれの仕様書なりを熟読して保障されてることが確認できるなら使えばいいんじゃない
0920デフォルトの名無しさん
2016/05/29(日) 17:20:27.60ID:uvUIKndNhttps://msdn.microsoft.com/ja-jp/library/bb310595%28v=vs.85%29.aspx
によると最近のCPUは一回ののバス トランザクションで実行するそうなので
データ壊れることないしいらんと思うんだよね
0921デフォルトの名無しさん
2016/05/29(日) 17:34:44.56ID:5/hKFy9c0922デフォルトの名無しさん
2016/05/29(日) 17:56:00.51ID:uvUIKndN雑学として教えて 具体的にこういう状況で古くなく特殊じゃないCPUとかでアラインメントされたデータが壊れるって
なんのプロセッサなの? Intel以外のCPUとか知らんしGPGPUもやったことないし
てかalignmentって日本語だとアライメントか?アラインメントか?混乱してきたまぁこれはどっちでもいいけど
0923デフォルトの名無しさん
2016/05/29(日) 18:37:00.71ID:cHIEhEmq0924デフォルトの名無しさん
2016/05/29(日) 18:37:25.95ID:jMgBTeKSフラグの読み込みと,フラグの書き込みの両方があるのが普通
でないとフラグの意味がない
そしてフラグの読み込みとフラグの書き込みはアトミックでないといけない
0925デフォルトの名無しさん
2016/05/29(日) 18:46:43.75ID:uvUIKndNどういう意味?ごめん何がいいたいかよくわからん
0926デフォルトの名無しさん
2016/05/29(日) 18:52:44.29ID:jMgBTeKSフラグを読むだけじゃないのでは?実は後になって書き込みをしているのでは?
そうでないとフラグの意味がないのでは?
0927デフォルトの名無しさん
2016/05/29(日) 19:00:09.12ID:uvUIKndNん?flag普通に読み書きしてるけど?CPUでアトミックになるから大丈夫でしょって話でしょ
わけわからん
0928デフォルトの名無しさん
2016/05/29(日) 19:05:17.25ID:jMgBTeKS読みと書きの異なる命令を両方を順に行うのでは普通はアトミックにならないのでは?
それともフェッチ・アンド・アッド?コンペアアンドスワップ?
これは「普通に読み書き」ではないだろうね
結論:フラグをスレッド間で共有するのなら排他制御は必要
0929デフォルトの名無しさん
2016/05/29(日) 19:05:24.63ID:+RHbqb5qまた比較コード書いた
vc++2015,corei7-6700で遅延
polling_atomic
1055236ns
polling_atomic2
1245457ns
polling
1045074ns
なぜpolling_atomic2が遅いのかわからんが
atomic<bool>でもboolでもそんなに速度変わらない、別の時にはpollingのほうが遅くなったし
だったらatomic<bool>使えばいいでしょ、環境依存なしで動作保証されるんだから
0930デフォルトの名無しさん
2016/05/29(日) 19:22:58.57ID:Xg0gIt10主語をはっきり書かないと色々混乱する
> ん?flag普通に(スレッド1で)読み(スレッド2で)書きしてるけど?
なら
> CPUでアトミックになるから大丈夫でしょって話でしょ
は正しいと思う
0931デフォルトの名無しさん
2016/05/29(日) 19:25:01.59ID:+RHbqb5qそれ以外のクラスのインスタンスとかはmutexとかで排他制御する
何もしないという環境依存の処置はありえない
異論ありますか?
0932デフォルトの名無しさん
2016/05/29(日) 19:26:02.63ID:Pf08Insuだーから、そんな非現実的な粒度の小さすぎるコードで速度比較なんてなんの意味もないって
0933デフォルトの名無しさん
2016/05/29(日) 19:30:38.52ID:Pf08Insu神経質的にポータブルであることが要求される案件ならそうだね(遠い目)
0934デフォルトの名無しさん
2016/05/29(日) 19:36:45.30ID:uvUIKndNあーこういうこと?でいいんかな?コード上げたし上でそれいったからそういう前提で話進んでると思ってたけど
確かに比較される瞬間は怪しいけどでも問題あるバグにはならないと思うんだよね
>>931
C++使う時点で環境依存にならざるおえなくね?
0935デフォルトの名無しさん
2016/05/29(日) 19:37:58.51ID:Xg0gIt10俺ならこうする
って言う意見なら特に異存はないよ
0936デフォルトの名無しさん
2016/05/29(日) 19:41:15.16ID:cHIEhEmq0937デフォルトの名無しさん
2016/05/29(日) 19:48:53.81ID:+RHbqb5q粒度ってどういう意味で使ってるの?粒度って処理が適切な単位で分割されているって意味でしょ
>>934
>C++使う時点で環境依存にならざるおえなくね?
意味わからんc++が使えるっていうのはc++の規格に沿っているって意味で
規格に沿ってれば俺の方法では環境によらないんだが
0938デフォルトの名無しさん
2016/05/29(日) 19:53:21.37ID:jMgBTeKSフラグとして使うのならば,スレッド1で読み,スレッド1で書き込む,となるだろう
その読み書きでアトミックでなければ,いろいろと問題がおきるのでは?排他制御ができてないのでは?
0939デフォルトの名無しさん
2016/05/29(日) 20:04:16.48ID:Pf08Insu1つのflagを変化させるだけの処理なんて非現実的で粒度が小さすぎるからそんなものの処理速度を比較したって全然無意味だって言ってるの分かんない?
>>929のコードには他にも突っ込みどころ満載だけどね
例えば
std::this_thread::sleep_for(std::chrono::seconds(1));
の精度について何も考えてないぽいところとか
こんなもので速度比較なんてバカバカしいと言ってるだけ
0940デフォルトの名無しさん
2016/05/29(日) 20:04:52.52ID:Xg0gIt10> フラグとして使うのならば,スレッド1で読み,スレッド1で書き込む,となるだろう
ならない
単純にスレッド2が書き込むまでスレッド1が待つケース
0941デフォルトの名無しさん
2016/05/29(日) 20:09:43.14ID:jMgBTeKS待つって‥満足な排他制御も使わずにどうやって実現するんだ?
0942デフォルトの名無しさん
2016/05/29(日) 20:29:39.71ID:+RHbqb5q100回試したとしても精度がよくないことはわかってるよ
でもなにもデータがないまま語るよりは全然いいだろ
批判してないで粒度、精度が高いプログラムっていうのを自分で書いて実験結果を見せてくれよ
0943デフォルトの名無しさん
2016/05/29(日) 20:34:31.74ID:wNaC0f5W>100回試したとしても精度がよくないことはわかってるよ
>でもなにもデータがないまま語るよりは全然いいだろ
それをデタラメって言うんですよ。
0944デフォルトの名無しさん
2016/05/29(日) 20:40:03.06ID:Xg0gIt10スレッド1が単純にビジーループで待てばいいだけ
資源確保じゃないから君が思ってるレベルの排他制御は不要
>>942
粒度厨はスルーでいいかと
0945デフォルトの名無しさん
2016/05/29(日) 21:14:32.94ID:8Jl23sl6>批判してないで粒度、精度が高いプログラムっていうのを自分で書いて実験結果を見せてくれよ
確かにそうだよね。
0946デフォルトの名無しさん
2016/05/29(日) 21:22:48.20ID:5/hKFy9c排他制御もメモリバリアもないビジーループはクソ
0947デフォルトの名無しさん
2016/05/29(日) 21:25:21.54ID:yiOXqgD7例えばハードウェアと実行環境が固定されてい て、そのプログラムがコアを使いこなしていないかつ、他のプログラムの動作を妨げてもいいとか
0948デフォルトの名無しさん
2016/05/29(日) 21:43:17.80ID:5/hKFy9cビジーループを持ち出さないといけないような特殊な場面だからこそCやC++が登場するんだろ
ビジーループでも100ナノ秒超えたら同期オブジェクトでの待機に切り替えるみたいな判断は当然必要
0949デフォルトの名無しさん
2016/05/29(日) 21:52:50.40ID:uvUIKndN結局やっぱ上記のコードで排他制御は不要って結論で正解だよね
てか聞いてもいないケース持ち出してきてこれは違うって言いだすのやめてくれ
0950デフォルトの名無しさん
2016/05/29(日) 21:58:16.72ID:AaQnAGiu0951デフォルトの名無しさん
2016/05/29(日) 21:59:19.58ID:yiOXqgD7お前の想定する環境で問題ないなら別にいいけどなぜそこまでatomicを使いたくないのか解らんわ
Intelのintとかatomicなのが保証されてる場合は実行コスト無いぞ?
0952デフォルトの名無しさん
2016/05/29(日) 22:13:28.24ID:Xg0gIt10排他制御は関係ないだろ
0953デフォルトの名無しさん
2016/05/29(日) 22:14:37.13ID:uvUIKndN何を勘違いしてるかしらんが使いたくないなんて一言も言ってないぞ
技術的にこの環境でatomicないとどういうバグがなぜ発生しうるのか?結局不要なのか?の結論がしりたいだけであって
ビジーループについても速さを考えるかcpu使用の問題を考えるかいろいろ考えて
なにが今回のケースや環境にあってるかで採用するか決めるつもりだしね
あと移植性に関しても今回のケースの話ではない
0954デフォルトの名無しさん
2016/05/29(日) 22:20:41.75ID:jYTx1y8a例えば、VS2008から2015まで互換性があるコードじゃないとならんとか。
どこの環境で必要になるか分からんような互換性のことを挙げるくせに
C++11は当然使えると思ってるようなところは違和感あるわ。
0955デフォルトの名無しさん
2016/05/29(日) 22:24:45.69ID:uvUIKndNそれ言えてるw
0956デフォルトの名無しさん
2016/05/29(日) 22:26:34.09ID:uhlxBvmX0957デフォルトの名無しさん
2016/05/29(日) 22:35:43.71ID:yiOXqgD70958デフォルトの名無しさん
2016/05/29(日) 22:35:44.17ID:vZz5+wdA本来想定しているスレッドBで実行したい処理が何かあって
それが結構な時間がかかるなら
同期にかかる時間はそれに比べて無視できるって話だぞ
当たり前に、1秒とか時間がかかるのならスピンロックは論外だぞ
同期にかかる時間だけを100万回測定して
スピンロックの方が早いから、じゃースピンロックでって話にはならないぞ
スピンロックを使ってよいのは、マルチスレッドにする意味がないぐらい
短い時間で処理が終わる場合だけだぞ
俺ならそんなスピンロックでも良いような
短い時間で終わる事が確定している処理を別スレッドに投げたりしないし
もしくは、もっと大きな粒度にする
要するにどちらに転んでもスピンロックなんかまず使わねー
0959デフォルトの名無しさん
2016/05/29(日) 22:48:44.85ID:1g2uTEkW0960デフォルトの名無しさん
2016/05/29(日) 23:00:18.83ID:44Nx9wpP0961デフォルトの名無しさん
2016/05/29(日) 23:08:57.18ID:HnF0l+myおるで
0962デフォルトの名無しさん
2016/05/29(日) 23:20:49.76ID:uvUIKndNだから前も言ったけどマルチスレッド使わざるおえない状況なんだってもう絶対に絶対にここじゃ詳しく書かんけどね
本来マルチスレッドにする意味がないぐらい短い時間の処理を短い時間で終わらせたいケースなの
目的は並列処理による高速化じゃないしそこに書かれてるのは全部考えてる
てか粒度粒度ってなんなんだよマジで
0963デフォルトの名無しさん
2016/05/29(日) 23:21:16.64ID:44Nx9wpPどもw
0964デフォルトの名無しさん
2016/05/29(日) 23:28:02.48ID:HnF0l+my並列処理による高速化以外が目的なら、
スレッドじゃなくてプロセス使った方が綺麗に書けるんじゃね?
目的が見えてこないけど。
0965デフォルトの名無しさん
2016/05/29(日) 23:33:04.77ID:8Jl23sl6俺も粒度(スレではりゅうどではなくつぶどと読むのが正しい)なによだけど、
きっと粒度ってなんだよって言う時点でマルチスレッドを使っては
いけないレベルなんじゃないのか。
クレクレじゃなく少しはマルチスレッド基礎を勉強しろよって言われるんじゃないのか。
0966デフォルトの名無しさん
2016/05/29(日) 23:36:25.28ID:Pf08Insuまさかその「処理」の度にスレッドを起こそうとしてるのか?
0967デフォルトの名無しさん
2016/05/29(日) 23:37:33.22ID:Ck0Wf5U30968デフォルトの名無しさん
2016/05/29(日) 23:42:26.78ID:XzZ2BH8Cもう動いたらokということにして好きにしたらいいんじゃね?
0969デフォルトの名無しさん
2016/05/29(日) 23:43:16.86ID:uvUIKndNまぁありがとプロセス間通信ってこと?それさらに遅くなりそうだから怖いし…
メモリ共有してないとのちのち困りそう
>>965
そうじゃなくて粒度粒度言ってる奴はなんなんだって話だよ
>>966
だから違うって
0970デフォルトの名無しさん
2016/05/29(日) 23:49:56.02ID:8Jl23sl6>マルチスレッドにする意味がないぐらい短い時間の処理
をマルチスレッドにすると本来やりたい処理よりスレッドの同期とかの方の時間が長くなるから
スレッドにする意味がないって言ってんじゃないのか
スレッドの同期とかより長い時間の処理(つぶど)をさせるようにしないと意味なし
こんなことをつぶどがどうのこうのって言っていると思うんだが
0971デフォルトの名無しさん
2016/05/29(日) 23:51:53.48ID:Pf08Insu具体的な処理が分からないんじゃ誰も何も言えないよ
1つのフラグを書き換えて無意味な一秒待ちするコードを見せられても
0972デフォルトの名無しさん
2016/05/29(日) 23:52:25.12ID:uvUIKndNもうこれでいい気がしてきたわ
0973デフォルトの名無しさん
2016/05/29(日) 23:54:48.47ID:Pf08Insu0974デフォルトの名無しさん
2016/05/29(日) 23:55:51.55ID:uvUIKndNだからそれはわかってるって… スレッドにわけないとどうしても実現しえない処理があるからスレッドにする意味があるだけで
0975デフォルトの名無しさん
2016/05/29(日) 23:56:21.83ID:yiOXqgD7MSVC使っててオプション変更しないARM向けにビルドしないならvolatileでいいよ。
https://msdn.microsoft.com/ja-jp/library/12a04hfd.aspx
MSDNですらスレッド間で使うなって書いてある
0976デフォルトの名無しさん
2016/05/29(日) 23:57:09.83ID:uvUIKndNありがとちょっと調べてみる
0977デフォルトの名無しさん
2016/05/29(日) 23:58:44.02ID:hLdo4DXj0978デフォルトの名無しさん
2016/05/29(日) 23:59:12.05ID:8Jl23sl6ずばり(他から見て)どんな糞コードでもお前がそれで良いって判断ならそれで問題ない。
お前のプログラムに採用するか決めるのはこのスレの連中じゃない
0979デフォルトの名無しさん
2016/05/30(月) 00:07:24.73ID:eBg5g0aW言えてるな でも助かるよこんな100レスに以上にわたって案とかコードとか
俺抜きとかでも議論してくれてて いろいろ考える材料になったわありがととりま寝る
0980デフォルトの名無しさん
2016/05/30(月) 01:19:02.55ID:izE0wMtN>スレッドにわけないとどうしても実現しえない処理がある
んなの無いよ
0981デフォルトの名無しさん
2016/05/30(月) 01:42:22.04ID:osdNY1C4安全なマルチプロセスにすべき
0982デフォルトの名無しさん
2016/05/30(月) 02:00:19.07ID:AMtRAhxB0983デフォルトの名無しさん
2016/05/30(月) 06:57:39.12ID:hyGWFe6M今回の話には無関係
それは 更新 + 更新or読み出し のケースの話
0984デフォルトの名無しさん
2016/05/30(月) 07:02:34.22ID:hyGWFe6M> そうじゃなくて粒度粒度言ってる奴はなんなんだって話だよ
だから粒度厨はスルーしろ
って言われてただろ
なんかの本とかを読んで一時的に信者になってる状態みたいだから説得試みても無駄だと思う
0985デフォルトの名無しさん
2016/05/30(月) 07:15:23.94ID:oTOIpsxJと言ってるだけなので
当該分野の基礎知識が無いのだから仕方がない
0986デフォルトの名無しさん
2016/05/30(月) 07:23:30.85ID:NdC8+XxGえ?今回は更新+読み出しだろ?
0987デフォルトの名無しさん
2016/05/30(月) 07:33:34.89ID:NdC8+XxG今回の話に並列プログラミングが関係するとも思えないけどね。
パフォーマンスのためにスレッド使うわけじゃないって言ってるわけだし
その割には無駄にパフォーマンスに拘る所が謎だけど
0988デフォルトの名無しさん
2016/05/30(月) 07:40:02.54ID:hyGWFe6M書き込み + 読み出し
0989デフォルトの名無しさん
2016/05/30(月) 08:47:12.93ID:9f9My9NTそれなら尚の事マルチプロセスプログラミングで良いと思うんだけど。
0990デフォルトの名無しさん
2016/05/30(月) 10:39:14.27ID:oNejIaUN何が違うの?
てかじゃあどの部分が今回の話してる場所なの?
0991デフォルトの名無しさん
2016/05/30(月) 11:09:46.98ID:NdC8+XxGそんなのBoost.asio使えばの一言で終わるわ
0992デフォルトの名無しさん
2016/05/30(月) 12:44:12.80ID:hyGWFe6M更新 = 読み出し + 書き込み
0993デフォルトの名無しさん
2016/05/30(月) 16:47:36.56ID:NdC8+XxGお前偉そうな事言った割にそんな基本が解ってたら間違える事もないような勘違いしてんだな。
ID:hyGWFe6M がスルー推奨筆頭に
0994デフォルトの名無しさん
2016/05/30(月) 17:33:41.34ID:JHrCuxTHでも他で使われている場所を見れば単に変更ぐらいの意味で使ってるのが分かる
0995デフォルトの名無しさん
2016/05/30(月) 17:52:18.89ID:hyGWFe6M0996デフォルトの名無しさん
2016/05/30(月) 17:55:12.40ID:hyGWFe6M排他の話をしてて、Write と Modify の区別がつかないのは不味いだろ
Modify = Read-Modify-Write
ってわかってるよね?
0997デフォルトの名無しさん
2016/05/30(月) 18:01:42.77ID:NdC8+XxGやべぇなw
readと、readが競合しない事ぐらい解るよね?
お前のいう変更の定義だと
readとread+writeが競合する事になるわけだけど、read同士は競合しない、つまりreadとwriteが問題なわけ
これで理解できないなら理解力が絶望的に不足してるからスルーするよ
0998デフォルトの名無しさん
2016/05/30(月) 18:03:27.28ID:Xl0N1v2sそれが2chのルールだが。
0999デフォルトの名無しさん
2016/05/30(月) 18:08:53.26ID:5KszwDfD1000デフォルトの名無しさん
2016/05/30(月) 18:10:34.67ID:4w65dfRj10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
life time: 286日 11時間 0分 16秒
10021002
Over 1000Thread運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
http://pink-chan-store.myshopify.com/
レス数が1000を超えています。これ以上書き込みはできません。