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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。

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

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

前スレ
【初心者歓迎】C/C++室 Ver.94【環境依存OK】 [転載禁止]??2ch.net
http://peace.2ch.net/test/read.cgi/tech/1417179292/
2憲法に守られる在日スパイ・創価・ヤクザ:2015/02/14(土) 09:44:21.91 ID:jU7Z8cXF
マスコミが絶対に触れない事実
注)自民党以外が在日から帰化したスパイ、またはその影響下にあると仮定してご覧ください。

よく言われる
失われた20年 → 約20年前 初めて自民党が単独過半数を割る(小沢の新生党が与党介入)※
失われた15年 → 約15年前 自公の連立政権が始まる  (公明党の与党介入) /

※このとき、初めて80円/ドルという超円高誘導されて、日本の製造業は衰退・空洞化
 =中国・韓国が台頭し始める。日本の技術者が、大量に韓国などに引き抜かれるようになる。
 イオン(民主党・岡田家)や大型パチンコ店が、地方経済や商店街を食いつぶすための、
 大店立地法が成立。在日パチンコ屋のCM・チラシが解禁・大型チェーン展開が始まる。
 日本の学力低下が目的の「ゆとり教育」の本格導入。(後ろ2つは、17年前。)
※このときの羽田首相(新生党)の顔がモロに半島顔。
※このとき、小沢の新生党を全力で選挙支援したのが、創価学会といわれる。
※このとき、自民「単独」政権(公明抜きの単独2/3議席)の復活に、圧倒的不利な
 比例選挙制度へ法改悪↓

2014総選挙の比例当選率 
政党名     自民  公明  民主  維新  共産
比例区      68   26    35   30   20
合計数      291   35    73   41   21

比例当選率  23%   74%   48%  73%   95%  ←※

共産・公明・維新は、比例制度を廃止すれば消滅w 

参考)
民主党は、超円高誘導でパナソニックやシャープ、ソニーを潰す気だった?
http://www.youtube.com/watch?v=iG_oaqU0pEM
帰化朝鮮人ばかりが政治家を目指す国?日本
http://www.youtube.com/watch?v=CxIGOhFT4g8  続く
3憲法に守られる在日スパイ・創価・ヤクザ:2015/02/14(土) 09:44:51.39 ID:jU7Z8cXF
続き 日本に借金を抱え込ませたのは小沢一郎(たぶん在日帰化)。

小沢が430兆円
村山(旧社会党:この人も帰化?)内閣がプラス200兆円 
トータル630兆円
(詳しくは日米構造協議で検索)

今ある借金は、これとその利息では?

小沢は、自民党時代に日本に爆弾を抱えさせた上に、そのバラマキ公共投資で得た
支持基盤をごっそり自民党から引き抜き(仲間を引き連れ離党)、
自民を単独過半数割れに追い込んだ。
そして、第3極政党(新生党→公明党)を介入させ、韓国や在日へ利益誘導してきた。
日本を借金大国にしたのは自民党だ!と、自分で仕込んだ火種を野党側から
追求する自作自演劇によって、民主党への政権交代につなげた。
※自民党以外の議員は、日本姓を名乗る帰化朝鮮人か、その影響下にあると仮定。

という流れではないでしょうか。
4デフォルトの名無しさん:2015/02/14(土) 10:43:09.31 ID:81zUaPG6
こんなこと考えた俺天才!的な糞コード
argc--;
argv++;
5デフォルトの名無しさん:2015/02/14(土) 11:23:41.71 ID:EUuNKb/r
そんなコピーのしかたをするのは領域の最後までに必ず\0がある文字列だけだろ?w
コピー先にコピー元より狭い領域を指定するのもバカだしw
6デフォルトの名無しさん:2015/02/14(土) 18:13:46.17 ID:bwAzeASM
tgmathって使ってる人いる?
正直、要らん仕様だと思うんだ
7デフォルトの名無しさん:2015/02/14(土) 18:49:56.86 ID:L7bxzS28
C++のオーバーロードが羨ましくてしかたないんだろうなあ
っていうあれか
8デフォルトの名無しさん:2015/02/14(土) 21:07:23.35 ID:+QnWCZ/d
C++のオーバーロードは仕様がとんでもないことになっているからね。
13節丸ごと説明にかけてると思ったら実は14節テンプレートの
パーシャルオーダリング含めたC++言語仕様で最も難解な内容だったし。
Cのtgmath程度が健全なレベル。
9デフォルトの名無しさん:2015/02/15(日) 01:40:34.87 ID:GySGCLGy
C++オーバーロードはみんな使ってる
Cの<tgmath.h>は誰もつかってない
これが真実
10デフォルトの名無しさん:2015/02/15(日) 01:44:05.69 ID:Yq9FTKtU
テキストエディタで書いて最短コンパイル一発で実行ファイル生成ってのを諦めてしまえばもっとシンプルに出来ると思うんだよね
プロトタイプは実装コードを解析して必要とするオーバーロード関数や外部識別子を持たせるようにするとかさ
11デフォルトの名無しさん:2015/02/15(日) 02:09:09.33 ID:+lcmmVEa
バカの考えることはたいていは間違ってるよ
12デフォルトの名無しさん:2015/02/15(日) 02:28:18.83 ID:KyJI8M6v
煽る人は大抵中身無いよ
ブーメランって言いたければ言えば?
13デフォルトの名無しさん:2015/02/15(日) 07:06:16.00 ID:Qwk5nQv8
>>10
もう、そうなってるとおもうよ、VC++ あたりはどうだかしらないが
ソース -> オブジェクト
オブジェクト + ライブラリ-> 実行形式
14デフォルトの名無しさん:2015/02/15(日) 07:56:43.33 ID:2lTOko0D
>>10
・グローバルでセミコロンで終わる宣言の廃止
・クラス定義を変数宣言や関数のプロトタイプ宣言と一緒に行わない文法
この二つがあれば複数ファイルを同時にコンパイルできることはC#で実証されている
Javaのようにクラス名からそのファイルを探す仕組みは無くてもいい
15デフォルトの名無しさん:2015/02/15(日) 09:09:37.81 ID:+lcmmVEa
現行の C でも C++ でも複数ファイル同時コンパイルくらいできるし
普通 make するときは -j オプションつけるじゃん。速いから。
メジャーな IDE、VC や xcode は勝手にやってくれるし。
16デフォルトの名無しさん:2015/02/15(日) 12:25:25.83 ID:/CNeEnsG
queue<pair<string,bool> > cutInStack;
cutInStack.push(make_pair<cutInImageFileName,reverse>);

エラーが起きるんですがなんでかわかりません
17デフォルトの名無しさん:2015/02/15(日) 12:36:26.48 ID:lDLakZlT
make_pair(cutInImageFileName,reverse)にすればいいと思うよ
18デフォルトの名無しさん:2015/02/15(日) 13:37:57.41 ID:+ULz+cy7
前スレでポインタの質問した者ですが、皆さんのおかげでポインタのイメージががっちりつかめました。
ありがとうございます。
19デフォルトの名無しさん:2015/02/16(月) 14:20:55.97 ID:L0EKTU4N
centos 6で、libtermcap.a が見あたらないのですが、入手方法についてどなたかご存じではないですか
20デフォルトの名無しさん:2015/02/16(月) 18:07:52.66 ID:93EvvdXC
if( *a++ = *b++ ){
・・・
}

の時、
@aが\0だったら抜ける
Abが\0だったら抜ける
B*aに*bを代入する
Caを加算する
Dbを加算する
E・・・の実行
で合ってますかね。
21デフォルトの名無しさん:2015/02/16(月) 18:17:52.25 ID:swezBUYA
3
4
5
1
6
22デフォルトの名無しさん:2015/02/16(月) 18:28:13.80 ID:zwe4WhUj
*bを*aに代入
*aが\0なら抜ける

a++, b++のタイミングは知らないが
いずれにせよ加算されてるはず
23デフォルトの名無しさん:2015/02/16(月) 18:51:03.76 ID:93EvvdXC
はー、なるほど、

(*a=*b)で条件が(*a)になって (*a) だけが評価されるようになるんですね。
代入の後に加算するから、加算した後の*aが\0だったら抜けるって事ですね。

はー、なるほど、目から鱗ですわ
24デフォルトの名無しさん:2015/02/16(月) 19:14:18.46 ID:9v9OeP8e
いや、aを加算する前の*aが\0だったら抜ける
後置++はそういう動き
2522:2015/02/16(月) 19:20:34.60 ID:zwe4WhUj
>>23
ごめんごめん、多分誤解を与えてる。

> 代入の後に加算するから、加算した後の*aが\0だったら抜けるって事ですね。

加算も加えて書くと、代入→判断→加算ね。

判断の後に加算するから、ポインタはそれぞれ判断に使った位置の、一個後ろさすことになる。
2620:2015/02/16(月) 19:40:17.40 ID:93EvvdXC
なるほど、

後置++は式全体(この場合ifの判断も含む)を実行した後に加算されるって事ですね。
(*a=*b) で代入して、(*a)がfalseか判断して、if( )の式が終わった時点でa++,b++を実行って事ですね。

よく分かりました。勉強になりました。
27デフォルトの名無しさん:2015/02/16(月) 19:50:52.03 ID:OwoQ0wy7
その 式の終わった時点=副作用完了点 だけども、
規定してるのは、「ここまでには加算が済んでいる」であって
「ここ以降で加算する」じゃない微妙なお話
28デフォルトの名無しさん:2015/02/16(月) 22:59:12.48 ID:DCT6jM0C
>>26
副作用完了点については
ttps://www.jpcert.or.jp/sc-rules/c-exp30-c.html
とかを参照

あと部分式や関数の引数の評価順序は特に定められているものを
除いては規定されていないことも関連して覚えておくとよいです。
ttps://www.jpcert.or.jp/sc-rules/c-exp10-c.html

例)a = f() + g(); で a に代入されるのはいつでも f() と g() を加えたものだが、
f() と g() のどちらが先に実行されるかは決められていない。
29デフォルトの名無しさん:2015/02/16(月) 23:13:48.56 ID:6Hn+VZlk
cout << file.getc() << file.getc()
とやったとき、読んだ順に書いてくれないということ?
30デフォルトの名無しさん:2015/02/16(月) 23:18:24.93 ID:uhKkujbi
糞言語の糞ライブラリの洗礼だな
31デフォルトの名無しさん:2015/02/16(月) 23:49:38.04 ID:m1gpJ7KB
>>28
>特に定められているものを除いては

わざわざ探してきて url 貼ってるんだから読んでよ
32デフォルトの名無しさん:2015/02/16(月) 23:57:02.61 ID:0bcBlPt4
operator<< は特に定められてないよな?
3320:2015/02/17(火) 00:00:03.22 ID:TDLatExy
はー、なるほど。
副作用完了点までにある式は、特に定められた評価順序が有る物以外は同じで、
左から右に実行されるとかが保証されていないって事ですね。

で、その特に定められた評価順序以外で、
左から右とか右から左みたいに評価順序に依存するような式は駄目って事ですね。

質問して良かったですよ。少し賢くなりました。
34デフォルトの名無しさん:2015/02/17(火) 00:00:36.57 ID:MxR2EwY1
operator<< も operator+ も
特に定められてないことについては同じ
3528:2015/02/17(火) 00:02:54.49 ID:40ZPjrIU
>>31
どこに貼ってる?
36デフォルトの名無しさん:2015/02/17(火) 04:01:39.41 ID:Yc/tlv/f
> +の評価順序も定まっていない件
これはCの場合はって事でいいんかな、
それともC++のoperator+も定まっていない?
定まっていない時は、operatorの種類は限定されている?

というのも、&&を利用したテクニックとしてよく
bool continue = true;
continue = continue && f1();
continue = continue && f2();
continue = continue && f3();

というコードを書くが、operatorの種類に関わらず定まっていないのなら、
continueが途中でfalseになったとしても、その後のf2やf3が環境によっては評価されてしまうからまずい書き方になる
37デフォルトの名無しさん:2015/02/17(火) 08:02:04.71 ID:HzudLjaJ
>>36
演算子による
false & f(); はf()が評価されるが
false && f(); は評価されない
38デフォルトの名無しさん:2015/02/17(火) 08:28:26.81 ID:z7G8tE0v
>>29
ダメだろ
39デフォルトの名無しさん:2015/02/17(火) 12:44:01.01 ID:6GSUCG0L
>>36
c,c++で項の評価順が定まっているのは組み込みの && || , ? の四つの演算子
それ以外の組み込み演算子とオーバーロードしたoperatorの場合は定まっていない
40デフォルトの名無しさん:2015/02/17(火) 13:25:14.02 ID:fNnscWpf
cout << file.getc() << file.getc() << file.getc() << file.getc() << file.getc();

これに"hello"と与えて"hello"と出力される保証はないということか?
41デフォルトの名無しさん:2015/02/17(火) 13:30:38.88 ID:fNnscWpf
遅くなっても良いから、評価順序が確定してるC++が欲しくなった
42デフォルトの名無しさん:2015/02/17(火) 13:34:38.81 ID:LvyQFEL3
((((cout << file.getc()) << file.getc()) << file.getc()) << file.getc()) << file.getc();
お"ぇ"
43デフォルトの名無しさん:2015/02/17(火) 14:05:29.17 ID:6GSUCG0L
>>40
保証はない

ちなみにcでのこういうのも同じで保証はない
printf("%c%c%c%c%c", fgetc(fp), fgetc(fp), fgetc(fp), fgetc(fp), fgetc(fp));

>>42は正しく理解できていない人の典型的な例
その式は>>40と等価の式で実行結果的には余分な括弧はまったく無意味
44デフォルトの名無しさん:2015/02/17(火) 14:27:48.03 ID:iGz/Dczk
え?
括弧ぶち抜いて計算順序が不定になるの?
それ本当?
45デフォルトの名無しさん:2015/02/17(火) 14:29:32.39 ID:iGz/Dczk
あ、ごめん。話を見間違えてた。
括弧で制御できるのは計算順序だけで、「計算に使われる個々の要素」がいつ評価されるかとは別の話だった。
すまん。44は忘れて。
46デフォルトの名無しさん:2015/02/17(火) 15:00:05.33 ID:gdHZDZHG
昔は速度や実装の都合で仕方ないこともあっただろうけど
今となっては評価順序確定的な方がメリット大きそう
47デフォルトの名無しさん:2015/02/17(火) 16:01:39.12 ID:Yc/tlv/f
そうだろうけど、それを同じ言語の中で行うのは割と危険だと思う、
環境依存を増やすのは、動かしてみたらいけたという手法で×を貰う人がさらに増える事に繋がる
48デフォルトの名無しさん:2015/02/17(火) 19:18:12.76 ID:HzudLjaJ
言語仕様で決めるとコンパイラの最適化を阻害する
とゴネる人たちをまとめて国際化規格にするための妥協の産物。
49デフォルトの名無しさん:2015/02/17(火) 22:26:01.36 ID:J4a0mND/
質問があります。環境はMinGW-w64です。
struct A {
int *p; size_t s; int u;
};
なぜsizeof(struct A)が24になるのでしょうか。
私は20になると思ったのに。
50デフォルトの名無しさん:2015/02/17(火) 22:32:12.07 ID:ToPvHKqH
構造体のデフォルトアライメントが8バイトになってるんでないの?知らんけど
51デフォルトの名無しさん:2015/02/17(火) 22:32:37.78 ID:xgmY9b+s
alignを指定してないから
コンパイラはalignを指定していない構造体に、最適化のために適宜パディングを入れていい
52デフォルトの名無しさん:2015/02/17(火) 22:36:49.93 ID:S2/s/wa6
>>49
X ar[2];
sizeof arがsizeof(X)の2倍にならなかったら嫌だろ?
53デフォルトの名無しさん:2015/02/17(火) 22:38:38.86 ID:J4a0mND/
alignとpackの違いって何ですか?
packは
#include <pshpack4.h>
...
#include <poppack.h>
などで指定するヤツですよね?
54デフォルトの名無しさん:2015/02/17(火) 22:51:23.08 ID:fCIGE3+K
的を外した説明ばかりでわろたw
55デフォルトの名無しさん:2015/02/17(火) 22:52:02.91 ID:J4a0mND/
>>51-52
ありがとうございます。
56デフォルトの名無しさん:2015/02/17(火) 23:57:09.67 ID:T1Z1ruGP
>>53
alignは型(クラス)全体のアラインメント
packはクラスの中での各データメンバのアラインメント
を指定するもの
57デフォルトの名無しさん:2015/02/18(水) 00:43:01.28 ID:fxWFvcN5
Win32APIを利用してC/C++でテキストエディタを作っています。
アンドゥ/リドゥはどうやって実装すればいいのでしょうか?
メモリの許す限りアンドゥできるようにしたいと思っております。
テキスト全体を丸々別のメモリ領域にコピーしていけば簡単ですが、文字1つ打ち込むたびに丸々コピーするのもおかしい気がしますし、
かといって様々な操作を記録していくのも管理が大変な気がします。
1文字打ったのをアンドゥで戻す程度なら大変ではないですが、
特定の文字列を一気に複数箇所程度置換したりしたら管理が大変です。
どのように実装するのがいいのでしょうか。
58片山博文MZ ◆T6xkBnTXz7B0 :2015/02/18(水) 00:57:26.00 ID:9VF3MRJc
alignment requirement of type...
59片山博文MZ ◆T6xkBnTXz7B0 :2015/02/18(水) 01:05:06.78 ID:9VF3MRJc
>>57
undo bufferは、数学的には差分のリストで管理する。
つまり、beforeの状態とafterの状態のペアのリスト。std::vectorなどのC++のコンテナを使う。
元に戻せるか(can undo)、やり直せるか(can redo)の状態も管理する必要がある。
また、メモリーの負担も大きくなりすぎないようにサイズを制限する。
60片山博文MZ ◆T6xkBnTXz7B0 :2015/02/18(水) 01:16:47.14 ID:9VF3MRJc
状態の差分をどのように考えるか。
例えば、三行目に「あいうえお」という行を追加した場合、
全体の行の並びの状態は文字列のリストと見なせるので、
その差分は、(3,'+line',"あいうえお")である。その逆は、三行目を取り除くであるから(3,'-line')。
61片山博文MZ ◆T6xkBnTXz7B0 :2015/02/18(水) 01:23:58.25 ID:9VF3MRJc
差分に複数の種類がある場合、それらを統一的に扱いたい。
そこで仮想関数や基底クラス、関数ポインターが役立つ。
62デフォルトの名無しさん:2015/02/18(水) 01:32:27.71 ID:iIp4Xj1j
企業の名を語って問題化してる詐欺師が
63片山博文MZ ◆T6xkBnTXz7B0 :2015/02/18(水) 01:53:26.50 ID:9VF3MRJc
「情報数学」と「情報算数」の違いだね。
64デフォルトの名無しさん:2015/02/18(水) 01:55:27.46 ID:6FYN6nWZ
>>61
先ほどスレを立てて質問してしまったものです。
getchar();を追加するようアドバイスいただいたものです。
次の項へ進んだのですがそこでも同様のアクシデントが発生してしまいます。
http://bituse.info/c/6
こちらのページです。
一度目の「文字を入力してください」の表示はできるのですが文字を1バイト分入力して
エンターキーを押すとやはり即座に終了してしまいます。
初心者ながらにgetcahr();を意味もわからずに同様に入れてみましたがやはりダメでした。
初歩の初歩でとても恥ずかしいですが全くわかりません。
またお助けください。
65片山博文MZ ◆T6xkBnTXz7B0 :2015/02/18(水) 02:06:21.10 ID:9VF3MRJc
>>64
mainの最後あたりに「デバッグ」→「ブレークポイントの設定」
66片山博文MZ ◆T6xkBnTXz7B0 :2015/02/18(水) 02:09:15.60 ID:9VF3MRJc
原因は「入力バッファに文字が入ったままの状態だから」。
ブレークポイントを設定すれば、そこでプログラムの実行は止まる。
67片山博文MZ ◆T6xkBnTXz7B0 :2015/02/18(水) 02:25:01.47 ID:9VF3MRJc
ソースの行の左側をクリックすれば、赤い丸がつく。
これがブレークポイント。プログラムを実行させると、そこで止まる。
黒い画面が消えるのはプログラムが終了したから。
6857:2015/02/18(水) 12:18:48.23 ID:fxWFvcN5
全く返信が来ないので、他のところで質問してみようと思います。
マルチポストになるためこちらでの質問は締め切らせていただきます。
スレ汚し失礼しました。
69デフォルトの名無しさん:2015/02/18(水) 12:43:25.56 ID:a50GzuXq
>>57
各操作に、戻す操作を用意する。その方針なら、カーソル移動もUndoできる。
戻す操作を一時ファイルに記録していく。これでできます!
むかしは、メモリは、高価だった。メモリでやろうとしなかった。

その方針で、あとは、データ構造をきめる(各レコードに、レコード番号がある)
戻す操作が各レコードにある。

Redoは、どうやるのかしらない。Redoっているのかなぁ?
70デフォルトの名無しさん:2015/02/18(水) 13:10:35.62 ID:kutO6lRc
締め切るって言われてから書き込む人って・・・
71デフォルトの名無しさん:2015/02/18(水) 15:47:44.68 ID:4wXh5cyu
締め切るような馬鹿質問者の都合なんかどうでもいいだろ
質問者の利益を願わぬよう二他の連中が雑談してりゃいい
72デフォルトの名無しさん:2015/02/18(水) 15:59:07.96 ID:4Qn9SljG
vector<MyStruct> data;
みたいなデータを使って、ある種の処理をしているのですが、
vectorの途中の要素を削除したり、追加したり、forループで全データを
読み出したり、変更したりする処理も沢山入っています。
こういう場合、vectorを使わずに、malloc, freeを使ってポインタによる
リスト構造を作成したらもう少し速度が向上すると思うのですが、
質問ですが、
一般に、vectorを使うより、ポインタ式のほうが速度は向上しますか?
速度が向上するとした場合、処理内容にもよると思いますが、何倍くらいになる可能性がありますか?
せいぜい1.5倍とかそんな程度でしょうか?あるいは数倍速くなる可能性ありますか?
経験ある人、コメントお願いします。
73デフォルトの名無しさん:2015/02/18(水) 16:13:54.41 ID:WF/HB+Oc
>>72
std::vectorの途中の要素削除はサポートされてるけど速度を求めるなら当然やるべきではない
リスト構造にするならstd::listを使えばいいんじゃないの?
速度が何倍になるかはケースによりすぎるので誰も答えられない
74デフォルトの名無しさん:2015/02/18(水) 16:17:15.98 ID:QJtcpUml
>>72
それは処理によって変わるから、両方作って比較してから選んでください
75デフォルトの名無しさん:2015/02/18(水) 16:26:10.71 ID:dFtyN/e5
>>72
要素の途中を削除すると後ろの要素を全部前につめるようにコピーしなおすからそれが時間食う

要素の半分くらいの数を一度に削除したいとか、そういう、削除が多すぎる場合は一旦nullでも入れといて
二本目のvectorに手動で移すようなのがまだマシかもね

v[j] = null; v[k] = null; // ....
for (int i = 0; i < v.size(); i++) if (v->at(i) != null) v2->push_back(v->at(i));
v->clear(); // 一気に全要素削除
t = v;v = v2;v2 = v; // 場合によってはこういう差し替えをしてもいいかも

あくまでvectorでやりたい場合は、ってことで
76デフォルトの名無しさん:2015/02/18(水) 17:08:14.85 ID:82ISwL6X
>>75
なにいってんだおまえ
77デフォルトの名無しさん:2015/02/18(水) 17:18:41.39 ID:h14sfo2k
vectorは途中への追加・削除は想定してないよ、それによって連続性の保障・生配列と等価なコスト等の恩恵がある、
やりたいなら素直にlist使っとけ
78デフォルトの名無しさん:2015/02/18(水) 17:21:43.94 ID:h14sfo2k
ちょっと語弊があった
メンバメソッドに途中追加・削除はあるけど再配置コストでかいから、
パフォーマンス気にするなら素直にlist使っとけって意味ね
7975:2015/02/18(水) 18:40:44.15 ID:dFtyN/e5
>>76以外のみんなには伝わってると思うけど一応ね
https://ideone.com/U3UV4M
80デフォルトの名無しさん:2015/02/18(水) 18:46:48.45 ID:wgmWwjwn
>>79
v[j]=null に該当するコードが無いな
81デフォルトの名無しさん:2015/02/18(水) 18:53:48.49 ID:wgmWwjwn
>>79
これはひどい
82デフォルトの名無しさん:2015/02/18(水) 18:58:42.15 ID:HYJih66l
>>79
a b cをポインターにするメリットがなさそうなのに、どうしてそんなことを
83デフォルトの名無しさん:2015/02/18(水) 19:05:39.81 ID:vY8D60aZ
>>79
比較がなきゃ意味がないんじゃないか
84デフォルトの名無しさん:2015/02/18(水) 19:45:28.88 ID:lyHrqUwP
単純に元の配列に、削除や追加を行って新しい配列を作るって事だろう。
変更だったら元の配列直接で良いが、削除追加は新しい配列にコピーした方が良いな。

って事を言いたいんじゃないの
85デフォルトの名無しさん:2015/02/18(水) 19:56:06.81 ID:Cje1DbfK
ゴミがゴミみたいなコードを貼るのはよしてくれよ。吐き気がする。
86デフォルトの名無しさん:2015/02/18(水) 20:06:27.20 ID:3kPRLP3r
>>84
お前の憶測代弁を誰が望んでる?
87デフォルトの名無しさん:2015/02/18(水) 20:09:32.80 ID:h14sfo2k
>>79
むしゃくしゃしてやった
https://ideone.com/HSRAZ0
8875:2015/02/18(水) 20:33:25.08 ID:hhBoAooq
>>84
二本目のvector使うことによって
eraseをpush_backに置き換えてるのが肝

もしeraseしすぎて困ってて
二本目のvector確保しても平気なときとか

>>82
t = b;b = c;c = t;
これをポインタでしたかっただけ
本旨に対して瑣末なんでお好きにどうぞ
89デフォルトの名無しさん:2015/02/18(水) 20:41:33.69 ID:YAiiiwp8
>>88
もういいよおまえ馬鹿なの分かったから!
他の人のコードを黙って見てろ
90デフォルトの名無しさん:2015/02/18(水) 20:44:23.53 ID:YAiiiwp8
>>87
&と%の間違いがあるからbの減り方が少なすぎるんだな
91デフォルトの名無しさん:2015/02/18(水) 21:10:04.63 ID:h14sfo2k
>>90
言われて気付いた、間違ってたわ
92デフォルトの名無しさん:2015/02/18(水) 21:31:03.02 ID:mNlNVJ9p
何かおすすめの書籍有りませんか?
93デフォルトの名無しさん:2015/02/18(水) 22:01:35.36 ID:m9smIoC1
More Effective C++

俺は読んだことないけど
94デフォルトの名無しさん:2015/02/18(水) 22:14:51.82 ID:mNlNVJ9p
>>93
あんがと。買ってみる
95デフォルトの名無しさん:2015/02/19(木) 00:18:51.76 ID:1VbRaqSZ
C++11,14対応の新版 Effective Modern C++ (ただし日本語翻訳版はまだない)
がでてるのに時代遅れの旧版すすめてどうするんだ

もちろん今でも通用することも載ってるのでそこをわかったうえで読むならいいけどさ
96デフォルトの名無しさん:2015/02/19(木) 00:43:32.52 ID:MJrK0vGE
ああ、そんなタイトルだったか
読んでないからMoreが最新だと思い込んでた
97デフォルトの名無しさん:2015/02/19(木) 03:48:50.49 ID:jfoHSBtL
>>95
買ったきり積んであるわ
98デフォルトの名無しさん:2015/02/19(木) 17:27:13.13 ID:/iG5WZ4H
OpenProcess
ReadProcessMemory
WriteProcessMemory
がDLLインジェクション?され、欲しい結果がまともに得られません。
なので同等の機能を持つ
OpenProcess2
ReadProcessMemory2
WriteProcessMemory2
という別の関数を作りたいのですが技術的に可能ですか?
元の関数の中身の確かめ方なども教えてほしいです。
99デフォルトの名無しさん:2015/02/19(木) 17:51:45.22 ID:MJrK0vGE
プロセス間通信したい→他の方法使え
実行中プロセスの中身が見たい→デバッガ使え
他の実行中プロセスを不正に書き換えたい→諦めろ
100デフォルトの名無しさん:2015/02/19(木) 18:07:06.84 ID:+x92KaMa
チーターかよ
banされるからやめとけ
101デフォルトの名無しさん:2015/02/19(木) 19:04:12.08 ID:eawGJ+OB
今は反芻している
102デフォルトの名無しさん:2015/02/19(木) 20:25:08.18 ID:/iG5WZ4H
なんだこのスレ。
103デフォルトの名無しさん:2015/02/19(木) 20:26:29.37 ID:ab5Vc4qB
なんでみんな怒ってるの?
104デフォルトの名無しさん:2015/02/19(木) 21:05:44.81 ID:0ZY/+Dfb
>>65-67
お返事が遅くなりすみません。
ブレークポイントの挿入できちんと出来ました。
せっかく原因として書いていただいたことも勉強不足でよくわかりませんが
今後勉強を重ねたいと思います、ご丁寧にありがとう御座いました。
また何度もお世話になると思いますがどうぞよろしくお願いします。
105デフォルトの名無しさん:2015/02/19(木) 21:43:42.43 ID:sOrLlryh
>>104
おう!またこいよ!絶対だぞ!来なかったらこっちから訪ねて行くからな!
106デフォルトの名無しさん:2015/02/19(木) 23:05:18.65 ID:HdusV7c5
>>98
インジェクト前のアドレスに戻すのは?
107デフォルトの名無しさん:2015/02/20(金) 00:09:56.63 ID:BPnuj7+1
元のアドレスには別のプログラムが置かれ
kernelの実体は別の場所に移ってるような?
その別のプログラムがkernelとの橋渡しをして
保護対象のプロセスにアクセスするようなら
デタラメな値を返しているような?
ということはkernelの実体を探せばいいのだろうか。
さっぱり分からんなぁ・・・。
108デフォルトの名無しさん:2015/02/21(土) 11:37:43.28 ID:qgl0G9M7
ドライバ書いたほうが早い
ドライバの書き方は本買って嫁
終了
109デフォルトの名無しさん:2015/02/21(土) 14:26:15.25 ID:s76k4WVR
むしろみんな怒ってる前提で読むと面白いな
110デフォルトの名無しさん:2015/02/21(土) 17:59:05.20 ID:qCqW+14K
人格否定大罵倒こそ2chの花ですから‥糞呼ばわりすらされなくなる(相手にされなくなる)とちょっとさみしい‥
111片山博文MZ ◆T6xkBnTXz7B0 :2015/02/21(土) 18:45:34.67 ID:swM6o0zc
>>110
QZさん、こんにーちわ。
相変わらずはっちゃけてるかい?
112デフォルトの名無しさん:2015/02/21(土) 19:40:55.07 ID:qCqW+14K
>>111
最近ネタがなくてさー
なんか手伝えることないですか?モリタモ 500 でお受けしますぅ‥
113片山博文MZ ◆T6xkBnTXz7B0 :2015/02/21(土) 19:46:55.40 ID:swM6o0zc
>>112
よろしい。ならばURLをSVG画像にする変換器を作ってくれたら
アマゾンギフト券3000円分差し上げよう。
言語はJavaScript。トリップを忘れずに。
114デフォルトの名無しさん:2015/02/21(土) 19:53:01.65 ID:qCqW+14K
Javascript ですか‥一からやる気力がないからいいですぅ‥
115片山博文MZ ◆T6xkBnTXz7B0 :2015/02/21(土) 19:59:12.19 ID:swM6o0zc
>>114
他の言語ならWebMoney2000円分になるが。。。諸君には作れるかな?
116デフォルトの名無しさん:2015/02/21(土) 21:27:54.79 ID:0DxoAiRe
こう言うのに変換すれば良いのか?
<svg height="30" width="200">
<text x="0" y="15" fill="red">I love SVG!</text>
</svg>
117デフォルトの名無しさん:2015/02/21(土) 21:33:16.62 ID:ZtjHl7Bs
ここでやるなよ(´・ω・`)
118 ◆n73aCqyOJlII :2015/02/21(土) 21:39:59.16 ID:15/lOcmw
https://ideone.com/bzFtvd
これで終了
ちゃんと送れよな
119片山博文MZ ◆T6xkBnTXz7B0 :2015/02/21(土) 21:40:44.70 ID:swM6o0zc
>>116
そうだ。

雑談スレへ移動するぞ。
120デフォルトの名無しさん:2015/02/21(土) 22:10:13.06 ID:swM6o0zc
プログラミング雑談スレ ♯♯ [転載禁止]・2ch.net
http://peace.2ch.net/test/read.cgi/tech/1419929875/
121デフォルトの名無しさん:2015/02/22(日) 18:24:58.11 ID:/Z4bCbY2
つまんない質問ですみませんが
下のような場合、get_hello_1はOKで他は全部ダメ?

std::string get_hello_1()
{
return std::string("hello");
}

std::string get_hello_2()
{
return "hello";
}

char* get_hello_3()
{
return "hello";
}

char* get_hello_4()
{
char buf[255];
strcpy(buf, "hello");
return buf;
}
122デフォルトの名無しさん:2015/02/22(日) 18:26:06.45 ID:uKVn+atI
4だけダメ
123デフォルトの名無しさん:2015/02/22(日) 18:28:03.38 ID:uKVn+atI
3は戻り値をconst char*にしたほうがいいね。
124デフォルトの名無しさん:2015/02/22(日) 18:41:15.04 ID:J+2bP69K
おまえら適当だな
C++の文法上だめなのは3だけ
動作的にだめなのは4だけ
1と2は問題無し
125デフォルトの名無しさん:2015/02/22(日) 18:56:37.91 ID:/Z4bCbY2
3は確かにconstが必要でした。すみません
2と3がOKなのは文字列定数だからメモリが消えることはなくずっと確保されているからでしょうか

ちなみにもう一つ。下の場合はstd::stringオブジェクトが生成されてOKになります?

std::string get_hello_5()
{
char buf[255];
strcpy(buf, "hello");
return buf;
}
126デフォルトの名無しさん:2015/02/22(日) 19:07:13.61 ID:iZtaTVrr
おk
127デフォルトの名無しさん:2015/02/22(日) 19:43:32.73 ID:eEB88Od1
3は別に動作に問題は無いんでしょ
128デフォルトの名無しさん:2015/02/22(日) 19:47:10.59 ID:DVQv7PP4
C++11ならコンパイルできない
129デフォルトの名無しさん:2015/02/22(日) 19:47:40.84 ID:eEB88Od1
へぇ、そうなんだ
130デフォルトの名無しさん:2015/02/22(日) 19:48:53.80 ID:DVQv7PP4
ちがった、そうかコンパイルはできるのか
Werrorにしてたわ
131デフォルトの名無しさん:2015/02/22(日) 19:55:49.83 ID:WuVa/Mh+
C++11より前は、文字列リテラルをchar*で受けられる(ただしdeprecated)
C++11で禁止されたけどVS2013ではオプション扱い(/Zc:strictStrings)
ということみたい
132デフォルトの名無しさん:2015/02/22(日) 20:08:51.77 ID:DVQv7PP4
あれ、じゃあなんでコンパイル通ったんだろうと思ったけど、clangもgccもオプション付けなかったらあえて規格に反してコンパイルできるようにしてるのか
C++11では禁止されてるよみたいなWarningが出た。一度規格書確認しとくわ
133デフォルトの名無しさん:2015/02/22(日) 20:11:07.42 ID:J+2bP69K
>>125
>文字列定数だからメモリが消えることはなくずっと確保されているからでしょうか

3はその通り
2は違う
2はstringのオブジェクトが作られてその生存期間が
呼び出し側のセミコロンまで続くから問題ない
134デフォルトの名無しさん:2015/02/22(日) 20:47:07.17 ID:/Z4bCbY2
皆様ありがとうございした
いくつか誤解していたことが解決して大分理解が深まりました
135デフォルトの名無しさん:2015/02/22(日) 23:04:10.77 ID:rzvFGJXk
std::string get_hello_2() {
 return "hello";
}
初心者が理解しづらい所だな。
関数の戻り値というものが誰がメモリを確保して
いつコンストラクタとデストラクタが呼ばれるのかわかりづらい。
ついでに大抵はRVOとNRVOの話が一緒に付いて来るので混乱を招く
136デフォルトの名無しさん:2015/02/23(月) 14:10:31.79 ID:4Sh3heg0
こんにちは!
先先日より大変お世話になっております>>104です。
ブレークポイントでプログラムが終了してしまうのを防ぐことはできるようになったのですが、
(これは本筋とは逸れますが)これはあくまでチェック用なのですよね?
そこでプログラム的に(?)終了を防ぐ方法が知りたいのですが
お教え下さるか検索ワードを教えてもらえませんか?
よろしくお願いします。
137片山博文MZ ◆T6xkBnTXz7B0 :2015/02/23(月) 14:54:33.47 ID:cWkGfwjm
>>136
無限ループ、Win32のSleep、Linuxのusleep
138デフォルトの名無しさん:2015/02/23(月) 14:54:59.84 ID:umJpzUJj
>>136
最もシンプルに、余計なキーを打たない前提なら、getcharを二回連続で呼べばいい
一回目のgetcharは、scanfで拾えなかった改行文字が入ってくる
二回目はバッファが空なので、入力を待機する
139デフォルトの名無しさん:2015/02/23(月) 23:05:49.75 ID:JzyWrWVg
>>135
構造体を返値とする、と類似しているとしてだいたい把握できる
140デフォルトの名無しさん:2015/02/23(月) 23:23:46.90 ID:0KMyfxui
OpenCVを使い始めようとしており、全くの無知ですが教えてください。
未解決の外部シンボル_cvReleaseImageが関数_mainで参照されました
とエラーが出ている場合、どうしたらいいのでしょう?
関数が見つかりませんよ、と言うのはわかるのですがこの関数はどこにあるのでしょうか?
141デフォルトの名無しさん:2015/02/23(月) 23:32:51.19 ID:yzL19jDh
_cvReleaseImageなる関数があるライブラリがリンクされていない様子
リンク設定を見直す、あるいは使ってるIDEのリンク設定の仕方を勉強する
142デフォルトの名無しさん:2015/02/23(月) 23:32:54.48 ID:V8GOYsYk
それはOpenCVというより、一般的なC言語のライブラリのリンクの話だ。
143デフォルトの名無しさん:2015/02/23(月) 23:41:56.37 ID:0KMyfxui
その_cvReleaseImageがあるlibファイルというのはどう判別すればいいのでしょうか
ソースコードなどからは判断できますか?
144デフォルトの名無しさん:2015/02/23(月) 23:43:04.95 ID:yzL19jDh
OpenCVの説明ドキュメントでも読んでください
145デフォルトの名無しさん:2015/02/24(火) 00:01:23.84 ID:611T6tT6
OpenCVのdllがリンクされてないだけだろ。静的リンクか動的リンクすれば使えるようになる
146デフォルトの名無しさん:2015/02/24(火) 00:34:02.94 ID:2T0G4BSR
>>140
debian環境だとhighguiってのに入ってるね
MSDNのように明記されてないので
(ビルドオプションでどうとでもなるだろうから)
pkg-config opencv --libs
でso$をgrepしてreadlink -fで実態調べて
objdump -Dしてgrepという力技で特定しました
147デフォルトの名無しさん:2015/02/24(火) 04:33:22.06 ID:tdW+LicI
>>143
nm コマンド
148デフォルトの名無しさん:2015/02/24(火) 04:47:24.38 ID:2T0G4BSR
stripなもんで
149デフォルトの名無しさん:2015/02/24(火) 12:48:11.27 ID:feW1KcM/
>>137
>>138
お返事遅くなりまして申し訳ありません。
片山さんのワードで検索してみたのですが、sleep関数を理解するにはまだまだ時間がかかりそうです。
それでも存在を知ることができてよかったです。ありがとうございました。
今のところは>>138さんのgetchar()を2回使う方法でうまくいってます。
解説もしていただき大変ありがたいです。ありがとうございました。
出来れば自分で解決できるのが望ましいのですが、自己解決できなかった時はまた来ます。
その時もどうぞよろしくお願いします。
150デフォルトの名無しさん:2015/02/24(火) 21:25:28.62 ID:BgZzwVFO
>>149
>>104みたいないわゆるコンソールプログラムであればsleepを使う必要は全くないよ。
むしろ、無限ループでsleepだけだとプログラムを正常終了させる方法がなくなるからやめた方がいいよ。(この方法で正常終了させるようにするならら>>138の方法のが手っ取り早い)
151デフォルトの名無しさん:2015/02/25(水) 04:54:39.49 ID:kAr5BbQr
%*cじゃあかんの?
152デフォルトの名無しさん:2015/02/25(水) 09:13:39.06 ID:yPciKDTd
#include <stdio.h>
#define N 3
int main(){
int tmp,i,j,z,a[]={0,0,0};
char ans;
printf("整数を%d個入力してください\n",N);
for(i=0;i<N;i++){
printf(">\n");
scanf("%d", &a[i]);
}
for(z=0;z<N;z++){
for(j=N-1;j>z;j--){
if(a[j]<a[j-1]){
tmp=a[j];
a[j]=a[j-1];
a[j-1]=tmp;
}
}
}
for(i=0;i<N;i++){
printf("%d ",a[i]);
}
return 0;
}
153デフォルトの名無しさん:2015/02/28(土) 11:03:43.60 ID:yyMmVQQk
c++ってcでも書けるけどcとc++混ざったような書き方って一般的にどうなんだろうか?
154デフォルトの名無しさん:2015/02/28(土) 12:00:46.80 ID:j5d61nKt
>>152
3つ数字入力させて、合計を表示してるのは分かるけど、これくらいなら、電卓とか、エクセルでやったはうが早くない?
155デフォルトの名無しさん:2015/02/28(土) 12:06:03.03 ID:8paVhiek
>>153
ライブラリによる。GUIとか
オブジェクト指向かどうか
STLをつかうか
156デフォルトの名無しさん:2015/02/28(土) 12:29:41.22 ID:C0E19LHH
>>153
やる必要があれば、それも可能なのがC++の利点
今でこそC++らしい書き方のほうが多くなったけれども
「better C」という、C言語風だけどC++の良いとこ取りもする、というスタイルは
昔はけっこうよく行われてたよ
157デフォルトの名無しさん:2015/02/28(土) 13:17:05.10 ID:jpnAzhvw
iostreamのマニュピレータはどうしても慣れない
158デフォルトの名無しさん:2015/02/28(土) 13:22:59.63 ID:pzuzIoSR
better Cは絶滅中
159デフォルトの名無しさん:2015/02/28(土) 13:33:07.23 ID:3oOu8rEl
printf()ってすごいね
160デフォルトの名無しさん:2015/02/28(土) 13:37:26.92 ID:0w0p4VdY
boost::formatをprintfみたいな感じで書けるテンプレート関数使ってるな
161デフォルトの名無しさん:2015/02/28(土) 14:13:05.54 ID:nS9zO5v8
boost.formatビルドが重いねん
162デフォルトの名無しさん:2015/02/28(土) 14:38:37.66 ID:9NkDqAQU
今時STLは無いな
163デフォルトの名無しさん:2015/02/28(土) 15:04:24.71 ID:RGSE2jA1
数ヶ月かけてコツコツ自作のプログラムを作っているうちに、苦し紛れに即席で
使ったグローバル変数があっちこっちに
合計十数個出てきて、収集がつかなくしまいました。
グローバル変数を上手い具合に管理する方法有りますか?
グローバル変数を使うなという意見は勘弁して下さい。私の能力では使わずにはプログラム組めませんので。
よろしく。
164デフォルトの名無しさん:2015/02/28(土) 15:07:38.09 ID:0lfA+oAx
まずは糞コテ付けろ
165デフォルトの名無しさん:2015/02/28(土) 15:08:19.96 ID:VJzk6ZT6
クラスで包んで誰が所有、利用するかを明確にすべき
166デフォルトの名無しさん:2015/02/28(土) 15:20:13.40 ID:RGSE2jA1
>>165
クラスも使っているんですが
幾つかのクラスの中ではstatic変数も
使っていて、それも混乱の一因です。
クラスの中でstatic変数使うのは駄目でしょうか。
167デフォルトの名無しさん:2015/02/28(土) 15:42:23.94 ID:rkeHMBrB
外から見えなきゃグローバル変数static変数何個使おうが気にしないな
168デフォルトの名無しさん:2015/02/28(土) 15:49:56.35 ID:RGSE2jA1
>>167
publicにしています。
169デフォルトの名無しさん:2015/02/28(土) 15:54:02.54 ID:4l+NWV3B
単にグローバル変数とか言われてもアドバイスできる奴なんていないと思うが。
その場しのぎで追加するようなグローバル変数は実際は引数渡しで事足りる場合ばっかりだろうからそこを作り直せば数が減って収集がつくと思うよ。
170デフォルトの名無しさん:2015/02/28(土) 16:25:53.70 ID:jpnAzhvw
>>163
とりあえずグローバル構造体かクラスにまとめて全量洗い出して取捨選択
171片山博文MZ ◆T6xkBnTXz7B0 :2015/02/28(土) 21:57:16.55 ID:OFsucKZW
アライメントとビットフィールドの挙動不審で困ってる。
#include <pshpack1.h>
typedef struct {
int a : 8;
int b;
} X;
#include <poppack.h>
このとき、sizeof(X)==8になるが、
メンバーaをint a : 9;にするとsizeof(X)==6になる。
何でやねん! ビットを増やしたらサイズが減るのか!
172デフォルトの名無しさん:2015/02/28(土) 22:00:53.02 ID:kDCn/ge4
>>163
いいきっかけだから他のプログラムでも使用できそうな機能は機能毎にしちゃう
173デフォルトの名無しさん:2015/02/28(土) 22:18:47.25 ID:yyMmVQQk
一個パズル作ったんだがどんどん機能拡張していってもはや何のソフトか
分からなくなってきた。
そろそろクラスとかも覚えて使ってみたいし新たに1からつくるか・・
174片山博文MZ ◆T6xkBnTXz7B0 :2015/02/28(土) 22:30:33.27 ID:OFsucKZW
>>171
これを馬鹿にもわかるように論理的に説明して下さい。
175デフォルトの名無しさん:2015/02/28(土) 22:36:30.21 ID:TqhvQe1k
>>171
>>1も読めないバカは去れ
176片山博文MZ ◆T6xkBnTXz7B0 :2015/02/28(土) 22:38:52.76 ID:OFsucKZW
環境はMinGWです。
177デフォルトの名無しさん:2015/02/28(土) 22:47:07.04 ID:kDCn/ge4
>>176
VC++ 2010 EEで両方8になったんですが
178片山博文MZ ◆T6xkBnTXz7B0 :2015/02/28(土) 23:34:27.82 ID:OFsucKZW
>>177
ありがとう。
VC++とGCCのABIの違いのため-mms-bitfieldsつけないとダメだと。
ビットフィールドのせいで一日つぶれた。。。
179デフォルトの名無しさん:2015/03/01(日) 13:55:28.56 ID:YTVpAllV
やべぇ、継承でわからなくなった・・・Orz
public privert potected これわかりやすく
解説したサイト知りませんか?
180デフォルトの名無しさん:2015/03/01(日) 14:04:57.89 ID:SZqmQTGe
public だれでもアクセスできる
private そのクラスだけアクセスできる
protected そのクラスと、派生クラスだけアクセスできる
181デフォルトの名無しさん:2015/03/01(日) 14:25:44.99 ID:YTVpAllV
そういうことじゃなくて・・・orz
182デフォルトの名無しさん:2015/03/01(日) 14:33:42.98 ID:VYwW9Vyn
「そういうことじゃなくて・・・orz」じゃねーよ
期待した解答と違うとおもったなら自分の質問にもっと具体的な補足をしろ
できねーなら死ね
183デフォルトの名無しさん:2015/03/01(日) 14:34:32.89 ID:uDqKnlJ3
private 継承 元を全て private へ
protected 継承 元publicをprotectedへ 元protectedをprivateへ
public継承 元の状態を維持


だったっけか?
184デフォルトの名無しさん:2015/03/01(日) 14:45:45.97 ID:5nggEOp/
185デフォルトの名無しさん:2015/03/01(日) 15:05:46.90 ID:9nAO1Mr4
privateじゃなくてprivertだからな
そんなモン誰も知らねぇよ
186デフォルトの名無しさん:2015/03/01(日) 15:11:24.18 ID:NOqABy0N
protected継承は割と新機能を車輪の使い回しで実装したい時に便利
187デフォルトの名無しさん:2015/03/01(日) 18:08:53.80 ID:xHJpp+wq
自分のアクセスレベル以上のものを自分のアクセスレベルにする

public そのまま
protected publicだけprotectedへ
private 全部private
188デフォルトの名無しさん:2015/03/01(日) 23:34:19.53 ID:VA+mmmdG
>>183-187はコミュ障
189デフォルトの名無しさん:2015/03/01(日) 23:47:53.89 ID:NUTnmFf9
protected って本来は使うべきじゃないの?
メンバ変数は基本的に全てprivateにしてsetter getterを関数に書いて
派生クラスから基底クラスのメンバ変数を呼ぶときは全てsetter getterを通じて扱うのが本来のオブジェクト指向な気がするけどどうなんだろう
190デフォルトの名無しさん:2015/03/02(月) 00:05:32.07 ID:XG6Dbdai
>>189
気にしないで、ガンガンPUBLIC使うべし。
いちいち代入のために関数作ってたら、生産性わろし

関数ひとつ追加するコストは、ドキュメントやテスト、IFの構成などの影響を考えると高くつく

学者のべき論と実戦は異なるのだよ
191デフォルトの名無しさん:2015/03/02(月) 00:09:11.15 ID:hseo5gVd
>>189
お前アホか
本来のオブジェクト指向()とやらでは実現できない「実装の再利用」のために
friend/private継承/protected継承があるんだよ。
オブジェクト指向の考えに形式的に当てはめようとして
getter/setterにする方がクレイジー
192デフォルトの名無しさん:2015/03/02(月) 00:22:49.89 ID:3n4sVnGf
>>191
そうなのか・・・
本とか一部サイトではsetter getterを通した方が値のチェックを行えて安全とかあるから混乱してたんよ
193デフォルトの名無しさん:2015/03/02(月) 00:29:21.36 ID:fPhyyxiK
>メンバ変数を呼ぶときは全てsetter getterを通じて扱う

内部の変数へのアクセスを許すのは
オブジェクト指向の考えに反します
getterを作れば良いと言うものではありません
194デフォルトの名無しさん:2015/03/02(月) 00:51:01.27 ID:/crQ+lAS
内部変数ありきで、内部変数の仕様から完成して、
それにあわせてgetter作ってたらオブジェクト指向じゃない
195デフォルトの名無しさん:2015/03/02(月) 00:57:41.76 ID:g6u+STTf
折角privateにしてるのにsetterされたらそれもうprivateの意味無くね
196デフォルトの名無しさん:2015/03/02(月) 01:09:06.37 ID:XG6Dbdai
>>195
それは、言語仕様の矛盾だよね。

でも現場ではpublicしか使わないから関係ないけどね(制御系とか金融のプロジェクトは知らないけど)
197デフォルトの名無しさん:2015/03/02(月) 01:12:04.73 ID:/eLULHxy
だからと言って変数をpublicにしたらsetterにトリガ仕込んだり出来なくなるし
198デフォルトの名無しさん:2015/03/02(月) 03:22:53.77 ID:Cc4ZXjAz
アクセッサ経由でしかアクセスしない親クラスなら、
そこから派生させるのではなくそのクラスのインスタンスを
メンバとして持てば十分でしょう。
その方が良いならそうすべきで、かつそのクラスを
テンプレート引数として汎用化できないかも考慮すべき。
199デフォルトの名無しさん:2015/03/02(月) 13:58:13.91 ID:u4npGgFL
なに インヘリをうだうだ考えてると禿げになりますよ。
普通にクラスを作って楽しく使いましょう。
200デフォルトの名無しさん:2015/03/03(火) 10:05:19.01 ID:k6QUuUZD
>>198
なかなか貴重で異常なご意見で
201デフォルトの名無しさん:2015/03/03(火) 22:53:35.90 ID:E8cNZHFY
配列は、配列名でその配列の先頭アドレスが確保出来るということですが、
なぜ配列ではない関数も同じように関数名で先頭アドレス確保出来るのでしょうか?
関数名に「&」を付けるなら分かるのですが・・・

int i[5]={1,2,3,4,5};
int* pi = i; // OK

int i=1;
int* pi = &i // &が必要

******************* こっから下が分からない *******************

void kansuu(char* str){
 std::cout << str << "\n";
}

void (*po[])(char* str)={kansuu}; // なぜ&kansuuでなくてよい?
po[0]("なぜじゃ");
202デフォルトの名無しさん:2015/03/03(火) 23:02:49.41 ID:HsY4gQ31
>>201
一種の例外だし、それを好まずそう書かない人々もいる
203デフォルトの名無しさん:2015/03/03(火) 23:41:13.44 ID:E8cNZHFY
>>202
&をつけてもコンパイル通るんですね。例外了解です。
204デフォルトの名無しさん:2015/03/03(火) 23:48:42.41 ID:aTqVdZca
>>201
&なしは関数オブジェクトと関数が同じ表記法になれる
テンプレートの場合では&をつけるわけにはいかない

そのため付けないのが主流となる
205デフォルトの名無しさん:2015/03/04(水) 02:08:06.64 ID:7qqVQ1bq
>>201
そもそも配列も関数と同じで、&をつけてもつけなくても同じ扱い。
http://ideone.com/bYtnim
206デフォルトの名無しさん:2015/03/04(水) 09:35:28.98 ID:/apgWJr2
呼び出すときも funcptr() と (*funcptr)() どっちもいけるよね
207デフォルトの名無しさん:2015/03/04(水) 09:40:16.23 ID:HeTEjgTn
>>206
ANSI-C以降の話しね。ポータブルCとかK&Rは駄目(豆)
208デフォルトの名無しさん:2015/03/04(水) 14:53:14.64 ID:Ta/FEbLe
C暦3日目です
ここに自分が書いたソースコード張ったらダメ出しみたいなのしてもらえる?
テストの点数とそれに対応する順位をつけて、同じ点数は同じ順位にするってプログラムを組んだんですけど
一応目的の動作はしてくれます
209デフォルトの名無しさん:2015/03/04(水) 15:06:01.49 ID:CTtxiq5X
>>1使って、どうぞ
210デフォルトの名無しさん:2015/03/04(水) 15:20:31.89 ID:Ta/FEbLe
http://codepad.org/O06p0hW4
これだけのことに変数を使いすぎてる気がするのと
もっとスマートに書ける部分があったらおしえてほしいです
211デフォルトの名無しさん:2015/03/04(水) 15:50:29.68 ID:HeTEjgTn
>>210
つ qsort
212デフォルトの名無しさん:2015/03/04(水) 16:57:59.31 ID:mnA608p+
>>210
直してみたよ
http://codepad.org/vCg6eNwh

解説
・変数名はc0など意味の分かりにくいものにせず、pointとかorderとかにしよう(↑では変えてないけど)
・10や9や8といった定数は、配列の要素を後で増減させる時に修正しやすいよう、変数などに定義しよう
その際は、要素数(人数)に合わせて'10'を使うのがいい
基本的に、配列をfor文で辿る時は (変数=0; 変数 < 要素数; ++変数) という形になるのでこのまま憶えよう
本当は配列のサイズからも分かるけど、それはもうちょっと先のレベル
・同じ点数の人が同じ順位になるよう、順位を示す変数は途中では変えず、後でまとめて人数分増やす
そうすれば後半のややこしいループは不要
・main関数の引数と戻り値が間違い
213デフォルトの名無しさん:2015/03/04(水) 19:46:11.27 ID:Ta/FEbLe
>>211
便利ですね覚えておきます

>>212
ありがとうございます、すごい参考になります
引数と戻り値は勉強しなおしておきます
214デフォルトの名無しさん:2015/03/05(木) 03:01:06.15 ID:o2c8GLXQ
size_t (実体はunsigned int)からunsigned longへの変換でpossible loss of dataって言われたんだけど
intよりもlongのが扱える範囲は大きいはずだからおかしいよな・・・?
215デフォルトの名無しさん:2015/03/05(木) 03:25:16.98 ID:+ThMXw+2
それだけじゃなんとも
size_tが_int64にでもなってたんじゃね
216デフォルトの名無しさん:2015/03/05(木) 03:34:33.64 ID:lVmgOndi
今時 size_t が unsigned int と同サイズって少数派だもんな
217デフォルトの名無しさん:2015/03/05(木) 03:35:29.33 ID:o2c8GLXQ
ホントだ
インテリセンス君はunsigned intだったけどたどっていってみたら__w64なる接頭句が
218デフォルトの名無しさん:2015/03/05(木) 03:46:27.62 ID:lVmgOndi
たいていの x86_64 や arm64 のコンパイラは
LLP64 っていって、long long とポインタが64bit
そのあおりで size_t と ptrdiff_t (ポインタの差) も64bit

64bit CPU の先駆け Alpha AXP の頃は LP64 といって
long とポインタを 64bit にしてたけど、その時の経験で
long は 32bit のままの方が 64bit 化にあたってのコードの
修正が少なくて済むとわかってLLP64 が主流になった
219デフォルトの名無しさん:2015/03/05(木) 03:47:28.28 ID:9F0iYt50
>>210
作業用ポインタとqsortを使った方法、こんな方法もあるよとだけ
http://codepad.org/FjFQ2dNL
220デフォルトの名無しさん:2015/03/05(木) 08:51:27.87 ID:OANpNxqp
>>218
こう言うウソをしれっとつくバカは死んだ方が良い。
win16からの移行を容易にする為にすでにグダグダになっていたwin32
それからの移行を容易にするための選択がLLP64
221デフォルトの名無しさん:2015/03/05(木) 08:52:56.70 ID:+Q5gJwG8
>>220
同じことを言ってる
222デフォルトの名無しさん:2015/03/05(木) 09:06:17.01 ID:PF6nrNXa
64bit環境におけるデータモデルの話じゃなかったのか
223デフォルトの名無しさん:2015/03/05(木) 09:25:50.71 ID:OANpNxqp
>>221
MS帝国(大分おちめ)の奴隷は引っ込んでいろ。
LLP64なんか採用してるのはwin64だけ。
224デフォルトの名無しさん:2015/03/05(木) 13:04:15.43 ID:HSYDbrXJ
確かに218は不正確で220が正しい
64ビットの先駆けとなったDEC Alpha系もLP64だったような
225デフォルトの名無しさん:2015/03/05(木) 13:22:27.44 ID:3j9lgICf
>>218
> たいていの x86_64 や arm64 のコンパイラは
> LLP64 っていって、

いやいや、そんな珍しいものは唯一windowsだけじゃないの?
226デフォルトの名無しさん:2015/03/05(木) 16:44:14.07 ID:JyN3EgEg
//#define AAAA
//#define AAAA BBBB
#define AAAA CCCC

と記述した後に、任意の場所で、
AAAAがCCCCとしてdefineされているかを判定することはできないでしょうか?
227デフォルトの名無しさん:2015/03/05(木) 17:17:46.08 ID:I89WrdEH
if (AAAA==BBBB) {
  return true;
}
228デフォルトの名無しさん:2015/03/05(木) 17:25:22.76 ID:0g2YeNLY
値との比較で

#if(WINVER >= 0x0500)
#endif

こういうのは見たことがあるが、特定のシンボルに定義されているかどうかを
#if で判定してるのは、見たことがないな(&それが可能なのかは知らないな)
229デフォルトの名無しさん:2015/03/05(木) 20:57:00.72 ID:l9SFIH0J
フォルダー(a)に複数入っている各csvファイルの行数を調べて表示するやり方を教えてください
230デフォルトの名無しさん:2015/03/05(木) 22:21:47.81 ID:HeQ72Txg
>>229
スレチ
231デフォルトの名無しさん:2015/03/05(木) 22:26:38.06 ID:/PZ+wdBr
質問のどのあたりがスレチだったのかkwsk
232デフォルトの名無しさん:2015/03/05(木) 22:37:42.95 ID:4qwAFJaB
>>229
10 OPEN DIR("*.csv") AS #1
20 sizeof(#1)
30 GOTO 10
40 END
233デフォルトの名無しさん:2015/03/05(木) 23:13:15.75 ID:LULabTRs
>>229
find . -name "*.csv" | wc -l
234デフォルトの名無しさん:2015/03/05(木) 23:21:23.33 ID:puWRUP/J
>>229
$ find ./a -name "*.csv" | ruby -rcsv -lne 'p [CSV.read($_).size, $_]'

>>233
xargs
235デフォルトの名無しさん:2015/03/06(金) 01:14:22.96 ID:Sg/+JleU
fopen(csv);

int i = 0;
while ( fgets( ) ){

  i++;

}

fclose();

return i ;
236デフォルトの名無しさん:2015/03/06(金) 03:51:20.50 ID:+A6TrZmo
>>233,234
find a -name '*.csv' -exec wc -l {} \;
237デフォルトの名無しさん:2015/03/06(金) 05:54:19.35 ID:ffY3VuPR
CSVと指定してるのが引っ掛けだったりして
ダブルクオートの中に改行が入る場合を考慮しないといけない
238デフォルトの名無しさん:2015/03/06(金) 07:24:52.70 ID:GC5TMZRE
Excel仕様だと、( , )( " )( 改行 )等があると全体を( " )で括り、さらに( " )は( "" )とエスケープするという素敵仕様
239デフォルトの名無しさん:2015/03/06(金) 07:43:06.27 ID:jAQDMMU6
そういう改行だとか , " への対応だと、
C#でTextFieldParserを使うのが一番簡単かな?
240デフォルトの名無しさん:2015/03/06(金) 08:06:38.46 ID:dsDP5DeS
>>236
今は
find a -name '*.csv' -exec wc -l {} +
って、やるんだよ。
20世紀からきたおじいちゃん。
241デフォルトの名無しさん:2015/03/06(金) 08:34:58.66 ID:zfR7oXUX
>>238
Excel仕様というか、今はそれでRFCになってるけどな。
242デフォルトの名無しさん:2015/03/06(金) 09:28:41.05 ID:uUtd6mTH
csvデータ の行数なのか
(csv) ファイルの行数なのか
そもそも行数とは何か
難しい
243デフォルトの名無しさん:2015/03/06(金) 09:33:08.83 ID:liXUjwAw
ファイルの行数=ファイル数と空目した。すまそ
244デフォルトの名無しさん:2015/03/06(金) 12:08:08.56 ID:DihBiSVk
拡張子が.csvとは言ってないんだよなあ
245560:2015/03/06(金) 21:01:06.91 ID:n9/U+gAr
>>244
そこまで応用力のない奴は放置でいいだろ
腐ってもム坂だし
246デフォルトの名無しさん:2015/03/06(金) 21:02:18.67 ID:FTmThQC8
データに改行がある時正しくないね
247デフォルトの名無しさん:2015/03/06(金) 22:15:46.04 ID:CKRqkh4t
csvとテキストって区別つくんか?
248560:2015/03/06(金) 23:29:41.77 ID:rW0fbm/s
>>246
正しいかどうかは >>229 の行数の定義に依る

>>247
csv ⊆ テキスト
249デフォルトの名無しさん:2015/03/06(金) 23:53:29.97 ID:2n7TyHez
エクセル起動してcsv読み込ませて行数だけ返してもらえばいいんじゃないですかね(名案
250デフォルトの名無しさん:2015/03/07(土) 00:35:11.21 ID:Ya/TYd9L
FILE fp = fopen( csvファイル );

int c;

int i=0,行数=0;

while ( c = fgetc(fp) ){

  if( c == 区切り文字 ){

     i++;

    if(i >= 項目数){

      行数 ++ ;
      i=0;
     }

  }

}

fclose(fp);

return 行数 ;
251デフォルトの名無しさん:2015/03/07(土) 01:24:24.47 ID:C8DOhXGu
セル内改行してたら、1レコードで二行使ってたりするんだぜ
252デフォルトの名無しさん:2015/03/07(土) 15:20:31.76 ID:bUPPfM5U
それcsvじゃないだろ
253デフォルトの名無しさん:2015/03/07(土) 15:30:48.23 ID:DS4Omjl7
まぁ改行とかカンマとか入っているとダブルクォートで区切り出すからDouble quotes Separated Valuesが正しいな。
254デフォルトの名無しさん:2015/03/07(土) 16:04:20.33 ID:3KyZhNX/
なまじ簡単そうに見えるだけに、csvとiniは勝手な解釈で読み書きされがちだな。
255デフォルトの名無しさん:2015/03/07(土) 16:12:54.82 ID:6NNVM+G0
csvを読み込んで、リスト化して始めて行になる。
つまりCSVには行と言う概念は無いのよ!
256デフォルトの名無しさん:2015/03/07(土) 16:20:55.36 ID:6NNVM+G0
取り出し方によって行数は変わるって事だ!

CSVからレコードとしての行数を取得すると言う事は、
どのような形でレコードの行をカウントするかが分からない限り不可能なのだよ!
257デフォルトの名無しさん:2015/03/07(土) 19:56:03.68 ID:DS4Omjl7
CSV書き出させる時、Cells(1,1) = UsedRange.Rows.Countを義務化させれば解決。
258デフォルトの名無しさん:2015/03/07(土) 20:57:57.71 ID:/8n+l7ta
Hitoというクラスがあったとすると、
Hit *hito = new Hito();
Hito hito = Hito();
この2つの違いは何でしょうか・・・
それぞれのメリットとデメリットを教えてください。
259デフォルトの名無しさん:2015/03/07(土) 21:10:16.68 ID:KPQIfj0o
Cから勉強しなおしてください
260デフォルトの名無しさん:2015/03/07(土) 21:27:31.82 ID:YzMdMFPo
Hit型とはどこからでてきたのか
261デフォルトの名無しさん:2015/03/07(土) 22:26:53.41 ID:SCrS5T9D
>>258
> Hit *hito = new Hito();
動的ストレージ期間のオブジェクトの構築
メリット:オブジェクトの寿命をプログラマが自由に決められる
デメリット:プログラマがオブジェクトの寿命を管理しなければならない

> Hito hito = Hito();
動的ストレージ期間ではないオブジェクトの構築
メリット:コンパイラ(が自動的に生成するコード)がオブジェクトの寿命を管理してくれる
デメリット:プログラマによるオブジェクトの寿命の管理に制限がある
262デフォルトの名無しさん:2015/03/07(土) 22:46:24.14 ID:P6TY9Oz7
javaじゃないんすかw
263デフォルトの名無しさん:2015/03/07(土) 23:09:27.83 ID:/8n+l7ta
>>261
よくわかりました
ありがとうございます!
264デフォルトの名無しさん:2015/03/07(土) 23:37:49.78 ID:tOCksCGu
真に受けちゃいけない
265デフォルトの名無しさん:2015/03/07(土) 23:47:58.97 ID:qYUMbMQB
Hito hito = Hito();
あほ。
Hito hito();
でOK
266デフォルトの名無しさん:2015/03/07(土) 23:58:35.67 ID:G+WKs/Oo
えー、C++標準化委員会の議長が
auto hito = Hito{}; を絶賛推奨してるのにー
267デフォルトの名無しさん:2015/03/08(日) 00:21:20.29 ID:4W2b4/5m
> Hito hito();
> でOK
これこそ完全にあほ
これは関数宣言
268デフォルトの名無しさん:2015/03/08(日) 01:22:10.89 ID:j2+5iace
釣る意味は何だろう
269デフォルトの名無しさん:2015/03/08(日) 03:31:42.13 ID:F1sIV67x
簡単にだまされてしまうなぁ
270デフォルトの名無しさん:2015/03/08(日) 03:42:47.34 ID:OqeeKAyU
>>265 >>267
http://ideone.com/xgK8XD
なんかごっちゃになってるな‥<私
271デフォルトの名無しさん:2015/03/08(日) 06:17:02.51 ID:QtrJmWMv
アホと言うより言語仕様がクソとしか言いようがない

引数無し。ゼロ初期化しなくてもいいとき
 Hito hito;
 new Hito;
デフォルト初期化したい時
 Hito hito(); // × 関数宣言
 Hito hito{};
 new Hito();
 new Hito{};
要素数ゼロでinitilizer_list初期化したい時
 Hito hito{ {} };
 new Hito{ {} };
引数あり。initilizer_list初期化したくない時
 Hito hito(4);
 new Hito(4);
引数あり。initilizer_list初期化してもいい時
 Hito hito{4};
 Hito hito{ {4} }; // 警告
 new Hito{4};
272デフォルトの名無しさん:2015/03/08(日) 13:27:11.80 ID:a8B+x8Xu
インスタンスを保持したい時にはnewを付けて生成してポインタを渡す。

そうじゃない時は普通に宣言し、インスタンスの処理は呼び出し側に任される。
273デフォルトの名無しさん:2015/03/08(日) 22:46:55.60 ID:rkbbmsnn
templateクラスをfriend扱いしたいときはどうすればいいのですか?
274デフォルトの名無しさん:2015/03/08(日) 22:56:08.21 ID:g6H7cIw4
無理
275デフォルトの名無しさん:2015/03/08(日) 23:02:51.77 ID:rkbbmsnn
できました
276デフォルトの名無しさん:2015/03/10(火) 13:38:20.15 ID:RdbtE7KX
VC++のウインドウプログラムの中でボタンを押したらインターネットエクスプローラーが開いて
指定したURLを開きたいのですが、ググルといろんなやり方があるようですが、どれでやっても
同じですか?もしそれぞれの方法で何か違いがあるなら教えて下さい。
277デフォルトの名無しさん:2015/03/10(火) 13:48:50.66 ID:PYIcYA91
shellexecuteでおk
278デフォルトの名無しさん:2015/03/10(火) 13:59:09.73 ID:RdbtE7KX
>>277
レス有難うございます。
有名な秀丸だと更新確認実行するとwscript.exeがインターネット接続します
って出るんですが、秀丸さんがwscript.exe使っているのは何か特別な理由があるのかな?と思いました。
279デフォルトの名無しさん:2015/03/10(火) 14:25:52.25 ID:vm3oZo24
>>278
更新する場合自身のプロセスが起動してると失敗するから
280デフォルトの名無しさん:2015/03/10(火) 15:17:45.02 ID:RdbtE7KX
>>279
自身のプロセスを更新する場合、
shellexecuteでは出来ないんですか?
281デフォルトの名無しさん:2015/03/10(火) 15:36:45.92 ID:vm3oZo24
>>280
実行中プロセスを削除しようとしてみて
282デフォルトの名無しさん:2015/03/10(火) 22:43:07.05 ID:tO3u6w4M
ビットフィールドって何型?
int a : 3;
はint型なのかint:3型なのか
283デフォルトの名無しさん:2015/03/11(水) 09:34:07.82 ID:aCIUJ7gk
>>282
ビットフィールドはビットフィールドというのが回答だろう
あくまでビット数指定のメンバを指定するものだから
284デフォルトの名無しさん
typeidで見えるだろう