トップページ⇒tech
1001コメント296KB

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2014/07/31(木) 19:14:13.79ID:17Xd3Yqq
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。

◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。
前スレ
【初心者歓迎】C/C++室 Ver.91【環境依存OK】
http://peace.2ch.net/test/read.cgi/tech/1400394837/

【アップローダー】(質問が長い時はココ使うと便利)
http://codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
http://ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)
0002デフォルトの名無しさん2014/07/31(木) 19:15:07.44ID:17Xd3Yqq
テンプレここまで
0003デフォルトの名無しさん2014/07/31(木) 21:38:29.86ID:cIGHixSb
>>1乙
0004デフォルトの名無しさん2014/08/01(金) 07:55:38.07ID:4+2xbBXr
>>1乙乙
0005デフォルトの名無しさん2014/08/01(金) 10:19:34.67ID:ZbseM8Xc
また読みもしないのにスレ一覧に加えてしまった。
0006デフォルトの名無しさん2014/08/01(金) 23:35:44.60ID:Q1xcVL69
文字コードについて質問です。
charやWCHARでマルチバイト文字とワイド文字を扱うと学びました。
しかしこれは、いわゆる「文字セット」であって文字コードではありませんよね。
例えばマルチバイト文字にはShift-JISやANSI、cp932、EUC-JPなどがあるみたいですが、標準ではそのような指定はどこにもないように思えます。
マルチバイト文字セット=cp932
ワイド文字=UFT-8
とみなし、それ以外の文字セットは基本的に用いないという暗黙的な了解なのでしょうか。

webページを作成する際には当然だった文字コードの指定が見当たらず不安に思っています。
0007デフォルトの名無しさん2014/08/01(金) 23:47:26.94ID:xmbDbUKF
UTF-8はマルチバイトだよ
マルチバイト文字とワイド文字を変換する時にそれぞれの符号化方式を指定する
さらにOSによっては、ファイルシステムに使用可能な符号化方式が指定されている場合もある
0008デフォルトの名無しさん2014/08/02(土) 00:02:40.42ID:yAhCEHKv
マルチバイトとワイドは一文字長での区別だろ。
機種や環境によって違う。
windowsのUTF-16もWCHARで一文字を表現できないことからマルチバイト的だし。
一文字が一変数に格納可能という条件がワイドで、
一文字に複数変数がないと格納不可能という条件がマルチバイトでは。
一変数の単位が7ビットとか8ビットとか16ビットとか32ビットとかコアな状況でも変わると思う。
0009デフォルトの名無しさん2014/08/02(土) 00:09:39.32ID:qRelH0Iu
ワイドはPCの内部で、Javaや.netが使っているUTF-16だけで、
マルチバイトはそれら以外すべてで、UTF-8など
0010デフォルトの名無しさん2014/08/02(土) 00:19:54.08ID:TsFH3rUF
UTF-32!UTF-32!
0011デフォルトの名無しさん2014/08/02(土) 00:31:36.16ID:aXuilSuQ
今はもう固定長でないUTF-16もwideとよばれてるんじゃよ
ちなみにwchar_tはWindows以外の大半は4バイトな
0012デフォルトの名無しさん2014/08/02(土) 00:33:15.75ID:QyMYNts0
utfのオリジナルはstarの文字コードセットな
0013デフォルトの名無しさん2014/08/02(土) 02:02:12.74ID:LgAU6+Tw
>「文字セット」であって文字コードではありませんよね

いいえ、文字セットではありません。
文字コードであり、より正確にはテキストエンコーディングです。

日本語Windowsの場合、
 MBCS: 文字集合=Windows-31Jのアレ、エンコーディング=いわゆるシフトJIS
 ワイド: 文字集合=Unicodeのアレ、エンコーディング=UTF-16
0014デフォルトの名無しさん2014/08/02(土) 02:06:07.54ID:yAhCEHKv
一文字の確保メモリサイズが常に一定がワイドだろ。
0015デフォルトの名無しさん2014/08/02(土) 02:08:53.66ID:ihMKWWqt
1文字に使うバイト数が1バイトや2バイトと複数あるのがマルチ
1文字に使うバイト数が2バイトのみなのがワイド
Windows以外は知らない
0016デフォルトの名無しさん2014/08/02(土) 02:27:56.74ID:qRelH0Iu
ワイドには4バイトのサロゲートペアもあるから、
2・4バイト

マルチバイトは、3〜6バイトで(もっと長いのもある?)、
3バイトが多い
0017デフォルトの名無しさん2014/08/02(土) 02:29:47.48ID:LgAU6+Tw
>>6
>文字コードの指定が見当たらず

Visual C++の設定がユニバーサル文字の場合、
コンパイル時にソースはUTF-8またはシフトJISの仮定の下に解釈され
charはシフトJISに、wchar_tはUTF-16に、TCHARはUTF-16に変換される。
Visual C++の設定がマルチバイト文字の場合、
コンパイル時にソースはUTF-8またはシフトJISの仮定の下に解釈され
charはシフトJISに、wchar_tはUTF-16に、TCHARはシフトJISに変換される。
いずれも実行時はwchar_tの文字はそのままで、
それ以外はコントロールパネルの言語の設定で指定した文字コードで解釈される。
0018デフォルトの名無しさん2014/08/02(土) 07:58:58.76ID:uphwpvI8
>ワイドには4バイトのサロゲートペアもある
こういう糞レスを見るとUnicodeがencoding formとencoding schemeの
概念を別に分離したのがいかに大切だったかを実感する
0019デフォルトの名無しさん2014/08/02(土) 09:08:07.32ID:2F7KFjBZ
合成文字
002062014/08/02(土) 15:23:13.72ID:4nNjqrDL
ありがとうございました。
0021デフォルトの名無しさん2014/08/03(日) 03:10:05.25ID:AqnF5WVU
クラスを使用する時にこのメンバ関数は絶対1回だけ呼ばれるって場合
コンストラクタで自動で呼ぶってのはあり?
0022デフォルトの名無しさん2014/08/03(日) 03:23:55.71ID:rNEZw/2H
はい
0023デフォルトの名無しさん2014/08/03(日) 19:38:15.30ID:ea9Ca7zy
こんばんは
Visual studio 2013を入れたのでC++のハローワールドをテストしてみたのですが
ビルドが上手くいかず、ヘッダファイルが開けませんと表示されます

2010であればプロジェクトのヘッダファイルの所に使用したいヘッダファイルを入れて、ソースファイルでインクルードしてやればそれで良かったと記憶しています

初期設定を何もしていないのですがそれが原因でしょうか?ネットで調べて見ても情報が得られず困っています

解決方法を知っている方、教えてくれませんか?
0024デフォルトの名無しさん2014/08/03(日) 19:41:58.53ID:yCTzYi3M
関数の引数の参照が良く分らないのですが、
とりあえず全ての引数に&を付けておくと良いでしょうか?

void func(int &i, double &d, std::string &str)
{
 // ...
}

void main()
{
 int i;
 double d;
 std::string str;
 func(i, d, str);
}
0025デフォルトの名無しさん2014/08/03(日) 19:47:43.07ID:lrcEZtj9
>>23
エラを張れ

>>24
実質的に*を付けないポインタみたいなもの。
0026デフォルトの名無しさん2014/08/03(日) 20:09:02.39ID:ea9Ca7zy
>>25
http://i.imgur.com/7AyiLCS.jpg
一応ヘッダファイルです↓
http://www.stroustrup.com/Programming/PPP2code/std_lib_facilities.h
0027デフォルトの名無しさん2014/08/03(日) 20:28:26.74ID:F9uiJQaz
>>26
ヘッダのパスが通ってないだけでしょ
0028デフォルトの名無しさん2014/08/03(日) 20:31:49.84ID:dJ8y5LvH
>プロジェクトのヘッダファイルの所に使用したいヘッダファイルを入れて
ヘッダファイルが居る位置はソースと同じフォルダじゃないと、
(デフォルトでは)ダメなんじゃなかったっけ?

VSのヘッダーファイルのツリーからファイルの追加で、
ソースがおいてあるフォルダとは余所のフォルダのファイルも指示できるけど
そこへは基本的にパス通ってないから include "" では見えない
0029デフォルトの名無しさん2014/08/03(日) 20:38:56.48ID:dJ8y5LvH
端的に
 SRC_DIR/hello_wordl.cpp
 SRC_DIR/std_lib_facilities.h
なら通ると思う

 SRC_DIR/hello_wordl.cpp
 SRC_DIR/INCLUDE/std_lib_facilities.h
という位置関係とか
 SRC_DIR/hello_wordl.cpp
 INCLUDE_DIR/std_lib_facilities.h
という位置関係とかで

そのソリューション指示だと依存関係は IDE 管理下で確認できるけど、
コンパイラには ファイル名 から ファイルのある位置を知る術が無いので、
デフォルトのパスから探索して終了する
0030デフォルトの名無しさん2014/08/03(日) 20:54:26.56ID:eFW9hWaw
バカに複雑な事指示しても理解出来ない。
ヘッダーファイルを新規作成して、std_lib_facilities.hの中身をコヒぺ
0031デフォルトの名無しさん2014/08/03(日) 21:20:15.57ID:AqnF5WVU
自分でどこにあるかわかってんなら相対パスでもええやん
#include "..\〜\std_lib_facilities.h"
0032デフォルトの名無しさん2014/08/03(日) 21:23:54.44ID:ea9Ca7zy
>>27
>>28
>>29
ありがとうございます、おかげで解決しました。パスが通ってませんでした。
(全く別の所にあってもIncludeの後にヘッダファイルのパスを書くと出来ました!
ソースファイルの上の階層にヘッダファイルがある場合は../../の表現を使っても出来ました!)

>>30
それは(´・_・`)最終手段ですね(´・_・`)
0033デフォルトの名無しさん2014/08/03(日) 21:24:55.99ID:ea9Ca7zy
>>31
ありがとうございます、それで出来ました!
0034デフォルトの名無しさん2014/08/03(日) 21:44:32.68ID:wVcpRmRy
いや、むしろ安定の絶対パスだろ
0035デフォルトの名無しさん2014/08/03(日) 22:50:17.34ID:1KfsaatJ
問題原因の切り分けをするときはまず絶対パスだな
0036デフォルトの名無しさん2014/08/04(月) 00:16:53.93ID:cek/HGoY
>>35 切り分けできる男
>>34 切り分けできない男
0037デフォルトの名無しさん2014/08/04(月) 02:14:34.43ID:LgeiXwf0
クラスをnewして失敗した時の動作はどうするのがポピュラー?
・if( == NULL)
・try catch
・他(プロセス強制終了etc)
0038デフォルトの名無しさん2014/08/04(月) 02:21:35.90ID:cy2se7Pq
そもそもなんでnewするんだ?
先ずはそこからだ。
0039デフォルトの名無しさん2014/08/04(月) 02:36:26.93ID:VfXJ4NBK
newの失敗は、メモリ不足などのシステム要件のエラーだから、
プログラムでどうこう出来るものではない

メモリを多くするなど、システム要件を満たす環境に、
変えてもらうしかない
0040デフォルトの名無しさん2014/08/04(月) 02:38:52.49ID:NH51Dz+L
限界はあるけど使用量を少なくするように工夫するぐらいはあるだろ。
0041デフォルトの名無しさん2014/08/04(月) 03:23:26.97ID:LgeiXwf0
ありがとう

>>38
論点とずれてる気がするが
WM_DESTROYで使用できなくなる機能Aをデストラクタで使用する場合
static宣言してるとWM_DESTROY後にデストラクタが呼ばれて機能Aを使用しようとして停止する
それを回避するために
deleteクラス
→機能A解放
ってやるようにしてる

>>39-40
つまり基本的には失敗=プロセス異常終了でもokと言う事でいいのかな
0042デフォルトの名無しさん2014/08/04(月) 05:36:16.73ID:VfXJ4NBK
OSにも、2GB以上などのメモリの要件があるのと同じで、
使用条件を満たしていなければ、どこかでシステムダウンする

ただし、プログラムのバグや、何万回も再帰したのなら、
プログラマーの責任
0043デフォルトの名無しさん2014/08/04(月) 06:05:08.09ID:hDvHywGx
メモリは使い切ってなくても
メモや断片化で希望のサイズが
確保できなくて失敗することがある
0044デフォルトの名無しさん2014/08/04(月) 06:23:01.79ID:UAhHAw7M
>>37
> クラスをnewして失敗した時の動作はどうするのがポピュラー?

って聞かれたら、ファイルをほぞんするとか、再起動して回復を図るとか、ログ取ってそのまま終了とか... って答えるんだが。
なので、

> ・if( == NULL)
> ・try catch

と

> ・他(プロセス強制終了etc)

は、レベルが違うように思う。
0045デフォルトの名無しさん2014/08/04(月) 12:20:39.89ID:dahEKpKn
>>24
カメレス
怖くないっすか
0046デフォルトの名無しさん2014/08/04(月) 13:38:12.42ID:FbNkdJ2c
少なくとも「プロセス終了。ハンドルされない例外」とユーザーに表示されるのと
「エラーが発生しましたお問い合わせください」と表示されるのでは
ユーザーの怒りの度合いが違う。

どうしようもないので何をしてもいいというのは
犯罪は犯す奴が悪いので警察は要らないという程度に乱暴な発想
0047デフォルトの名無しさん2014/08/04(月) 15:44:51.27ID:hieQ0nGz
何をしてもいいとはだれも言ってなくないか
プログラム側でメモリ不足をどうしようもないってのは、
カギを閉めても窓を割られたらどうしようもないから、その時は警備会社と警察に任せるよという程度に普通の発想だと思うが

つーかエラー表示をどうしたらいいかって質問でもないしな
0048デフォルトの名無しさん2014/08/04(月) 15:59:27.42ID:jcCYniN9
問題が発生した瞬間のプログラムの動作
について質問している>>37にたいして
アスペは
「メモリを増やすしかない」
「警備会社に任せて事後処理するのが普通」
などとずれたことを言い出すから困る
0049デフォルトの名無しさん2014/08/04(月) 20:48:03.69ID:UAhHAw7M
>>48
>>37 の質問自体がちょっとずれてるから無問題
0050デフォルトの名無しさん2014/08/04(月) 21:43:04.51ID:4x8QxR6V
Windowsで自作のC++のライブラリで、関数実行時のエラーコードをどうするか
悩んでいます。とりあえずwinerror.hで定義されているエラーコードを
そのまま流用する方式で行こうかなと思うのですが、どうでしょうか?
return ERROR_SUCCESS;
みたいに。
他に良い方法ありますか?
0051デフォルトの名無しさん2014/08/04(月) 21:47:18.34ID:NH51Dz+L
>>50
Windows意外で使わないならそれでもいいんじゃない?
0052デフォルトの名無しさん2014/08/04(月) 22:00:41.67ID:4x8QxR6V
>>51
レスありがとうございます。
Windows以外でも使う場合は、どうすればよいでしょうか?
0053デフォルトの名無しさん2014/08/04(月) 22:02:28.90ID:LgeiXwf0
ありがとう

>>42,43,44,46,47
できなかったらその時点でできる終了処理と通知して終了する事にするわ

>>44,49
> ・他(プロセス強制終了etc)
ってのは自分が思いつかない何かがあるかも知れないから書いただけで他意は無いよ
プロセス強制終了はetcつけたからわかると思ったけどあくまで例えね
0054デフォルトの名無しさん2014/08/04(月) 22:34:49.43ID:UAhHAw7M
>>53
いや、例なのはわかってる

if( ) とか例外はメモリー確保失敗を検出する方法で、プロセス終了はそのあとの動作でしょ?

なので if( ) でチェックしてプロセス終了させるとかのように使うから、選択肢として並べるのはおかしい。

みんな親切だから、多分確保失敗時にどうするのが普通なのかを聞きたいんだろうなと、推測して答えてるんだろうと思う。
だから、誰も if( ) とか try に触れてないでしょ。

もしプロセス云々書いてないなら、好きにしろとか言われて終わってたと思うぞ。
0055デフォルトの名無しさん2014/08/04(月) 22:36:00.54ID:eWAxusEw
http://www.buzzword.jp/img/face10.png
0056デフォルトの名無しさん2014/08/04(月) 22:55:06.04ID:LgeiXwf0
>>54
○○だからifの方が〜
××だからtry catchの方が〜
異常終了前は△△した方が〜
ってのを期待して3つ書いたけど

・判定は(if) or (try catch) どっちが主流か
・判定後から終了までの処理はどんな感じが主流か
って感じの書き方の方がよかったかな

3つから選んでって意味では無かったすまん

if or tryは好きにでいいのかありがとう
0057デフォルトの名無しさん2014/08/04(月) 23:17:17.44ID:zBF47n0e
少なくともC++ではメモリ確保出来ないときにnullポインタチェックは(new( nothrow)使うのが)一般的ではないな。
0058デフォルトの名無しさん2014/08/05(火) 05:27:27.61ID:B8XLPQcD
デストラクタが走るタイミングを制御したくてnewしたいだけなら、
そもそも確保に失敗することもないような。
それはさて、フェーズに分けて考えるなら、こんなもんだろ。

・検出
try catch

・対処
可能ならダイアログを出して異常終了
0059デフォルトの名無しさん2014/08/05(火) 05:30:00.42ID:ANChekkV
殺人トラクターに見えた
0060デフォルトの名無しさん2014/08/05(火) 23:23:02.28ID:P2cYkmKJ
VBScriptファイルをC++で実行したいのだが、くぐっても良く分らないのだが、
そもそも可能なのか知りたいのだが、可能な場合デバッガーでステップ実行
出来るのかな?
0061デフォルトの名無しさん2014/08/05(火) 23:31:11.10ID:JYX/3P/h
>>60
たぶん自分が何をしたいのかがよくわかってないと思う

ところでくぐるってなんだ?ググるのことか?
0062デフォルトの名無しさん2014/08/05(火) 23:39:31.76ID:AfbB56Nf
VBSをJavaバイトコードかLLVMに翻訳して処理系を作れば?
0063デフォルトの名無しさん2014/08/05(火) 23:44:05.44ID:AfbB56Nf
>>60
「コンパイラ・スクリプトエンジン」相談室16
http://peace.2ch.net/test/read.cgi/tech/1405822579/
0064デフォルトの名無しさん2014/08/05(火) 23:48:46.07ID:P2cYkmKJ
>>61,62,63
レスありがとさん。
いや、そんな高度な事したいのではなく(やる知識もないので)、
やりたいのは
string s1="VBScriptファイルの1行目";
string s2="VBScriptファイルの2行目";
string s3="VBScriptファイルの3行目";
...
execute_VBScript(s1);
execute_VBScript(s2);
execute_VBScript(s3);
...

的な感じでいいんだけれど。
0065デフォルトの名無しさん2014/08/05(火) 23:59:50.28ID:AfbB56Nf
http://codezine.jp/article/detail/1827

これはJScriptの場合だが(以下略
0066デフォルトの名無しさん2014/08/06(水) 00:10:58.30ID:hW+yaDMz
>>65
おお、サンキュウ。このページは初めて見る。
ちょっと試してみるわ。
0067デフォルトの名無しさん2014/08/06(水) 00:28:06.25ID:hW+yaDMz
それは砂丘の座敷わらしだろ
0068デフォルトの名無しさん2014/08/06(水) 00:29:28.55ID:hW+yaDMz
ああ、間違えた。
0069デフォルトの名無しさん2014/08/06(水) 00:43:44.34ID:ejJORmgK
なんだこの座敷童。
0070デフォルトの名無しさん2014/08/06(水) 01:08:15.49ID:hW+yaDMz
ちょっと試してみたのだけれど、JScript版をVBScriptに
移植する能力が無いので困っている。
0071デフォルトの名無しさん2014/08/06(水) 02:24:54.75ID:Rc+eyo3S
DLL内の関数で
class {
public:
void func(void);
};
このfuncをexeから利用する事ってどうやればできる?

それともfuncをクラス外に出すのが普通?
0072デフォルトの名無しさん2014/08/06(水) 03:00:47.98ID:Wb6IUvWi
ttp://msdn.microsoft.com/ja-jp/library/81h27t8c.aspx
vsならこれでできる
0073デフォルトの名無しさん2014/08/06(水) 03:28:23.21ID:q+H8JIOY
>>72の方法って、.libでエクスポートする場合に有効な方法で、
.DEFなどによる名前でエクスポートする場合には使えないんじゃなかったっけ?

.libでエクスポートする場合DLLがアップデートされDLL内の(classのメンバ)関数の
アドレスが変わったらそれを使うEXE(やDLLなど)もリビルドが必要。

アプリのプラグインDLLやWindowsUpdateなど、DLLのみ差し替えても
EXE(やDLLなど)をリビルドせずそのまま使える "名前でのエクスポート" で
DLLを実装したいなら、仮想関数テーブルを挟むのがポイントですね。

※              ↓「サクラ」を「sakura」に変えてください(sakuraのURLを書こうとすると「さくらが咲いてますよ。」で書けない)
http://blackscarecrow.サクラ.ne.jp/junk/C&C++/PP03.htm
のサンプルコードが分かりやすいかも。

間違ってたらすみません。
0074デフォルトの名無しさん2014/08/06(水) 07:17:14.75ID:PEaAzLNP
>アップデートされDLL内の(classのメンバ)関数の
>アドレスが変わったらそれを使うEXE(やDLLなど)もリビルドが必要

んなわけねーだろ
0075デフォルトの名無しさん2014/08/06(水) 08:24:14.21ID:3bVUJ5Fe
>>73
.defはたしかにC++では使えんが、dllexportならC++のクラスやメソッドも名前がexportされるから
別に問題じゃない。
#コンパイラの混在はできないが。
逆に仮想関数はvtable内の位置が変わるとまずいから、よくわかってないなら避けたほうが無難。
0076デフォルトの名無しさん2014/08/06(水) 08:42:42.67ID:sXmmxXua
コンパイラの混在はけっこう不安要素だね
古いVSに新しいVSで作ったDLLが結合できなかったりしそう
0077デフォルトの名無しさん2014/08/06(水) 08:43:27.11ID:Wb6IUvWi
そういう時こそCOMですよ
0078デフォルトの名無しさん2014/08/06(水) 13:48:02.21ID:hW+yaDMz
Win7のVS2013のC++で
MessageBox()を表示した時にタスクバーに表示されるアイコンを
指定する方法ありますか?
0079デフォルトの名無しさん2014/08/06(水) 13:50:22.52ID:7Yid+G+a
メッセージボックスごときがタスクバーに顔を出さないでください
0080デフォルトの名無しさん2014/08/06(水) 13:53:43.62ID:hW+yaDMz
>>79
普通にやったらタスクバーにアイコンが出るんですが。
皆さん、出ませんか?
0081デフォルトの名無しさん2014/08/06(水) 15:56:18.98ID:N2WBO7yk
でない。
hWndを0にするとアプリと重なって出るけど…
0082デフォルトの名無しさん2014/08/06(水) 16:10:52.00ID:WSzGEN/V
質問失礼します。
入力画像が、複数あるテンプレート画像の中のどの画像と最もマッチングしているかをSURFを使って調べるにはどうしたらよいでしょうか。
よろしくお願いします。
0083デフォルトの名無しさん2014/08/06(水) 16:12:58.71ID:3t2H8u7I
MessageBoxに限らず、システムメニュー持ったwindow で
オーナーが NULL なら、タスクバーに積み重なってくけど、
非NULLなら タスクバー上には出ない
0084デフォルトの名無しさん2014/08/06(水) 16:19:36.33ID:3t2H8u7I
>>82
ここいらへん ttp://aidiary.hatenablog.com/entry/20091102/1257167398
から続けて読むともしかしたら

入力画像から得られる 特徴量ベクトル郡Vs
テンプレート画像の 特徴量ベクトル郡Vt x テンプレートの種類分

特徴量ベクトルのつきあわせ
0085デフォルトの名無しさん2014/08/06(水) 20:02:55.18ID:hW+yaDMz
アプリ実行時に使う2キロバイト程のテキストデータを
現状はテキストファイルから読み込んでいる
のですが、それだとまる見えなので、プログラム中に
入れてしまいたいのですが、
char data[]="テキストファイルの中身をここに貼り付ける"
みたいな方法以外にお勧めな方法有りますか?
0086デフォルトの名無しさん2014/08/06(水) 21:45:58.99ID:MTWJpzk3
拡張子を.unkoにする
0087デフォルトの名無しさん2014/08/06(水) 22:21:35.52ID:1M326YIX
>>85
Windows ならまずリソースに入れることを検討するのでは?
0088デフォルトの名無しさん2014/08/06(水) 22:52:26.07ID:CTQUcynJ
データ=リソース
という短絡的発想がバカっぽい
0089デフォルトの名無しさん2014/08/06(水) 23:03:24.22ID:Rc+eyo3S
非難だけして解決策は無いレスは気にしなくていいからな
0090デフォルトの名無しさん2014/08/06(水) 23:08:55.87ID:PY3MTauC
て言うか、プログラムと一体化 ⇒ リソース は珍しくない
>>88 は観点がちょっとおかしい
0091デフォルトの名無しさん2014/08/06(水) 23:53:57.11ID:l8HQ1jfJ
>>89
ブーメラン乙
0092デフォルトの名無しさん2014/08/07(木) 00:38:43.18ID:zC3TsviY
>>88と>>90は無限ループ
0093デフォルトの名無しさん2014/08/07(木) 01:19:10.54ID:1cACSwRn
>>92
ループの意味がわからん

>>89 と >>91 ならまだしも
0094デフォルトの名無しさん2014/08/07(木) 01:54:45.98ID:3T9P4myy
>>85
つ ユーザー定義リソース
何でも抱けるよ
0095デフォルトの名無しさん2014/08/07(木) 08:15:40.74ID:OmP50o4u
>>74,75
そうなんですか。訂正ありがとう。

>>75
名前がエクスポートされるって言っても、
「zzz@@aaa」とか記号の並んだ文字列として…じゃなかったかな?
あと、stdcallにすればコンパイラ混在しても大丈夫では?

たびたびスミマセン。
0096デフォルトの名無しさん2014/08/07(木) 11:01:52.77ID:7UtLjkdT
関数ポインタpFuncがNULLならpDummyFuncを呼びたいんだけど
pDummyFuncがクラスのメンバ関数の場合どうすればいいかな?
0097デフォルトの名無しさん2014/08/07(木) 11:33:51.91ID:JKDdryz1
みなさんありがとうございました。
リソースファイルでうまく行きました。
0098デフォルトの名無しさん2014/08/07(木) 11:42:42.26ID:qKlYqGRI
>>96
std::functionで
0099デフォルトの名無しさん2014/08/07(木) 13:03:07.98ID:7UtLjkdT
>>98
ありがとう

関数ポインタpfuncがNULLの場合何もしないようにするのはどうすればいいかな
typedef VOID (WINAPI *Sample)(VOID)
((Sample)pfunc)()
この場合
if(pfunc == NULL) {
((Sample)pfunc)()
}
とするしかない?

というのは呼ぶ時に分岐するんじゃなくて内部で分岐させるために1つ関数挟んで
BOOL check(result, pfunc)
{
if(pfunc == NULL) {
return FALSE;
}
result = pfunc;
return TRUE;
}

if(((Sample)check(&result, pfunc))() == FALSE){
//nullだった
}
どうにかしてこんな感じにできないかな
0100デフォルトの名無しさん2014/08/07(木) 13:17:50.40ID:7UtLjkdT
前半
正 if(pfunc != NULL)
誤 if(pfunc == NULL)
0101デフォルトの名無しさん2014/08/07(木) 13:20:19.39ID:gf97lcsK
何したいのかわからん
check()の返り値はboolでしょ?
nullチェックはできるようだし何を聞きたいのかも分からん
0102デフォルトの名無しさん2014/08/07(木) 14:18:26.01ID:7UtLjkdT
>>101
わかりにくくてごめん

やりたい事としては
check(result, pfunc) // 引数を指定してpfuncを渡したい
→pfuncがNULLならFALSEを返す
→pfuncがNULLじゃなければpfuncを実行してpfuncの戻り値をresultへ格納してTRUEを返す
でこのpfuncの戻り値・引数の型や数は一定ではない

こんな場合checkを呼ぶ時点でpfuncの引数を指定するのはどうやったらできる?
自分でも意味わからんようになってきたわ
0103デフォルトの名無しさん2014/08/07(木) 16:46:06.51ID:7QbgVQGZ
すごく乱暴な方法だけど、マクロ経由のインライン展開かねぇ
http://codepad.org/W8080HvO

制限: 関数ポインタ部分は リテラルの 0 や NULL を渡せない 変数経由でよろ
0104デフォルトの名無しさん2014/08/07(木) 16:56:01.26ID:7QbgVQGZ
追補: pfunc が 戻り void の関数ポインタ になるのはだめー
0105デフォルトの名無しさん2014/08/07(木) 18:58:47.05ID:gmnku58x
C++なら可変個引数テンプレート一択
Cなら可変個引数のマクロだろ
あVisual C++には無いんだっけ?
0106デフォルトの名無しさん2014/08/07(木) 21:02:01.27ID:7UtLjkdT
>>103
ありがとう!

>>105
VC++でも
macro(value1, ...) sample(value1, __VA_ARGS__)でできるよ
0107デフォルトの名無しさん2014/08/07(木) 23:20:45.31ID:yuOaZbMp
>>95
「マングリング」でググれ。
マングリング規則はコンパイラごとに違うから混在はできないものと思っていたほうがいい。
呼び出し規約の話とはまた別だ。
0108デフォルトの名無しさん2014/08/07(木) 23:33:38.33ID:PVmoVqTz
引数のスタックへの詰み順
(スタックの巻き戻しを呼び出し側でやるか、呼び出され側でやるか)
まだ何かあるんだろうな 呼び出し規約
0109デフォルトの名無しさん2014/08/07(木) 23:39:20.38ID:GYiGBmdZ
64bitになって情報が錯綜したことで呼び出しはさらにカオスに
0110デフォルトの名無しさん2014/08/08(金) 00:45:04.00ID:B23vVFp/
64bitはfastcall固定だろ?
0111デフォルトの名無しさん2014/08/08(金) 00:51:34.75ID:m6I/Kwd1
バカは新たに覚えることが一つ増えることが大きなストレスなので
0112デフォルトの名無しさん2014/08/08(金) 01:39:02.11ID:KHsP8XKA
__vectorcallは別物だっけ?
0113デフォルトの名無しさん2014/08/08(金) 22:48:59.68ID:x6pgPkV/
c++での重力多体問題のプログラムについての質問です。
物体同士の距離を計測し、その間に働く力を調べるという単純なものです(計算回数は物体数の二乗になる)。
このプログラムで扱える物体数の限界を知りたいのです。

パソコンのスペックや限界をどう決めるかにも依ると思うので物体数と計算時間の関係式を教えてくれませんか?

一応自分でも考えてみました
計算時間=(物体数^2 × 1ループのステップ数)/CPUのクロック数
で求めることが出来そうだと考えたのですが、四則演算やその他演算などのステップ数が分かりませんでした。
0114デフォルトの名無しさん2014/08/08(金) 23:53:46.60ID:01BFu9Gu
>>113
計算式にもよるしCPUの種類にもよる。
実験して計測すれば、1ループあたりの時間がわかるから、
あとは物体数から全体の時間が推定できるでしょ。
0115デフォルトの名無しさん2014/08/08(金) 23:58:20.12ID:gKCHEkZ/
try {
}
catch(int i, char *&s) {
}

こんな感じで複数の引数で例外をcatchってできる?
できるとしたらthrowする時どう書けばいい?
0116デフォルトの名無しさん2014/08/09(土) 00:36:57.87ID:kN50ePbr
>>115
出来ない。
std::exception派生してメンバに入れろ。
tupleで括ってthrowも出来るけどそもそもstd::exeption以外をthrowするのはあまりよろしくない。
0117デフォルトの名無しさん2014/08/09(土) 00:43:50.18ID:6vo/MVse
>>116
ありがとう
0118デフォルトの名無しさん2014/08/09(土) 04:44:32.02ID:6vo/MVse
こんな感じで可変引数を展開せずにそのまま別の関数の引数にするってできる?
func(format, ...) {
 func2(format, ...);
}
0119デフォルトの名無しさん2014/08/09(土) 04:52:21.78ID:RARSJSh7
もちろん
0120デフォルトの名無しさん2014/08/09(土) 06:02:40.10ID:AkXpz4Sp
いいえ、できません
0121デフォルトの名無しさん2014/08/09(土) 06:03:29.08ID:sPU18Xtd
>>118
func2()がvprintf()などのようにva_listを受ける関数ならできる。
逆に言えば、func2()のプロトタイプがfunc1()と同じならできない。
func1()内で環境依存の方法を使えば、或いはできるかも知れんが。
0122デフォルトの名無しさん2014/08/09(土) 06:38:12.95ID:6vo/MVse
>>121
ありがとう
0123デフォルトの名無しさん2014/08/09(土) 06:38:39.99ID:tuwrl1wM
>>116
>std::exeption以外をthrowするのはあまりよろしくない

理由は?
0124デフォルトの名無しさん2014/08/09(土) 06:49:28.67ID:kN50ePbr
>>123
受け取る側が対処しづらい。
0125デフォルトの名無しさん2014/08/09(土) 08:25:13.71ID:s/pNwkYb
wchar_tに対応してない糞なstd::exceptionは使う気がしません
0126デフォルトの名無しさん2014/08/09(土) 09:13:14.64ID:kN50ePbr
wchar_tってなににつかうの?
0127デフォルトの名無しさん2014/08/09(土) 09:40:59.82ID:Vxx37Jb0
そんなにwchar_tが必要なら
派生して対応させればいいだろう。
0128デフォルトの名無しさん2014/08/09(土) 10:12:48.97ID:+T7xdrkU
> 受け取る側が対処しづらい。

意味わからん、>>124 が対処できないだけじゃね?

>>125
ほんこれ、そろそろなんとかしてほしいもんだ。
0129デフォルトの名無しさん2014/08/09(土) 12:10:41.36ID:aGEftFoO
>>114
ありがとう
0130デフォルトの名無しさん2014/08/09(土) 12:13:49.49ID:Vxx37Jb0
完全に中で閉じて使う分にはどうでもいいんじゃね。
まあそういうつもりの仕様すら公開されていない例外が、間違って外に漏れてきたら
取り合えずstd::exceptionで受けてwhatで
素性を見てみたくなるな。
0131デフォルトの名無しさん2014/08/09(土) 12:22:15.53ID:gYP0Auob
今更wchar_t使うメリットって何よ
0132デフォルトの名無しさん2014/08/09(土) 12:23:23.89ID:RARSJSh7
今更char使うメリットって何よ
0133デフォルトの名無しさん2014/08/09(土) 12:31:22.87ID:gYP0Auob
>>132
wchar_tよりマシ。
0134デフォルトの名無しさん2014/08/09(土) 12:32:58.93ID:Vxx37Jb0
utf-8で扱うのが楽すぎて
0135デフォルトの名無しさん2014/08/09(土) 12:39:57.76ID:gH6dyz5c
wchar_tの_tって何?
wchar のほうが良くないか
0136デフォルトの名無しさん2014/08/09(土) 12:41:59.21ID:RXuWJHc/
アプリケーションは外部(ファイル/通信)とのやりとりはUTF-8でして
内部処理はwchar_tの方が扱いやすい
0137デフォルトの名無しさん2014/08/09(土) 12:44:27.16ID:gYP0Auob
char32_tとかならメリットわかるけど、
wchar_tは一文字の長さ固定で扱えない環境あるし。Windowsとか。
そんな環境でも固定長だと思って途中でぶった切るバカが必ずいるし。
固定長で扱える長さの環境と固定長で扱えない長さの環境が存在してるからどう扱えばいいのかわからないんだけど。wchar_t推してる連中はどうしてんの?


>>135
ググれ
0138デフォルトの名無しさん2014/08/09(土) 12:46:46.07ID:Vxx37Jb0
合成文字とか言う仕組みのせいで
wchar_tでも結局手間は変わらないような

wchar_tが16bitなwindowsだとサロゲートペアで日本語限定でも問題出てくるし
0139デフォルトの名無しさん2014/08/09(土) 12:58:27.92ID:RARSJSh7
合成文字なんて使うやつが悪い
問題になってから考えればいい
0140デフォルトの名無しさん2014/08/09(土) 12:58:32.23ID:RXuWJHc/
文字の管理単位がUnicodeのコードポイント単位なのとバイト単位なのでは
扱いやすさがぜんぜん違うんだが
可変長をいいわけにして思考停止してね?
0141デフォルトの名無しさん2014/08/09(土) 13:00:52.29ID:gH6dyz5c
>>137
_tでググっても分からんかった。
stringに対しwstringなら
charに対しwcharの方がスッキリする。
それにタイプする時にアンダスコア入れにくいし。
一体誰がこんなヘンテコなwchar_tなんて名前を
付けたのかな?
0142デフォルトの名無しさん2014/08/09(土) 13:08:06.07ID:gYP0Auob
>>140
UTF-16だとコードポイント単位ですらないって言ってるんだけど。
どうやって1コードポイントを16Bitで表すんだい?
0143デフォルトの名無しさん2014/08/09(土) 13:38:40.81ID:+T7xdrkU
>>141
> 一体誰がこんなヘンテコなwchar_tなんて名前を付けたのかな?

size_t って決めた奴に言ってくれ
0144デフォルトの名無しさん2014/08/09(土) 14:38:48.88ID:gRSnwdty
後付である以上
既存のコードとかぶらないために
あえて選りすぐりのへんてこな名前をつけざるを得ない
0145デフォルトの名無しさん2014/08/09(土) 14:44:17.42ID:gH6dyz5c
俺だったら
whar
にするな。
0146デフォルトの名無しさん2014/08/09(土) 15:00:35.46ID:gYP0Auob
型名を_tで終わらせるのはPOSIXで予約されてるから付けやすいのよ
0147デフォルトの名無しさん2014/08/09(土) 16:26:58.59ID:kN50ePbr
>>140
思考停止して固定長だと思い込んでたことを指摘された気持ちはいかがですか?
0148デフォルトの名無しさん2014/08/09(土) 18:56:27.64ID:ogb0Lg1q
入力された段階でサロゲートペアを弾けばあとは固定長で扱えるから楽だな
0149デフォルトの名無しさん2014/08/09(土) 22:23:42.91ID:XnzTvHrT
>>143
なんか、わらったよ。

おまえらはsize_t 、wchar_tってなんて読んでいる?
サイズテー、だぶりゅーチャーてー?
0150デフォルトの名無しさん2014/08/09(土) 22:26:34.63ID:MOaw4cY+
さいずてぃー
うちゃーてぃー
0151デフォルトの名無しさん2014/08/09(土) 23:01:51.78ID:aGEftFoO
「ティー」じゃなくて「テー」って言う所に老いを感じる
0152デフォルトの名無しさん2014/08/09(土) 23:19:07.91ID:Vxx37Jb0
いやテーはともかく後は普通の読みなんじゃ
0153デフォルトの名無しさん2014/08/10(日) 03:00:14.18ID:/shRHOr1
>>151
聞き間違いを避ける為にあえてそう発音する人もいるらしい
0154デフォルトの名無しさん2014/08/10(日) 03:44:09.58ID:eHhQsmny
B ビー
D デー
みたいなもんだな

charのポは半角の|と被るとかあるから
wchar_tに変換してからのがいい
0155デフォルトの名無しさん2014/08/10(日) 06:49:28.06ID:9YqDJ7QI
>>154
char=MS932として話されても
0156デフォルトの名無しさん2014/08/10(日) 06:57:04.45ID:9YqDJ7QI
ここって環境依存OKなんじゃなくて、一つの環境しか知らない人が多いだけだな。
0157デフォルトの名無しさん2014/08/10(日) 07:20:18.40ID:eHhQsmny
「とか」って書いてんのに突っ込まれても
0158デフォルトの名無しさん2014/08/10(日) 08:43:19.26ID:YKEPe6r6
>>107
なるほど。C++でエクスポートされる関数名が暗号化みたいにされるのは
「マングリング」と呼ぶのですね。ありがとうございます。

やはり素の名前で関数・変数やclassをエクスポートしたければ
.DEF使うべきですね。
0159デフォルトの名無しさん2014/08/10(日) 11:31:57.69ID:qvEZGcVl
>>151
ドイツ語読みじゃ、霧
0160デフォルトの名無しさん2014/08/10(日) 12:05:22.40ID:lKd2tZDO
ドイツ語読みでキャラテー?w
0161デフォルトの名無しさん2014/08/10(日) 22:50:54.62ID:qjKPAjiz
今、数値を計算しファイルに出力するプログラムを作っています
0162デフォルトの名無しさん2014/08/10(日) 23:01:10.90ID:YfIekyq6
>>160
学生か?
0163デフォルトの名無しさん2014/08/10(日) 23:21:57.97ID:qjKPAjiz
>>161です
途中で切れていました

今、数値を計算しファイルに出力するプログラムを作っています
計算過程に -3/2乗が出てくるのですが、どう書くのが一番良いのでしょうか?

あと、計算結果が少数で出てきます
fixedで小数点以下6桁まで出せますが、さらに制度を上げることは可能ですか?
また、精度は少数を文字で出力するかバイナリで出力するかによって変わりますか?
0164デフォルトの名無しさん2014/08/10(日) 23:32:40.91ID:vHA1jMYS
有理数計算ライブラリを使えば?
0165デフォルトの名無しさん2014/08/11(月) 00:56:37.77ID:IThaQfUx
>>164
おすすめのライブラリはありますか?
0166デフォルトの名無しさん2014/08/11(月) 02:32:28.41ID:HrAPsGYd
>>163
x^(-3/2)ならpow(x, -3/2)
0167デフォルトの名無しさん2014/08/11(月) 02:35:49.60ID:vtRcS5Vo
惜しい
pow(x, -1.5)やpow(x, -3/2.0)が正解。
整数どうしの除算は整数に切り捨てられる
0168デフォルトの名無しさん2014/08/11(月) 03:30:31.58ID:HrAPsGYd
>>167
xが型がdouble,floatなら問題無い
0169デフォルトの名無しさん2014/08/11(月) 03:43:55.13ID:LBc4eQ0i
>>168
http://ideone.com/hexYNp
> 2.000000 ^ (-3/2 ) = 0.500000
> 2.000000 ^ (-3/2.0) = 0.353553
0170デフォルトの名無しさん2014/08/11(月) 05:25:45.52ID:zN3pWoAl
>整数どうしの除算は整数に切り捨てられる

そういやC++は2011年改訂でそうなったな
0171デフォルトの名無しさん2014/08/11(月) 07:43:57.75ID:OcxdK7AV
> そういやC++は2011年改訂でそうなったな
ええぇ〜〜〜〜 なんだってぇ〜〜〜〜
0172デフォルトの名無しさん2014/08/11(月) 08:06:18.35ID:xvvy75By
整数リテラルどおしの除算の結果は整数に切り捨てられるのは
Cからの流れでC++の起こりの段階からそうじゃなかったのけ?
0173デフォルトの名無しさん2014/08/11(月) 08:20:28.49ID:63aliZJh
この類いの奴は、負数の割り算で余りの符号が定義されたぐらいしか知らんわ
0174デフォルトの名無しさん2014/08/11(月) 10:03:38.34ID:IpMoPrzW
整数リテラルの除算の結果は(規約がどうかは兎も角)事の起こりからずっと切り捨てられてきたね。
切り捨ての方向が確定したのはC++11かもしれないが。

>>163
doubleの精度のままファイルに出力するには、幾つか手がある。
・(エンディアンを考慮する必要があり、IEEEであることが前提になるが)バイナリで出力。
・有効精度を充分大きく採った指数形式で出力("%.20g"くらいで運が悪くない限り大丈夫)。
・(利用側で演算する制約はあるが)計算結果ではなく、計算過程を出力。
0175デフォルトの名無しさん2014/08/11(月) 11:20:26.59ID:GA9i869X
昔MS-DOS時代に「ポータブルなdoubleの保存を
標準Cの範囲で実現するコード(基数は2限定)」というのを見たな。
ソースを見たけど「こんなことするくらいなら環境依存でいいや」
と思った記憶がある
0176デフォルトの名無しさん2014/08/11(月) 11:49:09.33ID:IThaQfUx
>>166
>>167
ありがとうございます

>>174
ありがとうございます、二番目の方法が良さそうなので採用させてもらいます
0177デフォルトの名無しさん2014/08/11(月) 21:47:42.55ID:IThaQfUx
%.20gを使ってもdoubleに20桁を格納出来ないので最高15桁のようですね。
15桁もあれば十分ですが
0178デフォルトの名無しさん2014/08/11(月) 23:32:08.05ID:A+39Zpbs
ちら裏だけど
素粒子や半導体関係で、18桁要求されたことがあったなあ
C#のdecimalが欲しかった
0179デフォルトの名無しさん2014/08/11(月) 23:51:43.06ID:9WMqh+ch
>>178
x86の浮動小数点演算は80bitで精度が約19桁だから余裕だろ
0180デフォルトの名無しさん2014/08/12(火) 00:33:05.70ID:pMraHo9U
>>179
x87よりSSEの方が速い。でも64ビット。
0181デフォルトの名無しさん2014/08/12(火) 01:49:42.79ID:TnGKLUiy
ベクターをベクターのまま何処か(HDDなど)に保存することは出来ますか?
0182デフォルトの名無しさん2014/08/12(火) 02:07:55.52ID:IbGC0kFi
シリアライズするといい
0183デフォルトの名無しさん2014/08/12(火) 04:39:03.48ID:r1RLL3ei
>>178
decimalの存在意義を理解してないおまえには無理

>>179
>x86の浮動小数点演算は80bitで
ばーか、ばーか
0184デフォルトの名無しさん2014/08/12(火) 05:08:54.18ID:FpmNu2on
>>180
0185デフォルトの名無しさん2014/08/12(火) 05:12:55.50ID:qXgriP/E
>>181
できません
0186デフォルトの名無しさん2014/08/12(火) 07:15:05.97ID:pMraHo9U
>>184 ????????????????
0187デフォルトの名無しさん2014/08/12(火) 08:59:35.37ID:NDNq9sGA
>>181
boost::serialization使え
0188デフォルトの名無しさん2014/08/12(火) 11:15:17.65ID:rw+rZn9f
.NET4.5ならBigIntegerクラスがあるじゃん
0189デフォルトの名無しさん2014/08/12(火) 13:00:10.27ID:utQRXpD1
正数と実数の区別がついていない188には無理
0190デフォルトの名無しさん2014/08/12(火) 20:03:37.07ID:N66cEg2t
>>182
>>187
ありがとう
シリアライズ一度調べてみます
0191デフォルトの名無しさん2014/08/13(水) 00:13:50.77ID:+ie/z7le
このコードがどういう考えで動作しているのかさっぱり解読できない
誰かなぜこれで動作してるのか解説してほしい
問題:ttp://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0036
回答:ttp://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=122035

最初は判定用の回答をそのまま出力しているだけかと思ったけど
自分で入力を与えても正しく出力することは確認済み
0192デフォルトの名無しさん2014/08/13(水) 00:25:30.02ID:+ie/z7le
ちなみにできるだけ読めるように展開していっている途中のコードは以下
http://ideone.com/NO0rOd
0193デフォルトの名無しさん2014/08/13(水) 01:06:08.42ID:La+C0YSw
>>191
最初に '1' が出現してからの続く 0 と 1 のパターンは、全部ばらばらだろ?
ここで、最初の '1' が出現すると i と n のカウントが始まって、
次に 1 が出現するまでの変化値が異なり、その積 i *= n も変わる。
すると、うまい具合に剰余でパターン別に別れる最小の値が % 11 ってわけよ。
0194デフォルトの名無しさん2014/08/13(水) 01:13:55.33ID:La+C0YSw
puts(...) に int 型の変数のアドレスを渡している部分は解説いらないよね
0195デフォルトの名無しさん2014/08/13(水) 02:04:34.81ID:yUu6IlV+
>>193
i *= n の積はやってないんじゃない? ||演算子の評価結果は 0 か 1 じゃなかったっけ?(処理系依存?)
だから、 i *= 0 か i *= 1 のどちらかにしかならない。
i *= 0 になるのは、初めて ‘1’ が出現して c%2==1 のとき n++ == 0 となって、i *= 1 || 0 となるとき。
このとき i は 0 にリセットされる。
最初の‘1’と最後の‘1’の位置の差が図形ごとに固定かつバラバラなので、i でその差分をカウントして判別してる。
0196デフォルトの名無しさん2014/08/13(水) 05:59:28.24ID:gYHJhUS8
初心者以前の者ですがC系の言語って
if (x>=0){〜} //A
else if (x==5){〜} //B
else{〜} //C
という処理をする場合、x=5だった時Aの処理だけでBの処理は行われないって事でいいでしょうか?
C系とまとめてますが、CとC++じゃ全然違ーよ!って感じでしたらすいません
0197デフォルトの名無しさん2014/08/13(水) 06:09:41.88ID:gAzc5rgf
はい
0198デフォルトの名無しさん2014/08/13(水) 06:14:16.74ID:gYHJhUS8
どうもありがとうございました
0199デフォルトの名無しさん2014/08/13(水) 10:55:08.47ID:Vw1Vsh7W
ABC全部有効にしたいなら
if (x==5){〜} //B
else if (x>=0){〜} //A
else{〜} //C
という順で判定する
0200デフォルトの名無しさん2014/08/13(水) 12:15:42.85ID:+ie/z7le
>>193,194
解説ありがとう!まだコードを理解しきってないですが
考え方がわかったので解読できそうです

実はputsのほうもさっきまでよくわかってなかったのですがint型と言われて気が付きました
(リトルエンディアン限定で?)1byte目に文字で2~4byte目が0になってるから
うまいこと2byte目が'\0'と読み取られるんですね
ありがとうございました
0201デフォルトの名無しさん2014/08/13(水) 12:21:44.33ID:+ie/z7le
>>195
解説ありがとう!
まだコードとしては何が正しいか読めていませんが
参考になります!
0202デフォルトの名無しさん2014/08/13(水) 18:08:43.16ID:MVRQguVP
C++11だっけ?
λとか可変長天ぷらが導入されたあたりからC++触ってないのだが
最近はなんか大きな動きあったの?
0203デフォルトの名無しさん2014/08/13(水) 21:09:51.62ID:oMecd0hy
>>201
その内、FEED C0DE に出会える日もくるさ
0xBAADF00D かも知れないが
0204デフォルトの名無しさん2014/08/13(水) 21:32:31.42ID:/Dr5wPv9
配列コピーなんですけど、たとえば old_array[i]にある奇数や飛び番の配列データを
新たに作ったnew_array[i]に[0]から連番でいれていくのは可能でしょうか
0205デフォルトの名無しさん2014/08/13(水) 21:43:51.95ID:MVRQguVP
>>204
可能ですよ
0206デフォルトの名無しさん2014/08/13(水) 21:46:55.24ID:u8W9agvo
そういうコードを書けば良い

int i, j = 0;
for (i=0; i<[old_arrayの領域分]; i++) {
 if (old_array[i] == 条件) {
  new_array[j++] = old_array[i];
 }
}
0207デフォルトの名無しさん2014/08/13(水) 22:11:32.74ID:/Dr5wPv9
>>205-206
有難うです。ど素人なもんで
new_array[j++] = old_array[i]; この辺手掛かりにちょっといじってみます
0208デフォルトの名無しさん2014/08/13(水) 22:12:32.13ID:Vw1Vsh7W
>>203
B16B00B5がいい
0209デフォルトの名無しさん2014/08/13(水) 22:27:45.98ID:yUu6IlV+
>>195
誰も気にしてなさそうだけど、変なこと書いてたのでいまさら修正。
> i *= 0 になるのは、初めて ‘1’ が出現して c%2==1 のとき n++ == 0 となって、i *= 1 || 0 となるとき。
正しくは
 i *= 0 になるのは、初めて ‘1’ が出現して c%2==0 のとき n++ == 0 となって、i *= 0 || 0 となるとき。
ごめんニャン
0210デフォルトの名無しさん2014/08/13(水) 23:22:53.17ID:ZCR6FKbx
二次元のvectorにプッシュバックしたいのですがどう書けば良いでしょうか?

また、vectorのサイズを初期化しておいてからvectorに数値を入れていくのと、プッシュバックで数値を入れいくのではどちらの方が効率的ですか?
0211デフォルトの名無しさん2014/08/13(水) 23:29:46.05ID:o4SLtD2/
無初期化でプッシュバックは遅い。
reserveしとけばメモリ動的確保・変更が連発されない。
0212片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/08/13(水) 23:43:02.05ID:JOE/IwkU
プッシュアップしたvectorをプッシュアップする
0213デフォルトの名無しさん2014/08/13(水) 23:57:45.27ID:ZCR6FKbx
>>211
ありがとうございます
reserveは初期化しない分速くなるというわけですね

>>212
>プッシュアップしたvectorをプッシュアップする
一回目のプッシュアップするvectorには名前がなく、プッシュアップの方法がわからないのですがどう書けば良いのでしょう?
0214片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/08/14(木) 00:13:18.26ID:ZDq4sTlC
vector<vector<int> > vv;
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
vv.push_back(v);
vv.push_back(v);
vv.push_back(v);
0215デフォルトの名無しさん2014/08/14(木) 00:15:11.69ID:Eelz7SYO
プッシュアップってなんだ?

典型的な二次元構造の確保方法。
std::vector<std::vector<T> > array2d;
for (int iy = 0; iy < height; ++iy) {
std::vector<T> tmpArray;
for (int ix = 0; ix < width; ++ix) {
tmpArray.push_back(T(0));
}
array2d.push_back(tmpArray);
}
実際には、初期値が一定ならtmpArrayは事前に一回作るだけで済むんだけどね。
0216デフォルトの名無しさん2014/08/14(木) 00:20:49.92ID:inXgLCev
>>213
vector<vector<int>> vec;
vec.push_back(vector<int>());
vec[0].push_back(123);
0217デフォルトの名無しさん2014/08/14(木) 00:33:00.37ID:KyBdqph/
vector<vector<T> > array2d(height,vector<T>(width,T(0)));
普通はこんな感じだろ

push_backはサイズ未定な時かreserveと組み合わせて使う

でも多次元配列なら1次元vectorで作って
添字計算するのが基本じゃね?
0218デフォルトの名無しさん2014/08/14(木) 00:36:12.24ID:tezU5ZGa
>vector<T>(width,T(0))

なんで一本グソのような無駄な配列を作って
わざわざそこからコピーして初期化すんだよ
無駄が大杉だろ
0219デフォルトの名無しさん2014/08/14(木) 00:50:02.85ID:ZDq4sTlC
emplace_backの方が早いかもしれんな
0220デフォルトの名無しさん2014/08/14(木) 00:56:21.81ID:Pr8GjnEP
char s[3];
のようにして、まだ初期化していない文字列の中身をデバッグ中に見ると、'フ'が入っていました。
てっきり初期化しなければ\0が入っているか、もしくは何が入っているか保証されないと思っていたのですが、'フ'とは何を表しているんでしょうか?
0221デフォルトの名無しさん2014/08/14(木) 00:57:18.15ID:KyBdqph/
まあ、拘るならreserveしてemplaceか、なければswapだろうけど。

Tの生成やコピーが軽いなら
あれが一番楽じゃね。

それでも元のループより効率が悪くはならんし。
0222デフォルトの名無しさん2014/08/14(木) 01:05:12.41ID:ZDq4sTlC
VC++がデバッグ時に初期化されていない領域を「フフフフフフフフフ」で埋める
0223デフォルトの名無しさん2014/08/14(木) 01:08:37.01ID:Pr8GjnEP
なるほど、VC++の仕様なんですね。
0224デフォルトの名無しさん2014/08/14(木) 01:11:32.12ID:ZDq4sTlC
フフフフフフフフフ
0225デフォルトの名無しさん2014/08/14(木) 01:11:46.83ID:KyBdqph/
TがPODでvectorのコピーコンストラクタが
memcpy使うように特殊化されているような実装ならemplace使うより速いかもよ。
0226デフォルトの名無しさん2014/08/14(木) 01:20:20.26ID:7eQlac2v
素直に書こうぜ。こうだろ。
std::vector<std::vector<T>> array2d(height);
for (auto&v : array2d) v.resize(width);
0227デフォルトの名無しさん2014/08/14(木) 02:00:35.61ID:BNqK6z00
>>214
>>215
ありがとうございます
二重ループを使えばよかったのですね
どうして気づかなかったのか•••

>>216
>vector<vector<int>> vec;
>vec.push_back(vector<int>());
>vec[0].push_back(123);
なるほど、これはきれいですね
ありがとうございます、使わせてもらいます
0228デフォルトの名無しさん2014/08/14(木) 02:08:46.40ID:BNqK6z00
>>226
forの部分がよくわかりません
それは大きさが分かっている場合ですか?
大きさが分かっていて初期化が必要ないならこれ↓で問題ないでしょうか?
vector<T> v_y;
v_y.reserve(y_max);
vector<vector<T>> v_x;
v_x.reserve(x_max);
0229デフォルトの名無しさん2014/08/14(木) 02:09:52.12ID:rkihjFNH
>array2d.push_back(tmpArray);

なんで一本グソのような無駄な配列を作って
わざわざそこからコピーして初期化すんだよ
無駄が大杉だろ
0230デフォルトの名無しさん2014/08/14(木) 07:18:11.14ID:7UqN+IkX
批判しかしないやつはスルーで
0231デフォルトの名無しさん2014/08/14(木) 11:14:43.85ID:VAiv/2zu
ブーメラン乙
array2d.push_back(std::move(tmpArray));
0232デフォルトの名無しさん2014/08/14(木) 15:29:25.75ID:8/lb7CTL
そんな糞なことは止めて行列ライブラリを作るか既存のものを使え
0233デフォルトの名無しさん2014/08/14(木) 19:02:21.63ID:sAFDwER0
確かに2D,3Dのシミュレーションする数値演算ならvectorはちょっとお呼びでない
0234デフォルトの名無しさん2014/08/14(木) 21:08:35.96ID:8EuqiR5k
widthxheight固定なら素直に連続領域とれるビットマップのような二次元配列だな
0235デフォルトの名無しさん2014/08/14(木) 21:51:37.55ID:MeOL7pvQ
キミはスパース行列を知らないのか?
0236デフォルトの名無しさん2014/08/14(木) 22:29:17.20ID:BNqK6z00
>>232
>>233
>>234
おすすめのライブラリはありますか?
用途は数値の書き込みと読み取りをするだけです
0237デフォルトの名無しさん2014/08/14(木) 22:37:39.50ID:BNqK6z00
よく考えてみれば書き込みと読み取りだけならどのライブラリでも良さそうですね
0238デフォルトの名無しさん2014/08/15(金) 01:33:12.65ID:j/DUXog9
なんでこんな需要の多そうなクラスが標準で無いんだろうと思ったけど
まさか
double unko[100];
((double(*)[10])(unko))[9][9];
って保証されてない?
0239デフォルトの名無しさん2014/08/15(金) 02:20:11.21ID:Wy6EwLn0
[99]のアクセスと同じかどうかってことなら同じじゃね
通常の配列も多次元配列もメモリ上は一直線になることは決まってたはず
ソースは探してない
0240デフォルトの名無しさん2014/08/15(金) 07:18:12.35ID:gY0bb4xI
>>216
余談だけど、前 VS が無かったから Mac で久しぶりに XCode で書いてたら、

std::vector<std::vector<_T>> vec;

で構文エラー投げられた。>> を stdin の演算子として読まれたらしい
VS ではこんな事なかったのにやはり GNU は信用できn(ry
0241デフォルトの名無しさん2014/08/15(金) 08:09:25.44ID:1yOnOTpl
>>240
それが昔からのデフォだ
vector<vector<T>>
と書いてOKになったのは C++11 からだね、VS で ++11 に対応しているの
0242デフォルトの名無しさん2014/08/15(金) 08:10:41.78ID:rBk8U20E
>>240
その>>をきちんと解釈するのはC++11からだ。
C++03では> >と書かないといけなかった。
0243デフォルトの名無しさん2014/08/15(金) 08:49:10.77ID:gY0bb4xI
>>241 >>242
そうだったのか!
どうりで XCode では std::to_string() が使えなかった訳だ。
0244デフォルトの名無しさん2014/08/15(金) 09:24:41.59ID:Lne+Px+X
そんなの常識タッタタラリラ
0245デフォルトの名無しさん2014/08/15(金) 10:40:55.78ID:vo9zRayR
ピーヒャラピーヒャラ
0246デフォルトの名無しさん2014/08/15(金) 12:54:12.49ID:Aqg845W8
http://www.buzzword.jp/img/face10.png
0247デフォルトの名無しさん2014/08/15(金) 15:40:11.62ID:rWnY0+Nz
>>243
そのXcode古すぎじゃね?
それかオプションでC++03になってるか
0248デフォルトの名無しさん2014/08/15(金) 17:57:41.55ID:gY0bb4xI
>>247
さあ、確か XCode で C++11 を導入するには
gcc を手動でアップデートしなければいけないという事も聞いたが...

XCode を貶すつもりなどないが、自分にとっては使い易いから
VS を使い続けるつもりでいるよ
0249デフォルトの名無しさん2014/08/15(金) 18:01:50.30ID:LpsonrOj
こういうときにXcodeはカスと言うような輩が居るから困る
逆もしかり って言うか身近にいる
0250デフォルトの名無しさん2014/08/15(金) 18:03:48.47ID:EAoCiRcg
C++はカス
0251デフォルトの名無しさん2014/08/15(金) 18:58:08.91ID:dVKltVs+
どんな言語でも、3ヶ月以内に自分が書いたコード以外はカス
0252デフォルトの名無しさん2014/08/15(金) 19:14:06.92ID:FG/0ESXh
設計ができない奴のコードはどれだけ高機能だろうとカス、汚物
しかも必ず「時間がなかったので」という言い訳付き
設計に基づくコードは1年前だろうと理路整然として美しい
0253デフォルトの名無しさん2014/08/15(金) 19:19:42.09ID:EAoCiRcg
emacsを使うと設計しなくてもコーディング出来ます()
0254デフォルトの名無しさん2014/08/15(金) 19:22:14.18ID:2DtLTSpw
初めから仕様の決められるようなプログラムって、創造的余地のまるでない
誰でも作れるものでしかないんじゃ
0255デフォルトの名無しさん2014/08/15(金) 19:40:09.65ID:71J7kCx5
考えるという行為を知らない
コピペコーダーのたわごとだな
設計ってのは脳みそ使うんだぞ
0256デフォルトの名無しさん2014/08/15(金) 19:49:52.48ID:2DtLTSpw
いやプログラムのほぼ最適な設計は仕様決まったらある意味自動的に出来る物だろ。

仕様が変わるからこそ、作業量優先で
増築繰り返して美しくない設計になる。
もちろんある程度の増築を想定した設計にはなっているけどね。

だからこそリファクタリングという工程が必要になるんだよ。
0257デフォルトの名無しさん2014/08/15(金) 19:52:56.78ID:UOqJaIfS
と有機生命体のコード生成機械は自負しています
0258デフォルトの名無しさん2014/08/15(金) 20:01:44.71ID:nXBM096I
外部仕様と内部仕様のどちらの話なのか区別すべき

>仕様が変わるからこそ、作業量優先で
>増築繰り返して美しくない設計になる
内部設計したこと無い人の常套句だね
こういう人は一生まともなコードは書けん
0259デフォルトの名無しさん2014/08/15(金) 20:12:33.70ID:rWnY0+Nz
>>248
んなわけない。
それに今XCodeに使われてるコンパイラはGNUじゃなくてLLVM Clang
C++11の主要機能の実装はVisualStudioより一年以上早かったよ。
0260デフォルトの名無しさん2014/08/15(金) 20:50:15.31ID:2DtLTSpw
何を言っているのか解らない。
内部設計位息をするように出来なきゃ
動くもの作れないだろ。
0261デフォルトの名無しさん2014/08/15(金) 21:10:18.85ID:aVUc5SAD
内部設計しなくてコーディングするひとが多くて困ってます(≧∀≦)ゞ
それっぽく動くものができるのが不思議
0262デフォルトの名無しさん2014/08/15(金) 21:48:52.69ID:2DtLTSpw
基本的に頭の中で内部の詳細について
設計したものを頭の外に出す作業がコーディングじゃね?
別の形で残す必要性が解らない。
言葉や別の言語で実態と乖離した説明聞くより直接コード見た方が早いだろう。

まあそこが直接繋がらない初心者には
何がしたかったのか意図を聞くこともあるけど。
0263デフォルトの名無しさん2014/08/15(金) 22:06:36.47ID:ZsqsNQIf
ソース公開された時全部TCHAR依存(関数も_tstoiとか_tprintf)だとやっぱり嫌がられますでしょうか?
いろんな方のソースを拝見するとcharで統一されていたりTCHARでも文字セットがマルチバイトになっていたりするんですが
0264デフォルトの名無しさん2014/08/15(金) 22:35:54.17ID:oVfRPgr4
C言語のAPIやリファレンスってどうやって確認する物なんでしょうか?
javaならオラクルのwebサイトに仕様が有って、eclipseでshift+F2を押せば確認出来たりするのですが。
Cだと最初から作られている物の一覧を何処から入手すれば良いのかさっぱり分かりません。
コンパイラの作成元に別々に置かれている物なんでしょうか?
0265デフォルトの名無しさん2014/08/15(金) 22:44:18.53ID:tVn+C2pp
>>263
ものによる
Windows以外で使う可能性があるならTCHARは殺害だし
Windowsで商用レベルのソフトならcharは許されない
0266デフォルトの名無しさん2014/08/15(金) 22:49:52.18ID:yLhHHOyz
charで書いといてマクロで書き換えてunicode対応にする。面倒だがこれならwindows以外ではいいだろ。
0267デフォルトの名無しさん2014/08/15(金) 23:02:39.26ID:WUgX6twt
内部utf-8にする必要があるとかじゃなけりゃwchar_tだな。
Win32APIは明示的にW版を使うようにして。
02682632014/08/15(金) 23:44:35.57ID:ZsqsNQIf
>>265
>>266
>>267
ありがとうございます
オープンソースの場合あまり環境に依存させないほうがいいということですね
C++においてもし決め打ちをするならcharとwchar_tならどちらがいいのでしょうか?
charじゃないといけない時というのはどういう時でしょうか?
0269デフォルトの名無しさん2014/08/15(金) 23:44:45.59ID:dqHjjjVM
>>265
TCHAR定義されてなかったら#defineすればいいだけでコスト0
0270デフォルトの名無しさん2014/08/16(土) 00:19:24.37ID:xuwM529Y
>>268
いや、別にWindows専用ならTCHAR使ってもいいと思うぞ。
02712632014/08/16(土) 01:24:29.38ID:k3e0e9h7
>>270
一応windows環境のソフトウェアですがなにか変なことをしていないかと思って質問しました
0272デフォルトの名無しさん2014/08/16(土) 03:06:47.92ID:FC037fxL
>TCHAR定義されてなかったら#defineすればコスト0

そんなことをしたらマイクロソフトに親を殺された人たちに因縁をつけられて
とんでもないコストが発生するだろう
0273デフォルトの名無しさん2014/08/16(土) 05:40:01.26ID:HsWLjWa1
>>271
クロスプラットフォームなオープンソースソフトウェアのソースでも見てみたら?
例えばsqliteなんかだと基本的にchar(UTF-8)でファイルパスなんかもUTF-8で受けとる。(一応sqliteのAPIにはUTF-16を受けとるものもあるけど中でUTF-8に変換してる。)
ファイルパスの文字列操作もUTF-8で統一してる。
UTF-16へ変換するのは基本的にWin32APIへ渡す直前

同じコードが動く事が重要で、サイズが変わったり中身のエンコーディングが違ったりするのは好ましくないからTCHARは嫌われるんだよ。エンコーディングが違う可能性があると迂闊に文字列操作も出来ないから。

あとWindows専用ならもうTCHARじゃなくてwchar_tかchar16_t(UTF-16)でいいんじゃない?今更ASCII版のAPI使うことなんて無いでしょ。
0274デフォルトの名無しさん2014/08/16(土) 06:02:24.34ID:5flrnqyZ
内部でUTF8(1バイト長)を使うと固定するように、
内部でUTF16(2バイト長)を使うと固定してもマルチプラットフォーム化は可能。
昔から次世代のPHP6は内部UTF16化しようとしてた。
0275デフォルトの名無しさん2014/08/16(土) 06:15:22.75ID:HsWLjWa1
>>274
今からUTF-16は中途半端でしょ。プログラムの外に文字列出すときはUTF-8の方がベターだし、メリットが無い
0276デフォルトの名無しさん2014/08/16(土) 06:34:07.99ID:4+vOhLId
>>273
ソースをUTF-8で保存して
L"ほげ"でリテラル埋め込んでると
VC++のコンパイラが暴れるんです
0277デフォルトの名無しさん2014/08/16(土) 08:25:20.68ID:KA+KE7+G
Visual C++のCランタイム関数やC++のstreamクラスってUTF-8対応していないの?
0278デフォルトの名無しさん2014/08/16(土) 08:45:24.88ID:5flrnqyZ
次期PHPは「PHP 7」になる? 2014年07月25日

いつまで経ってもリリースされないPHP 6だが、PHP 6はスキップして次期バージョンはPHP 7としてリリースするという案がPHPの開発チーム内で真剣に議論されているそうだ。
PHP 6については、当初文字列の内部処理をUTF-16で行うという方針で開発されていたが、2010年にこれを転換、開発ブランチがロールバックされるという事件があった(過去記事)。
その後4年が経ったが、未だPHP 6はリリースされていない。
PHP 6の開発は長きにわたり、かつて「PHP 6で導入される新機能」として紹介されたものが、実際には次期PHPには導入されない可能性もあるという。
そのため、新しい「PHP 7」というバージョンにすべきだ、という話のようだ。
http://developers.slashdot.jp/story/14/07/25/040238/
0279デフォルトの名無しさん2014/08/16(土) 08:55:34.89ID:aJ9J0CdO
    ↓Perl 6

  ( ゚д゚ ) ガタッ
  .r   ヾ
__|_| / ̄ ̄ ̄/_
  \/     /
0280デフォルトの名無しさん2014/08/16(土) 10:48:50.82ID:0XKtKnUw
>>277
UTF-8 はそのまま通るんじゃない?

>>278-279
Perl の話かと思ったゎ
0281デフォルトの名無しさん2014/08/16(土) 11:01:29.74ID:xuwM529Y
>>280
LC_CTYPEに依存する関数はロケールを適切に設定する必要があるな。
0282デフォルトの名無しさん2014/08/16(土) 11:16:19.08ID:x/55uCwJ
windowsはlocaleでutf-8指定しても
マトモに扱ってくれなかったような

vcのバージョンによるのかもしれないが
0283デフォルトの名無しさん2014/08/16(土) 11:51:54.48ID:iDf+bXK3
>>271
Win32 APIのA版はフォルダーの中に長い名前のファイルが混じってるだけで
ファイル一覧の列挙が動作しなくなったり
とにかくWindowsのフル機能を正常に使えない出来損ないだぞ
残念ながらWindowsアプリでは処理をマルチバイト文字に統一することは不可能
0284デフォルトの名無しさん2014/08/16(土) 23:26:59.16ID:VKTgsMtd
>>268
char で決め打ちして日本語対応しませんというのが一番楽
0285デフォルトの名無しさん2014/08/17(日) 05:26:13.50ID:3OAkF9Uq
>>284
それ日本語だけじゃ済まないから
0286デフォルトの名無しさん2014/08/17(日) 06:16:23.78ID:4EYqeDv1
>>284
ハゲどー。
そして申し訳程度に日本語に見えるバイナリ列対応w
0287デフォルトの名無しさん2014/08/17(日) 06:35:37.54ID:D8fOlFKd
>>282
UTF-8へのロケール変更はできないはず
0288デフォルトの名無しさん2014/08/17(日) 06:43:50.32ID:ruDVRpF3
windowsAPIでUTF-8は使えるって聞いたことがない。
それだったら、linuxと一緒でwchar_t版が不要だろ。
0289デフォルトの名無しさん2014/08/17(日) 06:46:25.94ID:ruDVRpF3
マイクロソフト純正でないとおもうが。
仮にUTF-8が使えたとしても、ラッパーであってUTF-16LEへ変換して渡してるだろう。
windowsは内部が全世界統一でUTF-16LEだろ。
0290デフォルトの名無しさん2014/08/17(日) 07:09:51.14ID:2ZZ0upcs
ソースコードをどう書くかの話をしているときに
裏での見えないラッパーの話をされても
>linuxと一緒でwchar_t版が不要だろ
encoding-schemeとencoding-formの区別がつかない人はすっこんでてください
0291デフォルトの名無しさん2014/08/17(日) 13:30:39.71ID:3OAkF9Uq
え?ソースコードのエンコーディングの話してたの?
0292デフォルトの名無しさん2014/08/17(日) 15:12:10.77ID:H69Yv+5P
>>288
Win32(Windows NT)ができた当時はUTF-8なんてなかったんだからしょうがない。
というか、今のようにUTFなんちゃらが乱立する状況なんて想像されていなくて
"UNI"CODEで文字コード問題は解決されると信じられていた時代だった。
#漢字Unificationの問題は別として。
0293デフォルトの名無しさん2014/08/17(日) 23:26:46.65ID:3BRjkNZj
charと竹中直人は兄弟だと思っていた1977年の春。
0294デフォルトの名無しさん2014/08/18(月) 17:23:56.00ID:ENGcdXzN
std::regexが思っていたより遅いんですが、より速い正規表現での検索を利用したい場合には何を使うといいですか?
grepソフトの検索はすごく速いので、正規表現のコストがこんなに高いとは思ってなかった
0295デフォルトの名無しさん2014/08/18(月) 17:26:46.65ID:BFPWuSMs
最適化入れてないとかデバッグモードで実行してるとかそういう話じゃないの
0296デフォルトの名無しさん2014/08/18(月) 17:42:45.77ID:0GH1txVb
何百回も呼ぶような場合はキャッシュというかコンパイルすべきかも
regcomp()
0297デフォルトの名無しさん2014/08/18(月) 18:16:45.57ID:ENGcdXzN
Releaseモードにしたら劇的に速くなった
コンパイルもやってみます
0298デフォルトの名無しさん2014/08/18(月) 21:02:44.92ID:0GH1txVb
いや、解決したならやらんでいい
0299デフォルトの名無しさん2014/08/18(月) 22:01:41.52ID:uDUM2zni
>regcomp()

んなもんは無い。

>コンパイルすべきかも

コンパイルするのが>>294に書かれてるstd::regexじゃねーの
0300デフォルトの名無しさん2014/08/19(火) 07:36:05.01ID:tg7i16ue
>>299
> >regcomp()
> んなもんは無い。

ググレカス
0301デフォルトの名無しさん2014/08/19(火) 12:02:47.11ID:F3IU7kyP
>>294の質問をしたものだけど標準ライブラリのisupperが遅かったので、
代わりにwchar_tをintにキャストして、0x41〜0x5Aの範囲にあるかを調べる関数を作ったらだいぶ速くなりました
これだけで大文字アルファベットを漏れなく拾えるかな?
isupperが遅い理由はファセットがどーたらとあったけど、要するにすべての文字コードに対応する作業で遅い?
0302デフォルトの名無しさん2014/08/19(火) 12:32:08.96ID:qv1p14qX
正規表現の話で無くなってる。
あと文字コードによっては、英文字と2バイト長以上の文字に重複部分あるかもしれない。
0303デフォルトの名無しさん2014/08/19(火) 12:37:35.60ID:F3IU7kyP
文字列でなく1文字の判定をする部分があって、そこにまで正規表現を使うことはないだろうとisupperも試してみた結果です
日本でUnicode使う分には大丈夫そうかな
0304デフォルトの名無しさん2014/08/19(火) 20:41:30.24ID:Mliou7o7
>>301
ctype.hのisupper()の実装は、配列を引いてand演算するぐらいだから速いと思うけど
0305デフォルトの名無しさん2014/08/19(火) 21:33:22.76ID:APzI7Yv4
>>304
?
0306デフォルトの名無しさん2014/08/20(水) 16:13:47.13ID:vZ4195p+
列挙体にマイナスの値は許されていますか?
0307デフォルトの名無しさん2014/08/20(水) 16:24:48.87ID:lf2AdZUe
>>306
許されてます。
0308デフォルトの名無しさん2014/08/20(水) 17:06:17.01ID:cYiGvIKn
enum EnumDayo : unsigned long {
AAAA,
BBBB,
CCCC,
};
もおk
0309デフォルトの名無しさん2014/08/20(水) 19:26:51.17ID:YTuxoJAp
staticなメンバ関数内(TimerProcとか)でthisポインタを使うためにSetWindowLongPtr使うってあるけど
thisポインタを保持するstaticなメンバ関数(例えばSaveThis())をTimerProcで呼んでThisポインタ取得でもok?
0310デフォルトの名無しさん2014/08/20(水) 19:44:36.47ID:lf2AdZUe
>>309
そこまでするならシンクルトンにしなよ
0311デフォルトの名無しさん2014/08/20(水) 20:24:01.41ID:YTuxoJAp
調べてみたらそのまんまだったありがとう
0312デフォルトの名無しさん2014/08/20(水) 21:28:31.99ID:TfPzovZL
いい加減なやり方を教えるなよ
スレッドなりタイマーなり
thisを渡せるように設計されてるだろ
0313デフォルトの名無しさん2014/08/20(水) 21:49:29.16ID:G+JA3SG/
windows の話だとして スレッドなら this を渡す機構あり
タイマーは window proc/dialog proc の一部分でしかなく、そのインターフェース上には無い
が、渡ってくる window handle や dialog param に this を持ち越す機構がある
0314デフォルトの名無しさん2014/08/21(木) 00:55:37.70ID:tdXshhs4
非侵入型のシリアライズを使おうと思ったのですが
シリアライズしたいマトリックスのクラス(class Matrix<T,2>)がテンプレートになっていて、以下でどう使えばいいのかが分かりません
この場合どう書けばいいのでしょうか?

001 namespace boost {
002 namespace serialization {
003 template <class Archive>
004 void serialize(Archive& ar, POINT& rpoint, const unsigned int version)
005 {
006 ar & rpoint.x & rpoint.y;
007 }
008 }
009 }
参考にしたページ: http://www31.atwiki.jp/lafe/pub/boost_serialization/boost_serialization.html#non_intrusive
Win32 SDKのPOINT構造体の例です。

使用したマトリックスのヘッダ: http://www.stroustrup.com/Programming/PPP2code/Matrix.h
0315デフォルトの名無しさん2014/08/21(木) 01:54:18.79ID:oEYr9vp2
>>307-308
ありがとうございます。
0316デフォルトの名無しさん2014/08/21(木) 02:13:20.14ID:3TFtsh2S
>>314
template <class Archive, class T>
void serialize(Archive& ar, Matrix<T, 2>& matrix, const unsigned int version)
とかじゃだめ? 2 のとこもいっそのことテンプレ引数にしてもよいカモ
ダメだったらスマン
0317デフォルトの名無しさん2014/08/21(木) 05:27:13.90ID:wIaa1KaJ
>>312
スレッドは引数があるけどタイマーは無くね

>>313
SetWindowLongPtrの事やんな?
0318デフォルトの名無しさん2014/08/21(木) 08:07:44.00ID:7zp3VFjW
タイマーIDだろ
0319デフォルトの名無しさん2014/08/21(木) 08:51:47.92ID:wIaa1KaJ
>>318
タイマーIDに引数として渡したいアドレスを指定するって事?

WindowProcはLPARAMで受け取れる
DialogProcもLPARAMで受け取れる
ThreadProcはArgListとして渡せる
TimerProcは?
0320デフォルトの名無しさん2014/08/21(木) 09:24:53.25ID:VRbdjlP7
IDはその名の通り識別(identify)するものなんだから
アドレスだろうと渡したい情報の配列のインデックスだろうと
連想配列のキーだろうと
好きなようにすればいい
0321デフォルトの名無しさん2014/08/21(木) 10:25:47.71ID:wIaa1KaJ
行儀悪いとかないん?
0322デフォルトの名無しさん2014/08/21(木) 10:31:04.91ID:+oI4Z8sz
this を保持できるだけの器の大きさがあれば良いんでない?
0323デフォルトの名無しさん2014/08/21(木) 12:38:38.93ID:VRbdjlP7
残念ながらWindowsのタイマー関数は
要求したUINT_PTRと結果のUINT_PTRが
異なる恐れのある糞仕様なので
厳密にはポインターは使えない
実際には動くけど
0324デフォルトの名無しさん2014/08/21(木) 13:05:15.92ID:tdXshhs4
>>316
レスありがとうございます
両方試しましたができませんでした

Tだけをテンプレ引数にした場合のエラーは
コンパイルされたクラスの テンプレート のインスタンス化 'Archive &boost::archive::detail::interface_oarchive<Archive>::operator <<<Numeric_lib::Matrix<double,2>>(T &)' の参照を確認してください
with
[
Archive=boost::archive::text_oarchive
, T=Numeric_lib::Matrix<double,2>
]

Tと2(class Arg)の両方をテンプレ引数場合のエラーは
error C2993: 'Arg' : 非型テンプレート パラメーター 'D' に対する無効な型です。

一応ソースコードです http://codepad.org/x3KfXZ5G

ヘッダの358行目にクラス定義があります
template<class T> class Matrix<T,2> : public Matrix_base<T>{・・・・・}
0325デフォルトの名無しさん2014/08/21(木) 13:17:14.78ID:oEYr9vp2
インターネットエクスプローラなど、ほとんどのアプリケーションのボタンは
マウスボタンを押して離すとクリックしたことになるんですが、VSは押した時点で
クリックしたことになりますよね。
Javascriptのマウスイベントは、上に乗っかっている要素が下の要素に
イベントを伝達するか決定します。
でもこれ、再利用を前提とするコンポーネントを作るには不合理だと思います。

ここら辺のイベントハンドリングって、こうすると良いというような
一般的な合意ってありますかね?
0326デフォルトの名無しさん2014/08/21(木) 13:25:48.62ID:bEzT5YFt
template <class Archive>
void serialize(Archive& ar, Matrix<double,2>& data, const unsigned int version)
こうだろ
0327デフォルトの名無しさん2014/08/21(木) 13:39:37.81ID:mw6JQpGe
c++です
2つの string a,bを受け取って、ある操作で創りだした新たな string を return したいときにつまりました。
簡略化した下の関数
#include <iostream>
#include <string>
using namespace std;
string return_string( ){
sting ans= ""; ans[0] = 'a'; ans[2]= b'';
return ans;
}
int main(){ cout << return_string() << endl; }
すら値"ab"を返してくれません。stringは可変長ではないのでしょうか
0328デフォルトの名無しさん2014/08/21(木) 13:40:14.09ID:mw6JQpGe
>>327
ans[2]のとこans[1]です。書き間違え
0329デフォルトの名無しさん2014/08/21(木) 13:41:17.99ID:SvY3ZvfG
>>325
Dクリック判定、マウスジェスチャ、D&D実装する場合はマウスボタンアップで判定必須
ボタンの場合はマウスダウンでもいいんだけど勢いで押したけどやっぱりキャンセルしてそっ閉じしたい、
そういうときマウスアップで判定してくれたほうがありがたい
0330デフォルトの名無しさん2014/08/21(木) 13:41:52.64ID:hozPYr3C
sting ansの長さは0のまま
0331デフォルトの名無しさん2014/08/21(木) 13:56:06.07ID:SvY3ZvfG
>>327
そのコードはこんなことやってるようなもん
char ans[0];
ans[0]='a';
ans[1]='b';

後ろに追加したいときはappend使え
0332デフォルトの名無しさん2014/08/21(木) 15:06:47.65ID:tdXshhs4
>>326
それも試しましたがエラー↓でした
コンパイルされたクラスの テンプレート のインスタンス化 'Archive &boost::archive::detail::interface_oarchive<Archive>::operator <<<Numeric_lib::Matrix<double,2>>(T &)' の参照を確認してください
1> with
1> [
1> Archive=boost::archive::text_oarchive
1> , T=Numeric_lib::Matrix<double,2>
1> ]
0333デフォルトの名無しさん2014/08/21(木) 15:36:13.00ID:oEYr9vp2
>>329
ありがとです。
0334デフォルトの名無しさん2014/08/21(木) 17:19:51.15ID:wIaa1KaJ
class クラスA : protected クラスB
これって派生クラスB内では基底クラスAのメンバをprotected以下のアクセスに格下げ
つまりこんな感じって考えてok?
クラスA public -> クラスB protected
クラスA protected -> クラスB protected
クラスA private -> クラスB private
0335デフォルトの名無しさん2014/08/21(木) 17:26:22.97ID:bEzT5YFt
基底と派生逆だろ
0336デフォルトの名無しさん2014/08/21(木) 17:35:39.56ID:wIaa1KaJ
あぁごめん
それ以外は合ってる?
0337デフォルトの名無しさん2014/08/21(木) 17:48:59.56ID:bEzT5YFt
こんな感じがわからん
ttp://homepage1.nifty.com/MADIA/vc/C__/3_5.htm
これ見たらわかるだろ
0338デフォルトの名無しさん2014/08/21(木) 18:08:53.03ID:Oxwk4EwZ
テンプレートクラスをベクタに突っ込むときの宣言でどーすんの?
std::vector<std::pair<char,int>>
的なことがしたいんだが。
0339デフォルトの名無しさん2014/08/21(木) 18:12:17.40ID:wIaa1KaJ
>>337
ありがとう
0340デフォルトの名無しさん2014/08/21(木) 18:12:41.89ID:tFtVdTfd
std::vector<std::pair<char,int>>じゃダメなのか
何がしたいのかよくわからんな
0341デフォルトの名無しさん2014/08/21(木) 18:21:55.39ID:Oxwk4EwZ
すまん、いけたわ。
エラーメッセージ見てなかった。

std::vector<std::pair<char,int> >

ねすてぃっどするときはスペース入れろって出てた。
>>演算子と見間違えるのかこいつ。
0342デフォルトの名無しさん2014/08/21(木) 18:22:10.88ID:HrzkPJhU
コンパイラが古くて、>>の間にスペースがいるとかじゃね.
0343デフォルトの名無しさん2014/08/21(木) 18:29:27.67ID:bEzT5YFt
C++11に対応したコンパイラならスペース必要ない
0344デフォルトの名無しさん2014/08/21(木) 18:54:12.63ID:npCrOf/M
見間違えるならそういうエラー自体も出せない気がするがw
0345デフォルトの名無しさん2014/08/21(木) 19:06:26.35ID:wIaa1KaJ
class クラスA { クラスB *classb };
class クラスB : protected クラスA {・・・};

クラスA *classA;
classA = (クラスA*)new クラスB // クラスBのコンストラクタも呼びたい
classA->classb = classA;

これって保証されてる?
0346デフォルトの名無しさん2014/08/21(木) 19:08:10.55ID:UsVQVoNt
>>332
Boost.SerializationはMatrix型なんて知らないんだから
ar & dataじゃだめで、サンプルのようにシリアル化する要素を並べる必要がある
0347デフォルトの名無しさん2014/08/21(木) 19:10:33.49ID:Dozm2kfh
class クラスA { クラスB *classb; };

classA = new クラスB;
classA->classb = (クラスB*)classA;
0348デフォルトの名無しさん2014/08/21(木) 21:30:01.49ID:tdXshhs4
>>346
例のPOINTのrpointなら要素の数は2つと決まっていますが、
Matrix<double,2>のdataの要素は2行2列なら4つですし
3行3列なら9つになりますよね
シリアライズにマトリックスのことを教えるにはどうすればいいですか?

ar & data(n1,n2) というのを試したのですがエラーでした
0349デフォルトの名無しさん2014/08/21(木) 21:47:07.68ID:IfLWVjiJ
windowsのシステムコールの一覧って何処かに有りませんか?
0350デフォルトの名無しさん2014/08/21(木) 21:50:12.90ID:rPSQmsIL
http://msdn.microsoft.com/en-us/library/
0351デフォルトの名無しさん2014/08/21(木) 22:01:50.26ID:3TFtsh2S
>>348
やってみたらうちのコンパイラはこれで通ったぽよ
template <class Archive>
void serialize(Archive& ar, Matrix<double,2>& data, const unsigned int version) {
for (Index i = 0 ; i < data.dim1() ; ++i) {
for (Index j = 0 ; j < data.dim2() ; ++j) {
ar & data(i, j);
}
}
}
0352デフォルトの名無しさん2014/08/21(木) 22:11:21.24ID:3TFtsh2S
キッチリやるなら Matrix のサイズとかも archive して、
復元時はサイズあってるかチェックとかしたほうがいいカモ
0353デフォルトの名無しさん2014/08/22(金) 00:30:59.83ID:u/WeUPxR
>>351
通ったぽよおおぉぉぉぉ
ありがとうございます
なるほどループですか、思いつきませんでした

>>352
読み取る時、先にサイズだけ読み取りチェックするわけですね?


シリアライズで読み取るとき、同じ型に数値などをコピーしますよね
この時コピーするのではなく、参照で受け取ることは可能ですか?
0354デフォルトの名無しさん2014/08/22(金) 07:01:16.32ID:WLzauBVV
>>331
どもです
0355デフォルトの名無しさん2014/08/22(金) 08:37:35.48ID:5g7PHH2g
>>327
sting ans= ""; ans[0] = 'a'; ans[2]= b'';
 ↓
string ans = ""; ans += 'a'; ans += 'b';
0356デフォルトの名無しさん2014/08/22(金) 10:01:13.53ID:WLzauBVV
aoj1001の問題。皆さんのお陰でコードかけてサンプルinput/outputもクリアしたのですが、いざ提出するとruntime errorになります。
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1001
http://ideone.com/ioWlkL
お手上げです・・・
0357デフォルトの名無しさん2014/08/22(金) 13:05:08.73ID:+aEHZ0rF
Windows9、来月発表へ
http://anago.2ch.net/test/read.cgi/bizplus/1408674217/
0358デフォルトの名無しさん2014/08/23(土) 03:09:34.84ID:mC1K7Tt9
windowsのシステムコールの一覧って何処かに有りませんか?
0359デフォルトの名無しさん2014/08/23(土) 05:52:45.79ID:pxFb4e0Q
Win32 API 一覧
でググったら出てくる
http://codepanic.itigo.jp/win32.html
http://msdn.microsoft.com/ja-jp/windows/hh240557
みたいなのとか
0360デフォルトの名無しさん2014/08/23(土) 08:31:46.06ID:rRuNrHr1
au氷水ディレクター戦争指名タイステーキ万国ニューヨークブカ牛肉直輸出制限業者議論病院雇用市議しょうゆダシマクッロスさむらい山雪光金ガンダム風ミックドラ社員あかうんとパズ豚骨のり塩肉マンつばめの巣担々麺野菜炒めラーメン

au氷水ディレクター戦争指名タイステーキ万国ニューヨークブカ牛肉直輸出制限業者議論病院雇用市議しょうゆダシマクッロスさむらい山雪光金ガンダム風ミックドラ社員あかうんとパズ豚骨のり肉マンつばめの巣塩担々麺野菜炒めラーメン

au氷水ディレクター戦争指名タイステーキ万国ニューヨークブカ牛肉直輸出制限業者議論病院雇用市議しょうゆダシマクッロスさむらい山雪光金ガンダム風ミックドラ社員あかうんとパズ豚骨のり肉マンつばめの巣塩担々麺野菜炒めラーメン

ニンニクヤーフォー低額土地NHK名古屋遅延電池切れ福岡損保新規駐車近代ゲームフジワイプ転職提案ラーメン
abk公式漏洩安保険王なにあげてんだよ?「わー!ふーう?」↓↓★★↓↓宿題通調印鑑カウントダウン息子議員国会大学生
0361デフォルトの名無しさん2014/08/23(土) 12:54:37.85ID:Bp5UQFmC
クラス名_private.cpp
クラス名_protected.cpp
クラス名_public.cpp

こうやってクラスのメンバ関数の定義をファイルで分けるってやりすぎ?
0362デフォルトの名無しさん2014/08/23(土) 12:57:18.97ID:r0+/L/Ow
好きにしろよw
0363デフォルトの名無しさん2014/08/23(土) 12:58:34.68ID:1z1AuVul
>>361
なんのためにそんなことしたいののかわからんので、なんとも言えん
0364デフォルトの名無しさん2014/08/23(土) 13:05:08.95ID:Z98JwpZH
VC++で関数内で宣言するstatic変数のスレッドセーフはまだ保証されていませんか?
保証されていない場合、代わりに何を使いますか?

int object::atom()
{
  static int r = 0;
  // rに何かを代入
  return r;
}
0365デフォルトの名無しさん2014/08/23(土) 13:08:22.11ID:3KKwEl/4
されてる
0366デフォルトの名無しさん2014/08/23(土) 13:14:13.59ID:Z98JwpZH
>>365
検索するとVC2013でも保障されていないと出てくるのですが。
0367デフォルトの名無しさん2014/08/23(土) 13:18:39.50ID:3KKwEl/4
>>366
rの初期化が2度起こるかって話だと思った
それなら起きないし
それ以外で同時に別スレッドから変更したらおかしくなるのは当たり前
staticつけたからってその変数がatomicになるわけじゃない
std::atomic使いなさい
0368デフォルトの名無しさん2014/08/23(土) 13:22:54.09ID:Z98JwpZH
>>367
なるほど。
atomic使うものなんですか。
昨日からここでずっと詰まってました。

どうもありがとです。
0369デフォルトの名無しさん2014/08/23(土) 13:30:54.37ID:P/wcKMRu
https://sites.google.com/site/cpprefjp/implementation-status
ここみる限り正式リリースされてるVC++(2013まで)では対応してないぞ。
次のバージョンから
0370デフォルトの名無しさん2014/08/23(土) 13:35:23.24ID:P/wcKMRu
>>367
だから二度初期化が動く可能性はある。
基本的な型であればatomic使えでOKなのは変わらないけど。
0371デフォルトの名無しさん2014/08/23(土) 14:20:01.02ID:E/A2CY4G
質問です

メモリ解放忘れた場合って、そのプログラムが終了した時点で自動的に解放されるんですか?
それとも再起動するまでずっと確保されて利用不能?
0372デフォルトの名無しさん2014/08/23(土) 14:52:05.38ID:IA1PXU7l
>>371
プロセス終了時に、OSが片付ける
0373デフォルトの名無しさん2014/08/23(土) 15:09:20.27ID:xMD8sMaI
WindowsとかUnixとか普通のPC用マルチタスクOSならそれでおk
組み込みとかでチープなOSもどきを使ってたらわからん

ただしそれをあてにして小さな手抜きをするのは罪
0374デフォルトの名無しさん2014/08/23(土) 15:25:16.20ID:Bp5UQFmC
>>362-363
ありがとう

1つのcppにあったら長すぎると思ったけど
あっちこっちに点在して逆に面倒そうだったからやめたわ
0375デフォルトの名無しさん2014/08/23(土) 15:27:03.99ID:E/A2CY4G
>>3723-373
ありがとうございます
0376デフォルトの名無しさん2014/08/24(日) 03:15:48.91ID:deJryxb/
C++で小数点計算すると
例えば6÷9=0.666‥.666... となるのが
0.666...666500 となるんだけど
どうして0.666...666600 にならないの?
それはいいとして、せめて精度悪くなってもいいから0.666...667にしたいんだけど
いい方法ない?
0377デフォルトの名無しさん2014/08/24(日) 03:42:03.72ID:xqGwHcS8
>>376
分数であつかえばいいよ
0378デフォルトの名無しさん2014/08/24(日) 07:05:19.52ID:eFBuPgHb
>>376
自分で丸め処理を書けばいいと思うよ。
0379デフォルトの名無しさん2014/08/24(日) 08:47:18.37ID:DfnrmV8q
>どうして0.666...666600 にならないの?

どうしてなると思ったの?
真の解を扱えないから捨ててるのに
真の解に基づいた結果を出せとはこれ如何に
0380デフォルトの名無しさん2014/08/24(日) 08:49:03.81ID:PkG6bn0Z
浮動小数点数という

見逃しやすい罠がたくさんあって自称プロでもきちんと理解してないのがいる

きちんと勉強して隅々まで把握するか
なるべく整数のまま扱うか
どちらかを選べ
0381デフォルトの名無しさん2014/08/24(日) 11:04:18.54ID:qI+Ajv9v
GUIを取り扱うライブラリを作っているんだけど、コントロールを識別したい時ってあるじゃないですか。
今、一つ一つのコントロールが使うメモリー量を小さくすることもできるように、
HTMLのCSSみたいなものを作っているんだけど、コントロールのデフォルトのスタイルも
有ったほうが良いですよね。
そこでコントロールを識別したい。
こういう時、C++にはstd::type_infoがあるんだけど、RTTIが必要ということで
クラスに値をハードコーディングするのとどっちが良いか迷います。

ここら辺、どうなんですかね?
0382デフォルトの名無しさん2014/08/24(日) 11:19:42.73ID:PkG6bn0Z
GUIならプラットフォーム決め打ちで割り切ったほうがいいと思うけど
0383デフォルトの名無しさん2014/08/24(日) 11:25:12.86ID:qgRrgrzi
RTTI ってコンパイラ違う者同士だと互換性なかったりしたような
DLL とかにするならやめたほうがよさそう
コンパイラ決め打ちなら RTTI でもよさそうだけど
0384デフォルトの名無しさん2014/08/24(日) 11:29:55.38ID:qI+Ajv9v
>>382
そういうところも考えどころなんですよね。
とりあえず、Win32とXlibでは動くようにしたいんだけど。

>>383
そういう問題もありますよね。
やはり、enum使ってハードコーディングですかね?
0385デフォルトの名無しさん2014/08/24(日) 11:44:18.30ID:qgRrgrzi
クラス毎にマクロ1行書いてオレオレ型情報定義してるライブラリはけっこうあるよね
MFC とか wxWidgets とかそうだった気がする (最近の流行りは知らないけど)
後々の拡張性とか考えると自前でやるほうが柔軟かも。いちいちクラス毎に書くのがいけてないけど
0386デフォルトの名無しさん2014/08/24(日) 11:50:35.41ID:dSaHZUjz
デフォルトって外部から決めるもんか?
普通自分自身にやらせね?
0387デフォルトの名無しさん2014/08/24(日) 11:54:18.65ID:trM/iCpc
C++インターフェースを使う以上コンパイラ依存するのは避けられない。
厳密にやるならDLLのインターフェースは全部Cにするか、あるいは非常に
面倒くさいがCOMにするか。

俺なら
・コンパイラは限定する
・型情報enumを返すCインターフェースを用意する
・その上でRTTIも併用してdynamic_cast

メンバにアクセスする必要がなく、型がわかればいいというだけなら2番目だけでもいい。
0388デフォルトの名無しさん2014/08/24(日) 12:07:13.78ID:EYMdVqe7
西アフリカで、アウトブレイクした潜伏期間延長型エボラの死者・罹患者の数を散布図にし近似曲線を出してみたら
片対数グラフで直線だから既に指数関数的増加だった

2014年に、西アフリカでアウトブレイクした潜伏期間延長型エボラの死者は、2014年8月半ばで1000人。←今ココ
2014年12月上旬で1万人。
この時点で世界規模で空路シャットダウン開始、世界経済大混乱

2015年5月で10万人。
2015年9月で100万人。
この時点で、第二次世界大恐慌発生

2015年大晦日で1000万人。

ちなみに
http://ja.wikipedia.org/wiki/2014%E5%B9%B4%E3%81%AE%E8%A5%BF%E3%82%A2%E3%83%95%E3%83%AA%E3%82%AB%E3%82%A8%E3%83%9C%E3%83%A9%E5%A4%A7%E6%B5%81%E8%A1%8C
:カナダ保健省のサイトでは体内に数個のエボラウィルスエアロゾルが侵入しただけでも発症するとしている
:ハマダラカが、吸血したての人の新鮮血を媒介しているという学説が浮上している

エボラ出血熱は蚊やアブに刺されただけで感染する。

:「この地域には内戦、政府による搾取、テロが長い間続いており、それによって生まれた恐怖、貧困、猜疑心などがある。エボラは耐え難い騒音に付け加えられた一つのざわめきに過ぎない」
現地では

や る 気 は 皆 無
0389デフォルトの名無しさん2014/08/24(日) 12:28:53.83ID:qI+Ajv9v
>>386
そういうものなんですかね?
今のところ、レイアウトやスタイルは完全に分離して、差し替えできるようにしているのですが。
ボタンや文字などの描画もrenderという形で分離できないか今考えてるところです。

>>385-387
とりあえず、無理と判るまでenumで行ってみようと思います。
0390デフォルトの名無しさん2014/08/24(日) 13:46:05.38ID:Mh11Tb7V
型情報ははやいうちにクラスにしたほうがいいと思うよ
enumはすぐできて最初は楽なんだけどね
どうしたって保守性が低くならざるを得ない
0391デフォルトの名無しさん2014/08/24(日) 15:37:19.84ID:qI+Ajv9v
>>390
どういった実装になるかわかる書籍かウェブサイトありませんか?
まったく想像がつきません。

enumで実装すると保守性が低いのは軽く想像つきます。
0392デフォルトの名無しさん2014/08/24(日) 15:41:50.39ID:2hAEg4zm
コンパイラ決めうちして普通に書けばいいよ。コンパイラが変わったらその都度全部ビルドし直せば。
0393デフォルトの名無しさん2014/08/24(日) 15:49:53.98ID:qI+Ajv9v
>>392
それはstd::type_infoを使うということですか?
0394デフォルトの名無しさん2014/08/24(日) 17:14:59.62ID:JA3xYGgg
自前RTTI、自分はこんな感じでやってる。
http://ideone.com/Rnto1b

うまいことマクロにしておけば、自前RTTIのために書き足すコードはヘッダ側1行、定義側1行で済む。
基底クラスポインタを持たせれば、自前dynamic_cast実装とかもできる。
0395デフォルトの名無しさん2014/08/24(日) 18:13:42.10ID:qI+Ajv9v
>>394
なるほど。
それじゃそのクラスをクラス固有の情報を保持するのと、クラスを識別するのと
両方に使っちゃおうかな。
0396デフォルトの名無しさん2014/08/24(日) 18:23:33.90ID:qgRrgrzi
リフレクションとか充実してる他言語の方がこういうのは向いてるという説もある
まあマルチプラットフォームとかユーザー側の導入のしやすさとか全部満たそうとするとなかなか決定打なさそうだけど
0397デフォルトの名無しさん2014/08/24(日) 18:32:45.05ID:2hAEg4zm
オレオレRTTI作るの何がメリットなん?
0398デフォルトの名無しさん2014/08/24(日) 19:02:38.96ID:qgRrgrzi
実行時に外部の文字列パラメータでクラス名入力してそのクラスのオブジェクトつくるとかは
オレオレRTTIじゃないとできない気がするけど、そんな機能いらないなら、
最初は enum なり type_info なりでやって、それで実現できないことがあったらオレオレRTTIするのがよさそう。
あまり最初から壮大な計画立ててもうまくいくかわからん。
0399デフォルトの名無しさん2014/08/24(日) 19:07:15.64ID:Mh11Tb7V
Windowsだとこの手の話は結局COMでいいじゃんってなる
MIDLを書こう
0400デフォルトの名無しさん2014/08/24(日) 21:16:18.17ID:mYuQxuS2
WindowsだとRTTIでいいやんてなる
貧弱なコンパイラしかない環境移植用か
0401デフォルトの名無しさん2014/08/24(日) 22:30:50.56ID:W6iBlh4S
俺らにウマシな麺食わせてくれる丸亀製麺にMAJI感謝

俺暴走機関車

麺食べ出したら止まらない

客も皆止まらない

両手を上げてついてこい

俺のライムについてこい

ライムはないが過去にはスダチ

ウマシなうどんにMAJI感謝

YOYOチェケラ♪
0402デフォルトの名無しさん2014/08/25(月) 13:10:50.11ID:fLIb5It/
char dat[2];

dat[0] = 0x02;
dat[1] = 0x46;

とした配列をsprintfを使って「0246」とするのはどのようにすればいいでしょうか?
実際にはdatの長さは可変です
0403デフォルトの名無しさん2014/08/25(月) 13:12:11.89ID:ozP5Z7zn
"%02X%02X", dat[0], dat[1]
0404デフォルトの名無しさん2014/08/25(月) 15:05:54.79ID:ye0flvPa
https://twitter.com/classtosscess/status/503784359904542722

大学のC言語の試験でif(!a)みたいに書いたら、何が起こるのこれ?って教官に聞かれて絶望したのは懐かしい。
if(a == 0)って書かないとわからない人が教える立場とかちょっと。
0405デフォルトの名無しさん2014/08/25(月) 15:16:26.60ID:3wa6ec9J
自分で思うところを言い出すことが出来ず他に持ち込んで突かせようとするカス
0406デフォルトの名無しさん2014/08/25(月) 15:24:14.86ID:psEHLa8m
>>405
すげぇひねくれた性格してんなぁ
ただドヤバカを晒してるだけだろこれ
0407デフォルトの名無しさん2014/08/25(月) 15:24:30.06ID:fLIb5It/
>>403
ありがとうございます
0408デフォルトの名無しさん2014/08/25(月) 15:37:14.04ID:ozP5Z7zn
>>406
ID変えたんですねわかります
0409デフォルトの名無しさん2014/08/25(月) 15:38:36.47ID:u8KaZ62u
自演認定は精神障害の入り口らしいから気をつけなよ
0410デフォルトの名無しさん2014/08/25(月) 15:42:47.21ID:ozP5Z7zn
>>409
ネタにマジレスですねわかります
0411デフォルトの名無しさん2014/08/25(月) 15:50:59.17ID:NMnIXJNo
ID:ozP5Z7znはなんでいきなり顔真っ赤なの?
>>404で晒されてる本人なの?
0412デフォルトの名無しさん2014/08/25(月) 16:13:06.78ID:Y64dGgkk
void *buf = malloc();
try{
ReadSomething(buf);
}catch(...){
free(buf); //読み込みに失敗したらバッファポインタを破棄
throw; //再スロー
}
return buf; //成功したらバッファを返す
のように、何か処理してから再スローするのを
vc++の__try __exceptでどのように書けば良いですか?
0413デフォルトの名無しさん2014/08/25(月) 16:53:38.39ID:FJ9UQc5Q
QZの3回線自演
0414デフォルトの名無しさん2014/08/25(月) 17:08:09.93ID:ozP5Z7zn
>>411
顔が見えるんかよ
0415デフォルトの名無しさん2014/08/26(火) 14:17:31.65ID:YMdvm9EZ
class Array2D
{
public:
Array2D() : mArray( 0 ){}


コレの最後の行
コンストラクタだってことは分かるけど何をしてるか分からない
誰か助けて
0416デフォルトの名無しさん2014/08/26(火) 14:26:28.84ID:YMdvm9EZ
すんません自己解決しました
mArray = 0;だったらしいです
お騒がせしました!
0417デフォルトの名無しさん2014/08/26(火) 18:23:49.39ID:46MkRGQY
class Sample{
private:
メンバ変数・関数有り
public:
コンストラクタ・デストラクタは同じ処理
void func(void);
};

Sample sample[5];

この状態でfunc()の処理を別々にする事はできますか?

sample[0].func();の処理と
sample[1].func();の処理は別の処理って事です

func0〜func4まで用意するのは
sample[0]ではfunc1〜func4は不要なので
無駄と思って他のやり方を探しています
0418デフォルトの名無しさん2014/08/26(火) 18:30:02.02ID:3aRL0GfD
なんか設計間違ってる気がするけど(同じクラスなんだから同じ処理であるべきと思う)
例えば
class Sample{
static int num_instances;
int _index;
public:
Sample(){_index = num_instance++;...}
void func(void){switch(_index){case 0:...} }
};
int Sample::num_instances = 0;
0419デフォルトの名無しさん2014/08/26(火) 18:32:04.02ID:beppGarV
その状況で、sampleが配列である理由が分からない。
0420デフォルトの名無しさん2014/08/26(火) 18:36:53.00ID:46MkRGQY
>>418
ありがとうございます

やっぱりそういうやり方しかないかな

Sample
 メニュー1つにつき1つ確保
 * メインウィンドウのホップアップメニュー1つ
   サブウィンドウのポップアップメニュー2つなら3つ
コンストラクタ
 メニュー読み込み・設定
デストラクタ
 メニュー削除・リリース
func()
 メニュー毎の処理

ってやってるんだけど他にいい方法あるかな?
0421デフォルトの名無しさん2014/08/26(火) 18:38:13.31ID:46MkRGQY
>>419
その理由はこの件では関係無い
理由を話した所で同じIDからレスは無いだろうけど
0422デフォルトの名無しさん2014/08/26(火) 18:44:04.03ID:3aRL0GfD
>>420
funcを関数ポインタにして、後で関数ポインタを代入
むりくり一つの関数に押し込めるよりは見た目が良くなる、位の理由だけど
0423デフォルトの名無しさん2014/08/26(火) 18:45:18.37ID:vTZxB5CV
継承してfuncオバーライドした方がよくね
0424デフォルトの名無しさん2014/08/26(火) 18:57:29.68ID:46MkRGQY
>>422-423
その2つ試してみるよ
ありがとうございましあ
0425デフォルトの名無しさん2014/08/26(火) 18:58:34.36ID:46MkRGQY
た!
0426デフォルトの名無しさん2014/08/26(火) 19:15:12.60ID:YlJj/zQ2
配列にすると、派生クラスが面倒なことになる
0427デフォルトの名無しさん2014/08/26(火) 23:35:20.34ID:RPyTIIO3
>>421
>419も>418同様設計の不備を指摘しているんだと思うぞ。
まぁ、色々やってみるがいいさ。
0428デフォルトの名無しさん2014/08/26(火) 23:39:51.31ID:jbWbUIb/
>>418
みたいなコードを職場で見たら発狂するわ
0429デフォルトの名無しさん2014/08/26(火) 23:41:24.34ID:YRa/ZVIx
ごく普通のコードじゃねーの
変数名が糞だけど
0430デフォルトの名無しさん2014/08/27(水) 18:30:52.39ID:+mS2YVhy
c++11/14とboostのどちらを優先させて勉強した方が良いですか?
0431デフォルトの名無しさん2014/08/27(水) 18:43:22.60ID:sWLZW0su
boostはいらん。バグあっても、機種・コンパイラ依存が激しくても対応できる技術がある奴が使え。
0432デフォルトの名無しさん2014/08/27(水) 18:44:52.94ID:of2UETDg
boostはSTLで賄えない時に使うものだから11/14から
0433デフォルトの名無しさん2014/08/27(水) 18:47:49.14ID:+mS2YVhy
c++11に関する和書でいいのってありますかね?
0434デフォルトの名無しさん2014/08/27(水) 18:59:40.18ID:of2UETDg
リファレンスなら「C++ ポケットリファレンス」、C++11に対応したライブラリの逆引きができる
初心者向けじゃないけど持っておきたいものは「C++テンプレートテクニック第2版」
※初版はC++11に対応してないので注意

あとは本じゃないけどC++11についてのSlideShare漁るのがコンパクトにまとまってるのでお勧め
0435デフォルトの名無しさん2014/08/27(水) 20:28:44.24ID:VV1k1rmO
今時STLなんて使ってる奴は
C++11なんて要らないだろう
0436デフォルトの名無しさん2014/08/27(水) 21:38:02.05ID:9C5BDVDX
ライブラリのリファレンスならC++11のFDIS一択だろ
言語のリファレンスなら江添のやつでも読んどけ
0437デフォルトの名無しさん2014/08/27(水) 21:52:30.48ID:+mS2YVhy
>>436
fdisって日本語で出てますかね?
0438デフォルトの名無しさん2014/08/27(水) 22:09:44.39ID:fU0DoNit
ちょっとスレちな気もするけど質問します
VS2013でフルティックをビルドする方法を教えてください
2008、2010用のソリューションファイルはあるけど、2013用のが無くて困っています
0439デフォルトの名無しさん2014/08/27(水) 22:09:54.91ID:sWLZW0su
最終草案とか規格書とかか?
それで勉強する必要がない。
コンパイラを作るやつ向けだろ。
違うが、日本語の勉強に日本語の辞典を順に覚えていくようなことだ。
0440デフォルトの名無しさん2014/08/27(水) 22:12:27.62ID:sWLZW0su
古いバージョンは、そのまま読み込んだら2013が自動変換するはずだ。
0441デフォルトの名無しさん2014/08/27(水) 22:18:39.79ID:EZjoqbjM
>>430
間違いなくc++11だね。
何てったって標準規格なんだから。
ただ、日本語の書籍は皆無に等しいかも。
と言うものの、c++03までを熟知してるなら、差分は大した事ないので、ネット情報とfdisで十分だと思う。
c++03が危ういなら、先ずはそちらから勉強すると良い気がする。
ただ、アルゴリズムとラムダ式のコンボは手軽で強力なので、ラムダ式は平行して勉強しとくと良いと思う。
0442デフォルトの名無しさん2014/08/27(水) 22:58:26.02ID:fU0DoNit
>>440
ありがとう
出来たよ
0443デフォルトの名無しさん2014/08/27(水) 23:34:37.56ID:6l9mfgq+
STLリファレンスはいつもここだな
ttp://www.cplusplus.com/
日本語のいいリファレンスサイトない
0444デフォルトの名無しさん2014/08/28(木) 20:33:32.07ID:3R7BbeAy
C++マニアック、なるサイトをよく参照するけど、あれってSTLはカバーしてなかったっけ‥
0445デフォルトの名無しさん2014/08/29(金) 01:16:18.73ID:b0G4rJJs
c++ってもう14なのか
11出た頃が昨日のようだ
働き出すと人生終わりだね
0446デフォルトの名無しさん2014/08/29(金) 20:21:51.81ID:N9rSX/Vc
いえまだ11です
0447デフォルトの名無しさん2014/08/29(金) 22:04:37.31ID:0lr9wl8v
>>443
https://sites.google.com/site/cpprefjp/
0448デフォルトの名無しさん2014/08/30(土) 08:09:23.37ID:Um2uph1/
C++のラムダ式の使いどころが分かりません。
とりあえずググって出てきたサンプルを参考にラムダ式でhello world的なものを書いてみました → ttp://ideone.com/1IHGsT
実用的とは言いがたいですね (;´Д`)

実用的(?)なラムダ式の使い方を簡単な例を交えて説明してるサイトとかないでしょうか?
ラムダ式のメリット、デメリット、こういう事に使うと便利だよ、などなど教えて頂けると嬉しいです
0449デフォルトの名無しさん2014/08/30(土) 11:54:15.01ID:Ji1S5iDD
ラムダ式は関数オブジェクトの手間を無くしして流れがあちこちに飛ばずに書ける(読める)恩恵がでかいから、そのコードでも十分役立ってるよ
戻り値は必要ない等の細かい点は関数オブジェクトとラムダ式の違いとは無関係だから触れないでおく
0450デフォルトの名無しさん2014/08/30(土) 15:50:05.59ID:uxwgTRvs
>>448
わざわざ名前をつけて関数オブジェクトを作るほどではないけど、関数オブジェクトが必要な所で使うと便利。
例えばSTLのsortで、今回だけ通常とは違ったsortをしたいって時に、比較関数をラムダ式で与えたり。
0451デフォルトの名無しさん2014/08/30(土) 16:32:38.88ID:JAT13qNM
http://moshimoswitch.main.jp/WP/wp-content/uploads/962ef5feafbd185548691a1ebf91b41a.jpg
0452デフォルトの名無しさん2014/08/30(土) 17:35:27.92ID:Um2uph1/
>>449-450
ありがとうございます。
いまいち理解できてませんが要するに、記述の簡潔さや柔軟性を向上させるのに役立つって理解でいいのでしょうか?
0453デフォルトの名無しさん2014/08/30(土) 17:37:21.34ID:JAT13qNM
その場限りの関数に、名前なんていらねえ!
0454デフォルトの名無しさん2014/08/30(土) 17:49:05.52ID:tJLON9SS
キスは交わしたけど名前は知らない♪
(*´∇`*)
0455デフォルトの名無しさん2014/08/30(土) 20:29:06.21ID:zX0EXm2R
42って何か意味のある数字なの?
0456デフォルトの名無しさん2014/08/30(土) 20:48:50.49ID:iQ5rULiv
「銀河ヒッチハイク・ガイド」っていうSF小説で出てくるネタ
42を「生命、宇宙、そして万物についての究極の疑問の答え」としている
Wikipediaにそこそこ詳しい解説がある
0457デフォルトの名無しさん2014/08/30(土) 20:59:07.28ID:zX0EXm2R
>>456
規格に42がよく出てくるのは、それを意識してるのかな?
0458デフォルトの名無しさん2014/08/30(土) 21:59:22.00ID:x9ODXT5s
>>457
つ ナンバー23
0459デフォルトの名無しさん2014/08/30(土) 22:24:52.62ID:gK3JoQWJ
数値に意味のない説明書きには42を使うことにしている
0460デフォルトの名無しさん2014/08/30(土) 22:40:22.59ID:JAT13qNM
今度から俺もそうしよう
0461デフォルトの名無しさん2014/08/31(日) 00:20:28.84ID:fFHXuzxL
auto f = (x) { x +1; }
y = f(1); // 2

最悪でもこれぐらい省略出来るまではλは中途半端なゴミとして扱われるだろうね
次期バージョンの生産性向上に期待
0462デフォルトの名無しさん2014/08/31(日) 00:30:45.83ID:ud58e6vx
14になればラムダ式の引数にもauto使えるから幾らかはましになるね
0463デフォルトの名無しさん2014/08/31(日) 11:02:06.71ID:eBtPWptu
テンプレートの濫用はバグらせた時に悪魔に変わる
0464デフォルトの名無しさん2014/08/31(日) 11:16:22.74ID:tybwCHPq
早急にコンセプトさん入れないと
0465デフォルトの名無しさん2014/08/31(日) 11:41:10.70ID:nYTEAaY7
>>459
規格としてって事?
0466デフォルトの名無しさん2014/08/31(日) 23:01:21.45ID:in6vp6NN
>>461
なんで[ ] 入れちゃったんだろうね
0467デフォルトの名無しさん2014/08/31(日) 23:04:05.66ID:815rqt02
他の式と明確に区別するためだろ
0468デフォルトの名無しさん2014/08/31(日) 23:05:46.04ID:fFHXuzxL
なくても区別できるだろうに
0469デフォルトの名無しさん2014/08/31(日) 23:41:05.84ID:H+zMJry1
>>461
#define f(x) (x+1)
0470デフォルトの名無しさん2014/09/01(月) 07:04:07.14ID:vS3rg8JQ
>>469
なにいってんだこいつ
0471デフォルトの名無しさん2014/09/01(月) 08:13:33.64ID:xK7WN8k/
>>461 ってもしかして
auto f = (x) { x +1; };
f = (y) { y*2; };

こういうのがやりたいのん
0472デフォルトの名無しさん2014/09/01(月) 11:31:08.31ID:wuF9EyNJ
値キャプチャ、参照キャプチャの区別の為じゃね
0473デフォルトの名無しさん2014/09/01(月) 16:16:56.30ID:nQghNeel
クラス内でopenだからとそのままはやばい、きちんと何をを明確にしないと
0474デフォルトの名無しさん2014/09/03(水) 00:13:09.25ID:ysyzF98G
>>473
せめて省略ぐらいは‥
0475デフォルトの名無しさん2014/09/03(水) 10:11:02.38ID:U3fwOqWK
省略すると文法的に曖昧な部分が生じそうな気がする
例示は思いつかないけど
0476デフォルトの名無しさん2014/09/03(水) 11:46:45.79ID:b0guGEId
WindowsXPにも対応してるラムダ式試せるコンパイラ教えてください。
0477デフォルトの名無しさん2014/09/03(水) 12:12:06.62ID:87udmVqa
>>476
lisp
0478デフォルトの名無しさん2014/09/03(水) 12:38:17.01ID:ekTu9Izi
LLVM 3.4.1 の clangでいけるんじゃないの
自分で確かめる気はないけどw
0479デフォルトの名無しさん2014/09/04(木) 04:20:37.95ID:NYUvnHVk
>>477
ワロス
0480デフォルトの名無しさん2014/09/04(木) 06:22:45.97ID:PztQkP0p
1個1個確かめるのに時間がかかるのが
こういう整理されてないカス言語の特徴
お前らはよくやってるよな、人生かけた罰ゲームなんか?
誰もC++やれなんて強制してないのに
0481デフォルトの名無しさん2014/09/04(木) 06:28:31.60ID:jM57T3VI
つ 規格票
0482デフォルトの名無しさん2014/09/04(木) 06:31:32.90ID:VFEaEvfK
>>480
むしろ C の方が罰ゲーム‥
おすすめの言語はなに?
0483デフォルトの名無しさん2014/09/04(木) 08:59:56.12ID:GJ/2dNiO
Cと比べればC++は罰ゲームだな
0484デフォルトの名無しさん2014/09/04(木) 09:05:44.98ID:BSiyRAZY
Cのほうが罰ゲームだろ
もう使う気になれねーよ
0485デフォルトの名無しさん2014/09/04(木) 09:07:56.58ID:CIIvLb1C
規模が小さいならC言語のほうが楽
0486デフォルトの名無しさん2014/09/04(木) 09:32:45.66ID:t+YSKgeI
>>482
ネイティブバイナリじゃなくても良いなら python
ネイティブにこだわるなら D
0487デフォルトの名無しさん2014/09/04(木) 09:35:03.85ID:GJ/2dNiO
てきとうに書くのはC++のが楽だけど、正しく書くことや
他人の書いたもののレビューはCの方が楽。
見た目とやってることが一致している保証がなさすぎる
0488デフォルトの名無しさん2014/09/04(木) 12:35:31.88ID:D2aVxmrD
Dには期待してる、期待してた
0489デフォルトの名無しさん2014/09/04(木) 15:39:16.19ID:FPrVBZRJ
俺たちの戦いはこれからだ
0490デフォルトの名無しさん2014/09/04(木) 17:46:18.32ID:Z7CwwPLc
いやCはオーバーロード無いから
関数名が長くなって見辛い。
他人のコード読むのは悪夢
0491デフォルトの名無しさん2014/09/04(木) 18:38:11.89ID:NYUvnHVk
でも一番融通効くのもC++なんだよなあ
0492デフォルトの名無しさん2014/09/04(木) 18:41:25.47ID:NYUvnHVk
まあpythonが一番掲げてる哲学に合致してる美しい言語だと思うけど
0493デフォルトの名無しさん2014/09/04(木) 20:06:40.80ID:IDkAxyOU
>>491
範囲 for とか、つおい enum とか、おれのなかではかなり理想的な言語になったわ
0494デフォルトの名無しさん2014/09/04(木) 20:10:49.86ID:aAnKwSol
lispってあの括弧書きまくる奴か!?
0495デフォルトの名無しさん2014/09/04(木) 20:20:58.99ID:IDkAxyOU
>>494
ま、まあな...
0496デフォルトの名無しさん2014/09/04(木) 21:20:12.77ID:D2aVxmrD
かっこう良いだろ
0497デフォルトの名無しさん2014/09/04(木) 21:47:08.46ID:Z7CwwPLc
Postscriptオススメ
0498デフォルトの名無しさん2014/09/04(木) 21:54:28.82ID:iYzFootC
何故C/C++のスレで他言語のおすすめしてるんだ……
0499デフォルトの名無しさん2014/09/04(木) 21:55:18.93ID:NYUvnHVk
scriptはpython
ネイティブはc++
インタプリタ系はjava
web(クライアント)はjavascript
に統一してくれりゃみんな幸せなのに
0500デフォルトの名無しさん2014/09/04(木) 21:59:32.14ID:Dl7v7SB2
カテゴリーがいろいろとおかしい。
0501デフォルトの名無しさん2014/09/04(木) 23:06:23.56ID:k+mGC+H3
バベルの塔だ
神が言語の多様性を是認した
0502デフォルトの名無しさん2014/09/05(金) 03:02:54.26ID:i9wdgiB6
みんなでアセンブリ言語使えば解決
0503デフォルトの名無しさん2014/09/05(金) 04:34:55.14ID:M1xT2eM2
すみません、c++のベクターについて聞きたいのですが、begin()で返ってくるイテレーターは双方向でしょうか?
it = v.begin(); ++it みたいなコードは見たことがあるんですが、--itみたいなコードを見たことがありません。
双方向な入出力可能なイテレーターだと思うのですが、確証がありません。
どなたかご存じの方がいましたら、教えて下さい。
0504デフォルトの名無しさん2014/09/05(金) 04:42:48.31ID:F0C2JJRO
http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3AScheme%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%81%AE%E3%83%AC%E3%83%99%E3%83%AB10
SchemeとかLispとかいうカッコだらけですごくわかりにくい言語があることは知っているが、 最強とか主張する信者がいるらしいのでなるべく関わらないようにしている。
0505デフォルトの名無しさん2014/09/05(金) 04:53:07.40ID:IY8fzgtW
>>503
はい
0506デフォルトの名無しさん2014/09/05(金) 06:10:59.95ID:M1xT2eM2
>>505
ありがとうございます。
0507デフォルトの名無しさん2014/09/05(金) 10:55:57.52ID:101gJ810
>>504
あくまで理念が最強ってことだろ
0508デフォルトの名無しさん2014/09/05(金) 12:42:28.12ID:zgm2tMtu
>>504
まあ、無理にとは言わないけど、一度触ってみることをお勧めする
人口知能言語ともてはやされたのは伊達ではない
0509デフォルトの名無しさん2014/09/05(金) 13:05:40.08ID:Yrvc7r6Z
直接書くものじゃなくてメタプログラムから生成するものだろ
0510デフォルトの名無しさん2014/09/05(金) 15:49:56.41ID:JjYqHkIR
forth は括弧無くて良いよ
0511デフォルトの名無しさん2014/09/05(金) 20:55:14.30ID:pEvoA04t
Forthは逆ポーランド記法だから、括弧はいらない
0512デフォルトの名無しさん2014/09/05(金) 21:38:24.07ID:S0u/xy8l
>>509
慣れれば普通に書けるよ
エディタの支援があった方が楽だけど

>>510
Forth いいよね、むかしちっちゃなやつ作って遊んでた
とっくに息絶えた言語かと思ってたら、規格とかあったりして今でもメンテされてるんだな
ちょっとビックリした
0513デフォルトの名無しさん2014/09/05(金) 22:23:54.75ID:0V7/GM0r
Postscript は forth の方言かインスパイアされたか知らないけど
かなり影響受けているな。

c/c++でこの手の言語作るのって面白い
0514デフォルトの名無しさん2014/09/06(土) 23:24:09.09ID:SFv6X1gz
今日天下一プログラマーコンテストってのの本選やってたらしくみてみたが
ほぼC++とJAVAの人しかいないのね
0515デフォルトの名無しさん2014/09/06(土) 23:42:44.01ID:yTDobe1v
影響というか、まんまforthじゃん
0516デフォルトの名無しさん2014/09/07(日) 14:28:18.98ID:jToum1qW
俺がC++を駆使してエボラ出血熱を治療してやる。
0517デフォルトの名無しさん2014/09/07(日) 14:29:07.01ID:6WTc15/U
目的と手段とのつながりは?
0518デフォルトの名無しさん2014/09/07(日) 23:02:56.23ID:vUwQxq8N
ゲノムアナライズでもやるんじゃね
0519デフォルトの名無しさん2014/09/08(月) 01:42:44.79ID:LiuBTFeI
鼻から悪魔だす要領でウイルスを駆逐するコードを書けば良い
0520デフォルトの名無しさん2014/09/08(月) 07:37:09.26ID:tgnEbVO1
内部クラスをインターフェイスにすることに利点ってある?
曖昧な質問で申し訳ない
0521デフォルトの名無しさん2014/09/08(月) 10:06:48.11ID:HG5jhBnv
複数の機能を持つ大きめのクラスのときに各機能を複数の内部クラスにわけて実装するとかの場合なら利点が無くもない
0522デフォルトの名無しさん2014/09/08(月) 18:14:21.52ID:tgnEbVO1
だって内部クラスって外のクラスにアクセスし放題なんだぜ
publicじゃないけど一定条件では設定できる値とか
変態的idiomが作れる気がしない?
例えばファクトリに使ってみたりとか
0523デフォルトの名無しさん2014/09/08(月) 22:08:07.61ID:8uBU6yep
お前が何を言ってるのか分からないが利点があると信じているならやればいい
0524デフォルトの名無しさん2014/09/08(月) 23:51:29.95ID:LiuBTFeI
>>520
あるっつかデザインパターンでは日常的に使う
0525デフォルトの名無しさん2014/09/09(火) 02:31:47.71ID:XEByUhi2
interatorなら使います
0526デフォルトの名無しさん2014/09/10(水) 23:32:48.53ID:oypds7bC
c++11の可変長テンプレート引数について質問なんだけど

TemplateFunc<Reverce<int,char,int,long>::type>();

ってやるとTemplateFuncの可変長テンプレート引数に

TemplateFunc<long,int,char,int>();

ってなるようなメタ関数って作れますか?
0527デフォルトの名無しさん2014/09/11(木) 00:09:50.00ID:HBxO88GU
reverceは引数リストの最初の要素だけを含むリスト(A)と残り全ての要素を含むリスト(B)に分けてreverce BとAを結合したリストを返す
ただし単要素のリストCに対してreverce CはCを返す
0528デフォルトの名無しさん2014/09/11(木) 00:11:31.69ID:D3y2vgJ4
typeって可変長の型として宣言できましたっけ?
0529デフォルトの名無しさん2014/09/11(木) 10:18:00.17ID:WRvwDZHr
>>526
作れない
17以降の未来なら作れるようになってるかもな
0530デフォルトの名無しさん2014/09/11(木) 16:59:16.52ID:UFa1D9EQ
すみません、C++のクラスで質問があります

class CBase{ virtual bool func(); };
class CDerived : public CBase{ virtual bool func(); };

上記のようなコードで、基底クラスのfunc()を派生クラスでオーバーライドしたいのですが、
virtual bool func() = 0; のようにするとCBaseをインスタンス化することができなくなります。
基底クラスのインスタンス化を許しつつ、派生先でかならずオーバーライドして欲しいような関数を指定する方法ってないでしょうか?
0531デフォルトの名無しさん2014/09/11(木) 17:08:07.20ID:ZEyp8++5
無い
0532デフォルトの名無しさん2014/09/11(木) 17:16:05.92ID:SNUYrGFx
class CBaseBase{ virtual bool func()=0; };
class CBase : public CBase { virtual bool func(); };
class CDerived : public CBase{ virtual bool func(); };
0533デフォルトの名無しさん2014/09/11(木) 17:16:47.70ID:UFa1D9EQ
>>531
ありがとうございます。やっぱり無理ですか・・・

class CSomething{ virtual bool func() = 0; }; class CBase : CSomething{}
みたいにしてCBaseを何かから派生させればいけそうな気もするけど、正直めんどくさい・・・
0534デフォルトの名無しさん2014/09/11(木) 22:28:05.32ID:NVfZ6zE1
CBase で not impl 的な例外投げちゃうとか
コンパイル時オーバーライド強制はできないけど
0535デフォルトの名無しさん2014/09/12(金) 01:12:04.62ID:ySEpW21e
こんな感じで代用できないものか
http://ideone.com/Kpx7Ci
0536デフォルトの名無しさん2014/09/12(金) 01:55:24.92ID:Da2YxclE
仮想継承と自力でのなんちゃって仮想関数で代用という設計でならそれっぽくできるみたいだけどな
0537デフォルトの名無しさん2014/09/13(土) 04:58:15.86ID:txEfL2uq
他の言語でもそういうことはさせないんじゃね?
例えばJavaの慣習だと>>532っぽくインターフェース、アブストラクトクラス、実装クラスに分ける
0538デフォルトの名無しさん2014/09/13(土) 13:57:44.28ID:bbl9YCFb
>>503
ベクタ使うときは順番になめることが多いしそれより添え字アクセスが多い
あえてイテレータ使うのはコピーの時かな
あとリストもそうだけどイテレータで逆順になめるときは--it使わずにrbegin,rendの範囲で++itするよ
0539デフォルトの名無しさん2014/09/14(日) 23:56:39.78ID:kn6kIRd5
c++にはLinqのような便利な機構は無いのですか?
自作するのは吝かではないのですが少々面倒です
0540デフォルトの名無しさん2014/09/15(月) 00:09:17.05ID:2SghE5su
無い
ガベージコレクションが無いから
この先も作られることは無いだろう
0541デフォルトの名無しさん2014/09/15(月) 00:19:22.87ID:uGBCfR31
メソッドチェーンであれば、
oven range を使えばそれっぽいことはできる
0542デフォルトの名無しさん2014/09/15(月) 00:45:51.38ID:JpDdN08+
>>539
つBoost.RangeのOven拡張とPStade.Oven
0543デフォルトの名無しさん2014/09/15(月) 10:19:01.63ID:hyfdWrFD
rangeはオペレータ|が気持ち悪すぎるので回避したいです
他になにかありませんか?
v = move( collection.Where(λ).Select(λ).OrderBy(λ).ToVector() );
このように使えたら嬉しいのですが
0544デフォルトの名無しさん2014/09/15(月) 10:33:49.02ID:LnCi4M08
無い
0545デフォルトの名無しさん2014/09/15(月) 11:55:20.16ID:xix8OsY4
気持ち悪いなら自分で作ればいい
0546デフォルトの名無しさん2014/09/15(月) 13:15:18.95ID:JpDdN08+
. で繋げるライブラリは俺は知らないしUpperCamelCaseやC#LINQと同じ命名規則じゃないととなると絶望的、
どうしてもそれじゃないとダメなら自作するしかない、既存の薄いラッパーを作るのが一番楽
0547デフォルトの名無しさん2014/09/15(月) 14:07:54.38ID:xix8OsY4
コレクションクラス作ってコレクションクラス返すWhere(λ)、Select(λ)、OrderBy(λ)メソット作ればいい
ToVector()メソッドだけvector返すイメージでしょ
0548デフォルトの名無しさん2014/09/15(月) 14:24:01.75ID:JpDdN08+
>>547
それだと遅延評価にならないしメソッドチェーン毎に配列作り直すコスト発生しないか?
ファンクタを持つiteratorは流用ってなら分かるが
0549デフォルトの名無しさん2014/09/15(月) 14:29:33.50ID:xix8OsY4
パラメタ蓄積しといてToVectorで実際に評価するやり方
クラスオブジェクト返すって言ってもレファレンス返せばいい
0550デフォルトの名無しさん2014/09/15(月) 14:46:04.53ID:NA3WDzc4
bouble arr[512][512][512][512];
0551デフォルトの名無しさん2014/09/15(月) 14:49:55.04ID:JpDdN08+
同一クラスオブジェクトを返すってのは戻り値のtemplate対応的に難しいんじゃないかな、
Boost.Ovenもcpplinqもメソッド毎に対のコンテナクラスを返す実装を取ってるわけだし
ただそれでいけるなら14の戻り値のauto待ちの必要が無いから便利そう
0552デフォルトの名無しさん2014/09/15(月) 14:56:26.21ID:JpDdN08+
ああ、すまん、よく読んでなかった、コレクションクラスのインターフェースを用意すれば大丈夫だった
0553デフォルトの名無しさん2014/09/15(月) 15:22:32.75ID:xix8OsY4
言葉足らずだったか
Corection& Select(...) { ...; return *this;} とかね
streamのwrite・・・str()や、basic_stringのappendつなげるようなやつ
やりたいこと限定すれば自分ですぐつくれると思うんだが
0554デフォルトの名無しさん2014/09/15(月) 15:43:51.96ID:Q8z42wAc
libpngの使い方についてご相談したいことがあります。
pngをビットマップに解凍したい場合と、単にヘッダデータを読み込んで縦横のサイズを得たい場合とがあります。
その両方でpng_structp, png_infopの初期化処理が共通しているので、この部分を関数としてくくりだしたいのですが、

my_png_buffer png_init(unsigned char binaryData[], unsigned int fileSize, png_structp* pPng, png_infop* pInfo )
{
  my_png_buffer png_buff;
  { //初期化
    png_buff.data_len  = fileSize;
    png_buff.data    = binaryData;
    png_buff.data_offset = 0;
  }
  if (! png_check_sig((png_bytep)png_buff.data, 8) ) return png_buff;
  //読み込み
  png_structp ret_pPng= png_create_read_struct (PNG_LIBPNG_VER_STRING, NULL,NULL,NULL);
  if (! ret_pPng) return png_buff;
  png_infop ret_pInfo= png_create_info_struct(ret_pPng);
  if (! ret_pInfo ) {
    png_destroy_read_struct (ret_pPng, NULL, NULL);
    return png_buff;
  }
  png_data_read(ret_pPng, &png_buff);
  png_read_info(ret_pPng, ret_pInfo );

  *pPng = ret_pPng;
  *pInfo = ret_pInfo;
  return png_buff;
  //(my_png_bufferなどはhttp://diary.awm.jp/~yoya/data/2008/07/14/png_test.cのコードをそのまま使用)
}
このように関数内でpng_structp, png_infopを初期化すると、呼び出し元でpng_read_imageを呼んだ時点で落ちてしまいます。
同じ内容のコードを呼び出し元でべた書きしている分には正常に動くのですが、何が間違っているのでしょうか?
0555デフォルトの名無しさん2014/09/15(月) 16:15:22.92ID:LnCi4M08
pPngとpInfoに値が与えられないときがあるけど大丈夫なのか
0556デフォルトの名無しさん2014/09/15(月) 17:36:32.42ID:dW4vlRng
関数内で宣言したstringオブジェクトは
returnで戻しても、壊れないよね。
=がオーバライドされてんだろうなぁと
独り言
0557デフォルトの名無しさん2014/09/15(月) 17:44:22.05ID:wy034Fbu
std::vectorを返す関数って、不要なコピーが発生して非効率になるのかな?
0558デフォルトの名無しさん2014/09/15(月) 17:52:49.42ID:xix8OsY4
C++11以降は問題ない
C++98はコピー
0559デフォルトの名無しさん2014/09/15(月) 17:54:16.39ID:MqSKJgQN
http://ideone.com/wTt9tD

struct rgb_value内の共用体、構造体には型名も変数名も付けていません。
しかし、メモリーは確保されています。

これはなぜですか?
0560デフォルトの名無しさん2014/09/15(月) 17:57:08.63ID:xix8OsY4
補足C++98でも
const std::vector<...>& vec = getvectpr();
で受けたらコピーなし
0561デフォルトの名無しさん2014/09/15(月) 17:57:50.31ID:MqSKJgQN
>>559で知りたいのは、変数名を付けていないのにメモリーが確保されると、
入れ子になった共用体あるいは入れ子になった構造体の定義と、変数の宣言が
どこで区別がつくかと言うことです。
0562デフォルトの名無しさん2014/09/15(月) 18:07:22.55ID:xix8OsY4
>>559
C++ではstructの横が構造体名(=クラス名)でCのようにstruct xxで変数定義する必要もtypedefする必要もない
そしてunionは名無し定義許される
structとclassの違いはデフォルトのアクセス許可がclassはprivate、structはpublic
0563デフォルトの名無しさん2014/09/15(月) 18:08:55.68ID:qVOi++wZ
無名構造体/無名共用体
0564デフォルトの名無しさん2014/09/15(月) 18:17:20.84ID:xix8OsY4
よく見ると中の構造体も無名だね
そっちのことか
0565デフォルトの名無しさん2014/09/15(月) 18:20:55.06ID:MqSKJgQN
http://ideone.com/dAE8xv

この場合は、変数の宣言rgbを付けないと無理でした。
どこで変わるのだろう?

IBMのサイトにそれらしいことが書いてあるんだけどURLが長すぎて貼れない。
0566デフォルトの名無しさん2014/09/15(月) 18:22:08.46ID:x1p5pPK5
>>559
元はMSのAnonymous Structuresという拡張機能
c++11で使えるようになったのかは知らぬ
0567デフォルトの名無しさん2014/09/15(月) 18:43:52.38ID:MqSKJgQN
>>566
そうでありましたか。
どうもです。
0568デフォルトの名無しさん2014/09/15(月) 19:14:50.51ID:72FXpoxU
>>560は嘘つき
戻り値のテンポラリオブジェクトへのコピーが発生する恐れがある
0569デフォルトの名無しさん2014/09/15(月) 20:42:09.08ID:RaAG/ymv
LINUXでチャットのプログラムを作成してるんですけど、
ブラックリストってどう作ればいいのでしょう?
0570デフォルトの名無しさん2014/09/15(月) 22:09:21.95ID:lVCjgFoQ
>>569
std::set<std::string>
0571デフォルトの名無しさん2014/09/15(月) 22:10:22.73ID:PW8m4k3j
>>569
ユーザーの管理はどうやってんだ
0572デフォルトの名無しさん2014/09/16(火) 00:40:21.05ID:lWmjzWkl
>>569
それはLinux板で聞いたほうが良いね
0573デフォルトの名無しさん2014/09/16(火) 00:56:03.54ID:ey59FGwO
ブラックリストというコンテナがあるのか
0574デフォルトの名無しさん2014/09/16(火) 01:39:43.61ID:zOHXRsLm
フィールド名付きのタプルを作る方法についてあっしにひとつ講釈しちゃあくれやせんかね旦那
0575デフォルトの名無しさん2014/09/16(火) 10:57:10.52ID:zSFpHmgt
タプルにフィールド名つけられるか知らないけど
フィールド名欲しいなら最初からstructで定義しろよ
0576デフォルトの名無しさん2014/09/16(火) 11:05:18.16ID:ulh/aKDY
typedef struct _tag { char tagName[256]; int tagValue; } TAG;
class CTAG : public TAG { public: CTAG(); operator TAG*() { return this; }; };

上記のようなコードで、コンストラクターCTAG()内で
memset((TAG*)&(*this),0,sizeof(TAG)); とするのと、
memset(&this->tagName[0],0,sizeof(TAG)) とするのは同じなのでしょうか?
逆アセンブルして確認してみたら、どちらもほぼ同じコードになってました
0577デフォルトの名無しさん2014/09/16(火) 11:16:29.28ID:/tSEc1VM
コンパイラ依存だろうがほぼ同じでいいのでは
0578デフォルトの名無しさん2014/09/16(火) 11:18:57.46ID:W9IKCWI1
>>574
ttp://stackoverflow.com/questions/13065166/c11-tagged-tuple
0579デフォルトの名無しさん2014/09/16(火) 11:23:49.68ID:G4Dhs87q
>memset(&this->tagName[0],0,sizeof(TAG))
この例の先頭属性のアドレス参照するばあいは結果的にどの処理系でも行けると思うけどあまり好ましくない
クラスの属性は特に指定しないとコンパイラの最適化で圧縮かかって属性の配置を並び替えることがあるから
0580デフォルトの名無しさん2014/09/16(火) 11:53:38.21ID:/RtNzaYT
あるクラスを=(double)で初期化は許可するが、=(int)で初期化は許可しないように出来ますか?
class A
{
public:
A(const double&){} // =(int)でも初期化してしまう
// explicit A(const double&){} // =(double)で初期化できない
};
0581デフォルトの名無しさん2014/09/16(火) 12:00:25.66ID:/RtNzaYT
自己解決
private:
A(const int&){}
を付け加えて実現できました
0582デフォルトの名無しさん2014/09/16(火) 12:02:45.23ID:xCICRn64
おめでとう
0583デフォルトの名無しさん2014/09/16(火) 15:40:25.24ID:ulh/aKDY
>>577,>>579
ありがとうございました
0584デフォルトの名無しさん2014/09/16(火) 16:24:20.15ID:aL5tuO4b
>>580
参考にお聞きしたいのですが、
どういう場合にダブルで初期化するが
intで初期化したくない状況になるのですか?
何をするプログラム何ですか?
0585デフォルトの名無しさん2014/09/16(火) 17:33:58.31ID:/RtNzaYT
>>584
既存のglslコードをcppコードに見立ててVisual Studio上で編集するためのライブラリです
(つまり、今のところ実際に何かするプログラムではないです)
glslでは、GPU次第でもありますが
float x = 1; //これはダメ
float x = 1.0; //これはOK
となります。それの再現ということになります。
0586デフォルトの名無しさん2014/09/16(火) 18:35:19.12ID:aL5tuO4b
>>585
詳しい解説ありがとうございました。
0587デフォルトの名無しさん2014/09/16(火) 18:49:40.69ID:hzlXvld1
ブックオフで、2004年発行のBoostの本買ってきたんやけど、本と同じの1.33(約20バイト)のバージョンを
落としてきて、コンパイルしたんですわ。わしのCeleronD2.93GHzのPCで約1時間かかりましたわい。

ためしに現在のバージョン見たら、サイズが150mバイトですわ。わいのPCだと、コンパイルし終わるのに、どんくらいかかるんでっしゃろな?
0588デフォルトの名無しさん2014/09/16(火) 18:51:41.68ID:ZkB0HEzb
20byteのboostってすげえな
0589デフォルトの名無しさん2014/09/16(火) 19:09:37.69ID:AJgGs2AR
boostコンパイルして置きっぱなしにしてたディレクトリが4GBくらい行ってたな
0590デフォルトの名無しさん2014/09/16(火) 19:27:18.45ID:W9IKCWI1
Sandy以上のCPUなら並列コンパイルしたら20分もかからないよ
CeleDの場合は窓から投げ捨てろ
0591デフォルトの名無しさん2014/09/16(火) 20:03:34.00ID:zuELja3f
必要な分だけ取得・使用できないライブラリは窓から投げ捨てろ
05925872014/09/16(火) 21:06:59.87ID:hzlXvld1
いや。小生、パソコンを買い換える金がないんで、このままで行きます。

Sandyって何かなと思ったら、Core i 3ですね。とても買えないです(><;)。

まぁ、ぼちぼちやっていきますわ。みなさん、ありがとうございました。
0593デフォルトの名無しさん2014/09/16(火) 23:19:28.75ID:zN7HPElZ
あるクラスのデストラクタでSingletonオブジェクトを参照しているのですが、
どうも先にSingletonオブジェクトが解放されてしまっているようで、
それが保持しているstd::listクラスの要素が勝手に0になってしまっていました。
開発環境はVC++2013なんですが、この解放順序を明示的に指定することとかできないんでしょうか?
0594デフォルトの名無しさん2014/09/17(水) 00:09:54.43ID:epONY4U2
可能性としてvectorなどのオブジェクト再配置するコンテナにメンバにポインタを持ってデストラクタでポインタを解放するクラスを指定する場合は注意
コピーコンストラクタや代入演算子でコピー先にポインタコピーしたらコピー元をnullptrにするとか、
コピー先にnewで新しいオブジェクト作り直さないとダメ
そうしないと再配置するたびにコピー元オブジェクトがデストラクタでポインタ解放して無効になってしまう
別の解決策はboost::svectorなどのオブジェクトそのものを別領域に確保して再配置しないコンテナ使うかclear、erase、resize等するときに注意してクラスポインタをコンテナ引数に指定する
0595デフォルトの名無しさん2014/09/17(水) 00:14:26.60ID:epONY4U2
boost::static_vectorだった
05965932014/09/17(水) 00:28:33.45ID:6XbTGR65
>>594
ありがとうございます。
Singletonオブジェクトの保持しているstd::listをstaticメンバ変数にしてみたところ、
後のほうに解放されるようになったようで、
他クラスのデストラクタからの参照時も生きたままでした。
その、Singletonを参照するクラスはnewで生成されるものなので、ヒープ領域に確保されます。
staticメンバ変数はヒープ領域の解放より後になるので順序が保証されるということになるでしょうか。
0597デフォルトの名無しさん2014/09/17(水) 02:55:00.71ID:epONY4U2
ポインタをメンバにもってデストラクタで解放するクラスを作るときは基本的にこういうふうにしなきゃダメ
class A {
public:
 A() : c(nullptr) {}
 A(const A& a) : c(a.c ? new C(*a.c) : nullptr) {}
 virtual ~A() { if(c) delete c; }
protected:
 C* c;
}

ただポインタ値をコピーするだけの実装だとコピー発生すると同じポインタを持つオブジェクトが複数出来上がって同じポインタをコピー解放しようとすんの
それかコピーコンストラクタでコピー元の無効にしてやること
A(A& a) : c(a.c ) { a.c =nullptr;}
A(A&& a) : c(a.c ) { a.c =nullptr;}
A(const A& a) は削除
0598デフォルトの名無しさん2014/09/17(水) 02:56:46.17ID:WEhe6VRz
そもそもナマポで持つなよ
0599デフォルトの名無しさん2014/09/17(水) 07:27:57.59ID:4yvv7VNe
Singleton だったらコピー出来るようにしたらだめだろ。
0600デフォルトの名無しさん2014/09/17(水) 07:28:37.29ID:aZrMUnZ0
生ってダメなの?
0601デフォルトの名無しさん2014/09/17(水) 09:28:08.84ID:7oTy7nJ/
ダメじゃない
0602デフォルトの名無しさん2014/09/17(水) 11:55:33.95ID:tOt923cX
boostってテンプレートばっかじゃないの?
単体でコンパイルして、あとでリンクするもんなの?
0603デフォルトの名無しさん2014/09/17(水) 11:56:18.17ID:0TZmlqiL
テンプレートじゃないのもある
0604デフォルトの名無しさん2014/09/17(水) 13:05:13.69ID:VO9mnQuV
ノートならCPUが燃えないように省電力機能で
クロック落として寝てるときにビルド

朝起きると途中で失敗して止まった画面が!
0605デフォルトの名無しさん2014/09/17(水) 14:13:12.41ID:or6PO8CM
失敗してたら起こしてくれる機能があるといいね
0606デフォルトの名無しさん2014/09/17(水) 15:59:53.15ID:L31h4bAY
>>597
俺はこうしているな。
virtual ~A() { delete c; c =nullptr; }
0607デフォルトの名無しさん2014/09/17(水) 16:13:55.56ID:pzZaxrRp
>>606
それなんか意味あんのか?
0608デフォルトの名無しさん2014/09/17(水) 16:34:49.88ID:L31h4bAY
>>607
デストラクタは何回でも呼べちゃうので、2重デリート防止にヌルポ突っ込むことにしているんだお。
因みにデリート前のヌルチェックは全くの無意味なのでやらないお。
0609デフォルトの名無しさん2014/09/17(水) 16:48:43.03ID:LYPdYoct
勉強不足でスマンが、ケアレスミス
 p = new A()
  ...
 delete p;
  ....
 delete p;
以外で、1つのインスタンスに対して複数回デストラクタが呼ばれることってありえる?
0610デフォルトの名無しさん2014/09/17(水) 17:03:06.26ID:or6PO8CM
ある
0611デフォルトの名無しさん2014/09/17(水) 17:04:17.18ID:jpP7WsCY
pにヌルポを代入すれば呼ばれなくなる
0612デフォルトの名無しさん2014/09/17(水) 17:15:20.55ID:pzZaxrRp
>>610
どういうケースで?
0613デフォルトの名無しさん2014/09/17(水) 17:28:05.00ID:jpP7WsCY
>>612
横だが

a = A();
p = &a;

delete p;

ただ、環境によってはエラー落ちした
0614デフォルトの名無しさん2014/09/17(水) 17:42:57.71ID:pzZaxrRp
>>613
いや、そんなアホなことすりゃそうなるのはわかるけど...
それこそ、それなんか意味あんのか?
0615デフォルトの名無しさん2014/09/17(水) 17:45:04.27ID:WEhe6VRz
Aのポインタを持ってるのはpだけとは限らんやろ
06166092014/09/17(水) 18:11:17.84ID:Te3fcaJr
生ポの行きの過程で多重に delete しちゃった テヘッ ぐらいしかないってこと?

>>606 記述のご利益よりも、
もっと根本的なところで工夫したほうが良いんでないの?って疑問から >609 な質問に至ったんだけども
0617デフォルトの名無しさん2014/09/17(水) 18:52:34.01ID:4yvv7VNe
まともにやっててデストラクタが二度呼ばれることはない

でもナマポ使うならdeleteした後nullポインタ入れる習慣付けといて損はないよ。

>>609 の例だと最初のdelete p;の後にp=0;しとけば問題ないし。
まぁ生ポインタ使うこと自体殆ど無いけど
0618デフォルトの名無しさん2014/09/17(水) 18:57:28.21ID:Te3fcaJr
ありがとう
すっきりした
0619デフォルトの名無しさん2014/09/17(水) 18:59:10.26ID:HcKN6G5K
初心者は既成品のデスクラクタが組み込まれているクラスを使えばいい。
0620デフォルトの名無しさん2014/09/17(水) 19:18:53.62ID:L31h4bAY
>>609
デストラクタは明示的に呼び出せるんだお。
p->~A();

これはp自体に割り当てられたメモリの破棄とは無関係な合法処理だお。
2回deleteは非合法なので、そんなケースは気にしなくて良いお。

やるかやらないかは置いといて、合法的に出来てしまうことが問題なんだお。
だから汎用的に使われるライブラリ程、合法範囲内でどのような使われ方をしても耐えられる作りにしとく心構えでいるお。
0621デフォルトの名無しさん2014/09/17(水) 19:25:50.95ID:L31h4bAY
何か矛盾している感じのレスになってしまったお。。。
>>608で言っている2重deleteは自クラス A 内の話だお。
>>620で言っている2重deleteは p=new A; とた時の、pにたいするdeleteだお。
クラスAを設計するにあたって気にするのは、前者であって後者ではないという話だお。
0622デフォルトの名無しさん2014/09/17(水) 19:30:20.33ID:5+wVAwUV
スマポ使ってdeleteなんて書くなよ
0623デフォルトの名無しさん2014/09/17(水) 19:36:25.46ID:g3uDlx/D
ま、スマポ使えるならナマポ使う話は出てこないわな
0624デフォルトの名無しさん2014/09/17(水) 20:16:54.15ID:kQQOaj3C
最近>>597のケースでunique_ptrを使う事を覚えた俺に隙は無かった
(隙はあるかもしれない)
0625デフォルトの名無しさん2014/09/17(水) 20:20:48.22ID:6XbTGR65
shared_ptr覚えてからはdelete使うことは、よっぽどの例外がない限り、なくなりましたね。
0626デフォルトの名無しさん2014/09/17(水) 22:00:57.42ID:HcKN6G5K
>>625
そんなことはないだろ。そしたらガベージコレクション対応言語でいいわけで。
パフォーマンスは確実に落ちている。
0627デフォルトの名無しさん2014/09/17(水) 22:15:13.58ID:HcKN6G5K
shared_ptrの構築・破棄におけるパフォーマンス測定【やってみた】


測定は、Windows XP/Core 2 DuoのPCで行った。
shared_ptrに付け加え、自動変数・new/delete・auto_ptr・CAutoPtr・vector<shared_ptr>・CAutoPtrArrayについてCStringのオブジェクトの構築・破棄に対して調査した。

自動変数として使用する場合と比べ、shared_ptrの構築・破棄に10倍以上のクロック数がかかっている。また、CAutoPtrやauto_ptrに比べ2.3倍のクロック数がかかっていることがわかる。

複数のオブジェクトの構築・破棄
5つのオブジェクトを構築しそれをスマートポインタのリストに追加するようなコードの測定。
CAutoPtrArrayと比べvetor<shared_ptr>の構築・破棄に約3倍のクロック数がかかていることがわかる。

結果としては、何度も構築・破棄するようなオブジェクトは自動変数で割り当てるのがもっとも速度が早いことがわかる。
また、一度しか構築しないものについてはそれぞれクロック数に差はあるものの全般的に大したクロック数ではないので、好きなものを選択するのがよいことがわかる。

http://soundengine.jp/wordpress/tips/try/744/
0628デフォルトの名無しさん2014/09/17(水) 22:18:59.91ID:6XbTGR65
>>627
参考になりますね。

>>626
たしかにパフォーマンスは落ちるんですが、
頻繁に解放するようなことがない使い方ばかりなので、
今のとこ問題になってない、という感じです。
0629デフォルトの名無しさん2014/09/17(水) 22:22:54.66ID:jpP7WsCY
make_sharedやemplace_backじゃないのか
0630デフォルトの名無しさん2014/09/17(水) 22:40:16.76ID:pzZaxrRp
>>626
> そしたらガベージコレクション対応言語でいいわけで。

えっ?

>>627
自動変数と比較されても...
shared_ptr にオーバーヘッドがあるのは事実だけど、必要なコストだと思うぞ
0631デフォルトの名無しさん2014/09/18(木) 00:45:48.19ID:35lAY0T2
たぶん、ムーブが使えると大幅に逆転する場面が出てくるんでない。
0632デフォルトの名無しさん2014/09/18(木) 01:38:36.50ID:DWdPBU7A
いやあ、メンバは生ポインタとカウンタ位だから大差ないと思うぞ、実測してないけど
0633デフォルトの名無しさん2014/09/18(木) 01:58:11.27ID:35lAY0T2
でもポインタを取り扱うってことは、受け渡す必要が有るからでしょ。

void hoge()
{
  string *s = new string("...");
  // Do something.
  delete s;
}

こういう事はしないよね?
するとスマポやムーブが生きてくる場面は多いと思う。
0634デフォルトの名無しさん2014/09/18(木) 02:09:37.57ID:qu4CN4ax
hドライブの「honda」フォルダ内のファイル:本田_10.TXTを読み込み、英大文字を英小文字に変換、英小文字を英大文字に変換、その他はそのままで表示


これどうやったらええの?
0635デフォルトの名無しさん2014/09/18(木) 04:01:47.99ID:tANsH2Ld
ASCII英字は第5ビットが違う(0:大文字、1:小文字)ので、
第5ビットを反転すると、大文字・小文字変換できる
または大文字に、0x20(32)を足すと小文字になる

RubyのStringクラスには、
小文字を大文字にする upcase
大文字を小文字にする downcase
大文字と小文字を入れ替える swapcase がある

Linuxの、tr(TRansfer)コマンドにも、
lower, upper (小文字・大文字)がある
sed コマンドでもできる
0636デフォルトの名無しさん2014/09/18(木) 05:49:02.48ID:xGrJvmYs
もしかして2ちゃんねるってものすごく若返っているのか?
0637デフォルトの名無しさん2014/09/18(木) 08:22:33.48ID:DWdPBU7A
確かに心は何時でも10代だが
0638デフォルトの名無しさん2014/09/18(木) 08:39:29.82ID:xGGYwGdc
知能レベルの話をしてるなら Yes
0639デフォルトの名無しさん2014/09/18(木) 08:57:12.76ID:iEpcrfFo
知識減らさずに若返れるなら10代に戻りたい
0640デフォルトの名無しさん2014/09/18(木) 12:33:28.83ID:0+D2RILR
知識減ってもいいから時代ごと 10代に戻りたい
なんだかんだ言ってマイコン黎明期のワクワク感はよかった
0641デフォルトの名無しさん2014/09/18(木) 12:42:53.85ID:bb7rxdqO
でもエロは今ほど氾濫してなかったからな
0642デフォルトの名無しさん2014/09/18(木) 12:56:22.68ID:V6UVc7LV
Windowsのプログラミングに詳しい人がいたら教えてほしいのですが、
VC++で使えるWindowsの構造化例外とC++の例外の使い分けってどうすればいいのでしょうか?

__try{ z = x / y; /* ゼロ除算かも */ }__except(EXCEPTION_EXECUTE_HANDLER){ z = 0; } // 構造化例外
try{ z = x / y; }catch(...){ z = 0; }

xに適当な値を、yにゼロを代入して実行すると、上記のコードのどちらでも例外を捕捉できます
この例の場合、どちらでも捕捉できるので互いに取り替えても問題はないように思いますが、取り替えると問題が発生する例などはありますか?
どちらかに統一した方が無難だとは思うのですが、取り替えると問題が発生する例や、取り替えが不可能なケースについて教えてください
0643デフォルトの名無しさん2014/09/18(木) 12:58:02.31ID:WD6xtm/l
>>642
SEHでクラスのデストラクタ呼べるかね?
0644デフォルトの名無しさん2014/09/18(木) 13:10:53.41ID:kxzq7V59
普通はC++の例外使うわな
0645デフォルトの名無しさん2014/09/18(木) 13:15:24.80ID:EFTdZhpF
http://msdn.microsoft.com/ja-jp/library/swezty51.aspx
ここに全部書いてあるでしょ
0646デフォルトの名無しさん2014/09/18(木) 13:22:36.33ID:R7gYP1+N
例外を握りつぶすだけで満足してそう
0647デフォルトの名無しさん2014/09/18(木) 13:30:55.51ID:V6UVc7LV
>>643
ありがとうございます。クラスについては試してなかったので気がつきませんでした
__tryブロック中でクラスのオブジェクトを作成するとコンパイルエラーになりました
調べてみたら、デストラクターが呼ばれないみたいですね。。。
0648デフォルトの名無しさん2014/09/18(木) 16:55:45.85ID:jjPwyWVa
金玉を握り潰すだけでも十分効果があるな
0649デフォルトの名無しさん2014/09/18(木) 17:05:45.97ID:DhLCrg/X
どこに金玉の話が
0650デフォルトの名無しさん2014/09/19(金) 14:21:16.45ID:sk7TrVPk
金玉落しの谷
0651デフォルトの名無しさん2014/09/19(金) 14:44:39.24ID:ekAzeS7d
struct hoge {
int a;
char **b;
};

struct hoge fuga[] = {
{1, {"ab", "cde", "fg"}},
{2, {"hij", "klmn", "o", "pq"}},
{3, {"rst", "uv"}}
};

みたいな初期化をしたいのですが
コンパイルエラーになります
どこを治せばいいですか?
0652デフォルトの名無しさん2014/09/19(金) 14:56:30.87ID:SPtzgkMd
>>651
*fuga
0653デフォルトの名無しさん2014/09/19(金) 14:59:15.67ID:/8ISHZQs
char **b
は配列じゃないからそういう初期化はできない
0654デフォルトの名無しさん2014/09/19(金) 15:02:15.45ID:uKCerjSn
std::stringをstd::wstringに変換する方法を教えて下さい。
0655デフォルトの名無しさん2014/09/19(金) 15:06:25.95ID:kBCWl9e1
言語として保存したいならエンコード、
ビットデータとして保存したいならそのままコピー。memcpyとか。
0656デフォルトの名無しさん2014/09/19(金) 15:11:04.98ID:ekAzeS7d
>>652
それは駄目でした

>>653

struct hoge {
int a;
char *b[];
};

struct hoge fuga[] = {
{1, {"ab", "cde", "fg"}},
{2, {"hij", "klmn", "o", "pq"}},
{3, {"rst", "uv"}}
};

これでも駄目なんですよねー
0657デフォルトの名無しさん2014/09/19(金) 15:14:35.61ID:/8ISHZQs
char *b[]; は char **b;と一緒だから
char *b[4]なら通る
0658デフォルトの名無しさん2014/09/19(金) 15:19:01.71ID:ZKmo/Yor
>>651
キャストしろ
http://ideone.com/iAubL0
0659デフォルトの名無しさん2014/09/19(金) 15:38:41.98ID:XWJT9E3N
色々ありがとうございます

>>657
出来ました

char *b[] = {"a", "bc", "def"};
なら可変長?に出来るのに
ネストしてると駄目なんですねー

>>658
うちのコンパイラだと訳の判らないエラーが出たのでそちらは諦めます
0660デフォルトの名無しさん2014/09/19(金) 15:44:04.51ID:/8ISHZQs
構造体の中だからダメなんだ
構造体の名前は同じなのにひとつひとつサイズが異なっていたら困るだろ
0661デフォルトの名無しさん2014/09/19(金) 15:50:32.09ID:xrbpMaRf
ポインタだから構造体のサイズは同じじゃないの
0662デフォルトの名無しさん2014/09/19(金) 15:52:48.18ID:/8ISHZQs
char *b[] = {"a", "bc", "def"};
これはポインタの配列だから配列分のサイズが必要
0663デフォルトの名無しさん2014/09/19(金) 16:12:24.27ID:bg8wROT5
最終メンバだから許されてる不定長配列って奴なんじゃ…

古いCで
struct A {
 int a; char *b[1];
} *p = malloc(sizeof(struct A) + sizeof(char*) * 10);
p->b[0] .. p->b[10] まで確保する的な感じの
0664デフォルトの名無しさん2014/09/19(金) 16:22:00.55ID:/8ISHZQs
構造体を配列にしてるからそれはダメでしょ
0665デフォルトの名無しさん2014/09/19(金) 16:35:35.73ID:xrbpMaRf
>>662
なるほど
それだと

>>658
のコードは
ポインタはどこに確保されてんの?
0666デフォルトの名無しさん2014/09/19(金) 16:38:46.47ID:bg8wROT5
>>664 そうだね

sizeof(fuga[0]) と sizeof(fuga[1]) と sizeof(fuga[2]) が
変わるような初期化なんて出来ないというところからスタートしないとね。

#余談
 終端記号 NULL が来るまでって方式じゃないっぽいのに
 >>651 は メンバ b の実要素数をどうやって得ようとしてたのだろう?

fuga[0].b ⇒ 3個
fuga[1].b ⇒ 4個
fuga[2].b ⇒ 2個
0667デフォルトの名無しさん2014/09/19(金) 16:42:37.74ID:/8ISHZQs
>>665
キャストだから確保されてない
たまたま動くかもしれないが危険なコード
0668デフォルトの名無しさん2014/09/19(金) 16:44:00.88ID:bg8wROT5
>>665
コンパイラさんが気をきかせて noname でやってくれているかもしれない

char* noname_0[] = {"a", "bc", "def"};
char* noname_1[] = {"hij", "klmn", "o", "pq"},
char* noname_2[] = {"rst", "uv"};
struct hoge huga[] =
{ 1, (char**)noname_0 },
{ 2, (char**)noname_1 },
{ 3, (char**)noname_2 },
};

環境依存?  C○○以降?
0669デフォルトの名無しさん2014/09/19(金) 16:48:28.05ID:xrbpMaRf
>>667-668
了解
勉強になるわこのスレ
0670デフォルトの名無しさん2014/09/19(金) 17:02:17.50ID:ZKmo/Yor
>>667
どこが危険?
C99の複合リテラル知らないの?
0671デフォルトの名無しさん2014/09/19(金) 17:12:25.57ID:/8ISHZQs
>>670
char**のポインタが有効なのはブロック内だけだから
0672デフォルトの名無しさん2014/09/19(金) 17:34:12.72ID:ZKmo/Yor
>>671
グローバルで宣言してるのに、ブロック内とか、わけがわからないよ。
0673デフォルトの名無しさん2014/09/19(金) 17:34:18.97ID:bg8wROT5
>>671
俺の認識では初期化中のブラケット { } は 記憶ブロックの区切りじゃないんだが、そこが誤りということなのか。。。
例だと fuga[] と同一のスコープに複合リテラルが置かれているんだが( だから >>668 な解釈 )

 { (ここからスコープが始まって)
  1,
   (char**){ } (複合リテラルをこのスコープ内に作って)
 }, (スコープ抜けるから 作った複合リテラルの存在はあぶねーぞ!)
こういうこと?
0674デフォルトの名無しさん2014/09/19(金) 17:39:24.40ID:T5wmPk5I
>>672
なぜコンパイルで満足したのか
http://ideone.com/7FtX6x
0675デフォルトの名無しさん2014/09/19(金) 17:42:37.59ID:/8ISHZQs
>>672
>>656のコードだけでグローバルに置かれてると考えるのはおかしいし
グローバルでなければ寿命に気を付けなければならない
>>658のパターンはいつでも適用できるものじゃない

>>673
char* noname_0[] = {"a", "bc", "def"};の寿命はブロック内だけ
だから危険なことがある
0676デフォルトの名無しさん2014/09/19(金) 17:46:02.17ID:NVtLlsbn
だからreinterpret_cast相当のキャストは止めろとあれほど
0677デフォルトの名無しさん2014/09/19(金) 17:52:42.36ID:3fL0IB09
>>675
>>658はグローバルで宣言してるのに
って意味だろ
0678デフォルトの名無しさん2014/09/19(金) 18:00:31.50ID:s9RvZcra
>>674 見る限り
>>677 の負け
0679デフォルトの名無しさん2014/09/19(金) 18:02:48.22ID:/8ISHZQs
>>677
>>658の場合はってことか
専用に領域が確保されていないので
コピーしてコピーしたものを変更したのにコピー元も変更される危険性がある
0680デフォルトの名無しさん2014/09/19(金) 18:06:13.63ID:auM1uAiy
コンパイルが通ってエラーになる理由がわからん
コンストラクタ直後で死んだってこと?
0681デフォルトの名無しさん2014/09/19(金) 18:19:33.77ID:IiQJjksO
C99の複合リテラル奥深いな
一見、簡単にいけそうにみえるところがやっかいだわ (寿命の面で)
0682デフォルトの名無しさん2014/09/19(金) 18:25:49.11ID:ZKmo/Yor
>>647
あぁ、すまん。キャスト式を間違えてたわ。
http://ideone.com/9DFdUE
寿命の問題じゃない。
0683デフォルトの名無しさん2014/09/19(金) 18:26:55.94ID:ZKmo/Yor
レス間違えた
>>647じゃなくて>>674だ
0684デフォルトの名無しさん2014/09/19(金) 18:41:32.07ID:s9RvZcra
勉強になるきのこスレ
0685デフォルトの名無しさん2014/09/19(金) 19:14:34.77ID:2U+EgtpR
使いどころがないけどね
0686デフォルトの名無しさん2014/09/19(金) 21:12:58.81ID:sk7TrVPk
ちっちゃいおっぱいみたいだな。
0687デフォルトの名無しさん2014/09/19(金) 22:40:31.02ID:+TddXvRn
>>686
ちっちゃいおっぱい好きのおっぱい星人もいるんだぞ
0688デフォルトの名無しさん2014/09/19(金) 23:57:36.62ID:QPzMJwwt
ちっちゃいおっぱいの意義が理解できない
0689デフォルトの名無しさん2014/09/20(土) 00:00:57.92ID:526ppMDR
>>675
んなこたーない
0690デフォルトの名無しさん2014/09/20(土) 09:19:44.95ID:6Ap44xtF
>>688
んなこたーない
0691デフォルトの名無しさん2014/09/20(土) 12:05:07.11ID:fKGoQmCZ
c++のファイルの命名規則がよくわからないんですが、「Days Between New Years」.cppとしたい場合、
「Days Between New Years」の部分はどうするのが、いいんですか?ちなみにboostの命名規則みたいなのに従うと
どんな感じになるんでしょうか・・
0692デフォルトの名無しさん2014/09/20(土) 12:17:05.87ID:fBC4gG8p
好きにすりゃええ
そんなことに頭使うよりコード書け
0693デフォルトの名無しさん2014/09/20(土) 13:34:03.66ID:3c0Na2Dy
統一されてれば別に良いとは思うが、
Windowsだと大文字小文字無視するしGitだとファイル名変更時に大文字小文字の変換だけだと認識されない罠に嵌るしで
スネークケースの方が無難
0694デフォルトの名無しさん2014/09/20(土) 13:34:21.94ID:O+5MHM3j
いちおう標準ライブラリとboostでは全部小文字、スペースは使わずアンダーバーでといった形式だな
といっても別にC++全般での標準的な命名規則があるわけではない
06956912014/09/20(土) 18:17:19.67ID:fKGoQmCZ
みなさん、どうもありがとうございます。

自分のやった本がアンダーバーを良く使っているので、自分的には
あまりスマートじゃないとおもうのですが、days_between_new_years.cppにします。

みなさんの多様なアドバイス、とても参考になりました。c++は命名規則がないんですね。
Javaは規則があるみたいですが、好きじゃないです。プログラムが一応組めるようになったので、
そろそろスマートなネーミングをと思い、質問させていただきました。皆さんの意見、とても参考になりました。

ありがとうございました。
0696デフォルトの名無しさん2014/09/21(日) 07:52:04.84ID:NKaa3KrO
strtok って delimiter が見つかった場所を '\0' に書き換えるんですか?
0697デフォルトの名無しさん2014/09/21(日) 10:51:56.92ID:VuBZbVHD
YES
0698デフォルトの名無しさん2014/09/21(日) 10:58:36.00ID:OYwJke1V
char *w = hage();
if(w){
if(strncmp(token, w, strlen(w))) hoge();
}

みたいなときって
if(w && strncmp(token, w, strlen(w))) hoge();
と書いても問題ないですか?
左から順に評価することは保証されていますか?
0699デフォルトの名無しさん2014/09/21(日) 11:28:48.75ID:kN+zAVE7
普通は問題ない
operator&&がオーバーロードされていると
不味い
0700デフォルトの名無しさん2014/09/21(日) 11:31:58.75ID:14Np6+sv
>>698
通常はYES
ただし、operator&& を定義しているときはその限りではない
0701デフォルトの名無しさん2014/09/21(日) 11:32:58.29ID:qxinH3m8
プリミティブ型のoperator&&ってオーバーロードできないよね?
0702デフォルトの名無しさん2014/09/21(日) 11:35:19.71ID:OYwJke1V
ありがとうございます
0703デフォルトの名無しさん2014/09/21(日) 12:50:42.64ID:HNtPVZ/K
>>674 >>682
意外と奥が深いですね。
これって前者がコンパイル時に警告出すようにはできますか?
0704デフォルトの名無しさん2014/09/21(日) 13:23:01.92ID:NRylaSk2
弱参照スマポ以外に相互参照に対応したスマポは有りませんか?
AとBが互いに直接あるいは間接的に相互参照していてAとBは共にその他のオブジェクトからも参照されています
その他のオブジェクトからの参照が全てなくなった段階でAとBをすぐに解放したい
AとBの解放順序はどちらが先でも良い
0705デフォルトの名無しさん2014/09/21(日) 13:44:42.27ID:1wzJMzSq
無い
そんなアホな設計はやめろ
0706デフォルトの名無しさん2014/09/21(日) 13:53:32.45ID:NRylaSk2
>>705
生産性の高い現代的なプログラムでは相互参照は必須だと想いますが?
0707デフォルトの名無しさん2014/09/21(日) 13:58:55.85ID:kN+zAVE7
>>704
すぐに開放という条件がなければ
GCのライブラリでも使えばいい。

その条件を完全に満たすようなGC言語が
存在していない事を考えると
今のハードではまともな速度で動くものが実装不能なのだろう。

まあ量子コンピュータならどうにかなるのかもしれないが
0708デフォルトの名無しさん2014/09/21(日) 14:34:31.74ID:14Np6+sv
GCでも、相互参照はすぐに解放できなかったり、まったくしなかったりするな
0709デフォルトの名無しさん2014/09/21(日) 15:25:14.24ID:IWHmIvvT
C#というか.net frameworkのガベコレだと、ルートから参照を辿れるかどうかだから、
相互参照でも全く関係なく開放される
0710デフォルトの名無しさん2014/09/21(日) 16:24:40.57ID:wB7BYq1/
相互参照、というよりも循環参照というべきか
参照に強弱をつけるやりかたもあるようだが、なかなかうまくいかないね‥
BoehmGC でいいと思うよ‥
0711デフォルトの名無しさん2014/09/22(月) 00:12:18.72ID:9pHn0j6v
メンバ関数内でインスタンス化したメンバ変数を、
別のメンバ関数内で自殺した後にメンバ変数を返すという処理を作りたいのですが、
deleteされているのでメンバ変数がnullになります

なので、メンバ変数ではなく、クラスを指定して自殺した直後にインスタンス化してそれを返そうと思うのですが、
型を変数に代入し、それを元にインスタンスを作ることは可能なのでしょうか?
0712デフォルトの名無しさん2014/09/22(月) 00:18:13.55ID:udgTuvtS
日本語で話せ
0713デフォルトの名無しさん2014/09/22(月) 00:22:07.21ID:9pHn0j6v
あ、delete thisとメンバ変数をreturnで返せる方法があればその方がいいです
別にローカル変数に参照を避難させてもいいんですが、方法があるなら知りたいです
0714デフォルトの名無しさん2014/09/22(月) 00:24:29.10ID:1b5tK9XE
メンバ変数の型は?
0715デフォルトの名無しさん2014/09/22(月) 00:24:47.05ID:9pHn0j6v
>>712
「自殺した」を「インスタンスが自殺した」と補足すればわかりやすいかもしれません
0716デフォルトの名無しさん2014/09/22(月) 00:28:16.17ID:9pHn0j6v
>>714
そのインスタンスの親クラスのポインタです
つまりそのインスタンスと、メンバ変数の型は兄弟で、
そのメンバ関数は自分を返すか、自殺してメンバ変数を返すか
のどちらかです
0717デフォルトの名無しさん2014/09/22(月) 00:34:37.31ID:9pHn0j6v
return hoge,if(hoge!=this)delete this;
って書ければ楽なんですが
0718デフォルトの名無しさん2014/09/22(月) 00:39:57.43ID:1b5tK9XE
ThisClass *p = hoge;
hoge = NULL;
if(p!=this)
{delete p;
return this;
}else{return p;}
こんな感じか
0719デフォルトの名無しさん2014/09/22(月) 00:52:08.20ID:1b5tK9XE
設計をやり直せ
0720デフォルトの名無しさん2014/09/22(月) 00:52:30.19ID:NMG+AC3L
>>713
単なるポインタ値を
ローカル変数に待避させないで
書きたいという意図がわからない。
0721デフォルトの名無しさん2014/09/22(月) 08:51:27.43ID:9pHn0j6v
呼び出し元で呼び出すインスタンスを綺麗に入れ替えることが出来るので設計はこれでいいかなーと・・・


ローカル変数はごちゃごちゃした計算を簡単にするためだったり、入力バッファのためとか、メソッドチェーンが長くなりすぎたりした場合は仕方なく使うんですが
一目でわかるような値に別の変数付けたくないです
コード行が無駄に長くなって逆に見難いですし
0722デフォルトの名無しさん2014/09/22(月) 09:06:09.05ID:9pHn0j6v
>>718
コンストラクタでメンバ変数hogeにthisを代入して、メンバ関数ではそれを延々と返す処理があります
このhogeは、次呼び出して欲しいクラスです
メンバ関数内の任意のタイミングでhoge = new NextThisClass()ってすると、
次呼び出されるのはNextThisClassで、前のインスタンスは呼び出し元から参照が無くなるので、
返す直前に自殺しよう、という設計です

つまり
PrevThisClass::PrevThisClass():hoge(this){}
ThisClass* PrevThisClass::Update(){
if(hoge!=this)delete this;
return hoge;
}
void PrevThisClass::SetHoge(ThisClass* thisClass){
hoge =thisClass;
}
今、こんな感じなんですが、>>711の前半に記述してある問題が・・・
0723デフォルトの名無しさん2014/09/22(月) 11:25:52.91ID:ugRYEwXz
単に
>呼び出し元
でdeleteすれば良いのではないでしょうか
0724デフォルトの名無しさん2014/09/22(月) 11:44:57.23ID:PrGWKMYd
違うことを1度にしようとしてアホなことになってる気がする
0725デフォルトの名無しさん2014/09/22(月) 13:01:10.12ID:SQ8Z5Rnx
なんかオブジェクトの寿命、ポインタ自身の寿命とポインタがさしている領域の寿命とかの基本が理解できてない感じがする
0726デフォルトの名無しさん2014/09/22(月) 13:18:07.81ID:K+SrcL5V
自殺というのはたぶん自分をdeleteすることを言ってるようだけど、そう書かないのは
そう書くと明らかにダメだと分かるから、自殺という造語を使ってるんだよね?
0727デフォルトの名無しさん2014/09/22(月) 15:27:18.42ID:tOpZiXgL
>>725 わしゃ、外部のもんじゃけど、独学でやってるとその辺のとこすら危うい。
全然、知識がうまってかない・・ でも、働いてた頃は、俺よりいくらでもレベルが下のやつがいた。。

どうなってるの?この業界・・
0728デフォルトの名無しさん2014/09/22(月) 15:30:27.04ID:xorcTHrm
自分の寿命を気にした方が良いレヴェル
0729デフォルトの名無しさん2014/09/22(月) 15:43:32.59ID:ugRYEwXz
その自殺クラスはデストラクタ内でdelete hogeすべきかどうか
まわりくどい判定とか書いてるのだろうか…
0730デフォルトの名無しさん2014/09/22(月) 16:06:22.40ID:NMG+AC3L
delete thisなんて必要になるようなのは
物凄く筋の悪い設計

意味的に別変数への待避が必須な
コードでローカル変数を使いたがらず
破壊後のメンバ変数を参照する
コードが書きたいと無茶をしようとする。

自殺した後に、自分の脳内にある遺言を
伝えたいなら自殺前に遺書を作っとけと。
0731デフォルトの名無しさん2014/09/22(月) 16:11:20.91ID:nZL1MVjh
調べてみたらdelete this自体は問題ないんだな
だったら、
ThisClass *retObj = hoge;
delete this;
return retObj;
でいいんじゃないの?

ただ、thisにアクセスしてるアクセス元がthisがdeleteされたことをどうやって知るかを考えないとその後deleteされたインスタンスにアクセスしそうな気がするが
0732デフォルトの名無しさん2014/09/22(月) 16:15:24.73ID:LzfcZpmP
ステートマシンのごとく
戻りが次の作業を行ってくれるオブジェクトになってて欲しい ってだけなら
呼び出し元側で delete するほうがスマートだと思うけど…

# new で生成したオブジェクトじゃないかもしれないから、
 delete this と自殺記述しても、うまく機能できるとは限らないような
0733デフォルトの名無しさん2014/09/22(月) 16:34:51.37ID:bP9pMLbp
基底クラスとして宣言されたポインタを
派生クラスとしてnewした場合
deleteで派生クラスのデストラクタ働くけど

deleteは型をどうやって知ってるん?
0734デフォルトの名無しさん2014/09/22(月) 16:37:47.36ID:LzfcZpmP
vtable でぐぐれ
virtual 宣言されてるメンバ関数も同じ機構で解決してる
0735デフォルトの名無しさん2014/09/22(月) 16:44:47.29ID:bP9pMLbp
ありがとう!
0736デフォルトの名無しさん2014/09/22(月) 17:31:20.59ID:w+/ONFEY
C言語の関数の呼び出しについておたずねしたいのですが、

int func(int* p) { int n = 0; /* do something */ *p = n; return n; }
int main() { int n = 0,arrays[16]; arrays[n] = func(&n); }

上記のようなコードを実行した場合、関数funcに渡した実引数nはいつ変更されるのでしょうか?
関数funcからmainに処理が戻った時点で(関数の戻り値が配列に代入される前に)nが変更されている保証はあるのでしょうか?
0737デフォルトの名無しさん2014/09/22(月) 17:34:26.29ID:xorcTHrm
*p = n のときに中身が変更される
0738デフォルトの名無しさん2014/09/22(月) 17:36:33.91ID:xorcTHrm
arrays[n] の位置がどこになるかって話なら実装依存かも知れない
0739デフォルトの名無しさん2014/09/22(月) 18:05:05.94ID:w+/ONFEY
>>737と>>738どっちが本当なんでしょうか?
0740デフォルトの名無しさん2014/09/22(月) 18:11:10.55ID:n1hPNMnk
根拠レスだけど
副作用完了点の話 a[n] = n++; と同じパターンに見えるな
この例だと 環境依存 〜 (未定義により)鼻から悪魔
0741デフォルトの名無しさん2014/09/22(月) 18:25:59.36ID:fydTYVwl
まずもってそういうコードは書くべきでないと思うけど
そうしなければならない理由があるのか
それとも単に興味で聞いているのか
0742デフォルトの名無しさん2014/09/22(月) 18:27:37.55ID:w+/ONFEY
問題を箇条書きにしますと、
1. arrays[n]の位置の決定
2. 関数funcの評価
3. 決定した配列の位置への値の代入

がどういう順番になるかで実行結果がどうなるかが違ってくると思います

arrays[n]の位置が関数の呼び出し前に決定されると誤った位置に値が代入されるか又はアクセス違反になるかも?
arrays[n]の位置の決定が関数の呼び出しの後だとしても、最適化の問題等により[]演算子の評価の後にnが更新されるかも?
fun()を呼び出した際に確実にnが変更されて、その後に配列にアクセスしないとアクセス違反であぼーんしそう
式の評価順がどうとか、副作用完了点がどうとか、調べても分かりません・・・
0743デフォルトの名無しさん2014/09/22(月) 18:34:03.27ID:NMG+AC3L
副作用完了点の問題で未定義になるから
そんなことすんなって話で終わり
0744デフォルトの名無しさん2014/09/22(月) 21:14:40.46ID:yKFZsvSQ
>arrays[n] = func(&n);
これは実装依存だからやめておいたほうがいい
0745デフォルトの名無しさん2014/09/23(火) 00:06:16.20ID:49Grt2TR
そういやこれもvarの値funcbで変えられてもfuncaにうまく渡らない@VC最適化
int var = 0;
funca(funcb(&var), var);
0746デフォルトの名無しさん2014/09/23(火) 02:29:37.58ID:pv/quczD
>>742
単純に順序不定
func呼び出し前のnの値に応じた位置に代入されるか呼び出し後の値の位置になるかはわからない
ある環境で実際に観測して不変の結果が得られたとしても規格上はたまたまそうなったというだけで保証はない
0747デフォルトの名無しさん2014/09/23(火) 02:46:45.53ID:rMNwwcoj
だいてる親子の3分冊のC++の本がほしいです。
0748デフォルトの名無しさん2014/09/23(火) 03:07:01.81ID:yMrOu5W9
743の日本語が読めないばかはプログラムを書くべきではないな
ISO/IEC 14882:2011では1.9 Prgram executionの段落15によりundefined behavior
0749デフォルトの名無しさん2014/09/23(火) 03:45:00.68ID:yTWN5vXQ
実装依存と環境依存は意味が違いますか?
0750デフォルトの名無しさん2014/09/23(火) 10:37:39.40ID:Vv8EEbvC
>>748
どこが?
式自体にはnに対する直接の副作用はないし関数内での副作用は関数内で完結するでしょ
0751デフォルトの名無しさん2014/09/23(火) 11:25:20.77ID:FmXDqaTJ
関数完了と代入操作完了の順序関係は決まっていても、この場合の関数引数や演算子オペランドの評価順序は未定義
0752デフォルトの名無しさん2014/09/23(火) 11:54:09.71ID:2aQUya+P
unspecifiedじゃなくてundefinedだもんな

鼻から悪魔ってこと
0753デフォルトの名無しさん2014/09/23(火) 12:25:54.70ID:FmXDqaTJ
仮に>>736のコードを合法化するような
規格の変更を考えるとしても
副作用の順序が>>736の望むようになるのは
あり得ないだろう。

実行途上の副作用はオペランドや引数の
評価に影響せず、文開始時点の状態で
各オペランドや引数を評価したのと
同等にするとかが落とし所じゃね。

これなら関数内部を知らなくても
呼び出し側コードをみれば
大枠の動作が把握できる。

逆は悪夢だよ。
0754デフォルトの名無しさん2014/09/23(火) 13:05:08.07ID:RZgQ8Ezi
>>749
実装依存は開発に使ったコンパイラ・ライブラリの種類で動きが決まる
環境依存は動かすOSの種類・設定やCPUに左右される(ファイルパスやユーザー権限やロケールやプロセスの挙動やもろもろ)
0755デフォルトの名無しさん2014/09/23(火) 13:17:30.52ID:Vv8EEbvC
>>751
ますますなにをいっている?
評価順序は不定であって評価順序が未定義とはいわない
また評価順序が不定であることがそれだけで未定義動作になるわけではない
0756デフォルトの名無しさん2014/09/23(火) 13:21:42.02ID:1MrULCsV
>>755
よくわからんが
> func(&n)
これはnに対して直接的な副作用あるんじゃないの?
0757デフォルトの名無しさん2014/09/23(火) 13:38:21.81ID:n40GWKtf
般 僧 掲 若 咒 咒 菩 波 夢 罫 依 智 老 識 色 無 垢 舎 空 利 時 観  摩
若 掲 諦 波 能 是 提 羅 想 礙 般 亦 死 界 声 受 不 利 空 子 照 自  訶
心 諦   羅 除 大 故 蜜 究 故 若 無 亦 無 香 想 浄 子 即 色 見 在  般
経   掲 蜜 一 明 知 多 竟 無 波 得 無 無 味 行 不 是 是 不 五 菩  若
   菩 諦 多 切 咒 般 故 涅 有 羅 以 老 明 觸 識 増 諸 色 異 蘊 薩  波
   提   咒 苦 是 若 得 槃 恐 蜜 無 死 亦 法 無 不 法 受 空 皆 行  羅
   薩 波 即 真 無 波 阿 三 怖 多 所 尽 無 無 眼 減 空 想 空 空 深  蜜
   婆 羅 説 実 上 羅 耨 世 遠 故 得 無 無 眼 耳 是 相 行 不 度 般  多
   訶 掲 咒 不 咒 蜜 多 諸 離 心 故 苦 明 界 鼻 故 不 識 異 一 若  心
     諦 曰 虚 是 多 羅 佛 一 無 菩 集 尽 乃 舌 空 生 亦 色 切 波  経
         故 無 是 三 依 切 罫 提 滅 乃 至 身 中 不 復 色 苦 羅
     波   説 等 大 藐 般 顛 礙 薩 道 至 無 意 無 滅 如 即 厄 蜜
     羅   般 等 神 三 若 倒 無 侘 無 無 意 無 色 不 是 是 舎 多
0758デフォルトの名無しさん2014/09/23(火) 14:17:29.62ID:rMNwwcoj
Cは「C言語なら俺に聞け(入門編)」みたいなスレがあるから、
本当に入門レベルの人が頭がこんがらがったりしてるときに
何聞いてもおkだけど、C++には、そういうスレッドがない。
0759デフォルトの名無しさん2014/09/23(火) 14:19:34.41ID:rMNwwcoj
C++の方が仕様が細かい部分でややこしいから、入門者の人が
頭がこんがらがったりしたときに聞けるスレがほしい。ここで聞くと、まともに答えてくれなく、
起こられる場合がある。
0760デフォルトの名無しさん2014/09/23(火) 14:21:04.69ID:kMVz7lc3
std::is_pod を車輪の再発明してみたいんだけど、どう書けばいいのか教えてください
0761デフォルトの名無しさん2014/09/23(火) 15:22:22.68ID:Y91BvWUL
>>760
人に聞いたら発明じゃなくね?
0762デフォルトの名無しさん2014/09/23(火) 16:10:20.93ID:49Grt2TR
ま、関数の引数に関数、演算書いたりするのは気をつけてなってことだ
一番いいのは処理独立させること
パラメタ評価の順も__cdecl、__stdcall、__fastcallで違ってくるみたいだし
0763デフォルトの名無しさん2014/09/23(火) 16:19:40.38ID:yKq0QWup
C++ だと rvo とか nrvo とか説明だけでも疲れるわな
0764デフォルトの名無しさん2014/09/23(火) 19:27:31.54ID:EJJzNOFK
__cdecl、__fastcall

いまどきこんなの使ってる奴いるの?
0765デフォルトの名無しさん2014/09/23(火) 19:33:54.76ID:pZL3aStB
>>748
C++のそのルールによれば>>736のケースでmain()のnに対するfunc()内外の2つの
副作用は"indeterminately sequenced"でしょ。

順序がどうなるかわからんけども未定義動作というわけじゃない。
0766デフォルトの名無しさん2014/09/23(火) 20:21:34.35ID:49Grt2TR
>>764
外向けは当然stdcallだけどローカルリンクする閉じた世界では何に使っても自由だからな
0767デフォルトの名無しさん2014/09/23(火) 20:35:03.83ID:RZgQ8Ezi
可変長引数
0768デフォルトの名無しさん2014/09/23(火) 20:36:50.41ID:AOVORc3c
>>764
x64は基本__fastcallだが。
0769デフォルトの名無しさん2014/09/23(火) 22:32:46.27ID:cbaGokBl
処理系依存のキーワードをわざわざ使う人居るのか?って話じゃないの?

>>768
どのプラットフォームの話?
0770デフォルトの名無しさん2014/09/24(水) 00:09:04.64ID:iGXOy7yj
>>769
amdがx64作った時にABI決めたから、どのプラットフォームでも同じなんだよ、ボクチン。
0771デフォルトの名無しさん2014/09/24(水) 00:18:05.96ID:TaWVN6KI
IA-64…
0772デフォルトの名無しさん2014/09/24(水) 01:51:52.96ID:Xz0lTI1r
>>770
レジスタ使う事しか一致してねえじゃん。
ここまで自信満々に間違った事言われると逆に清々しいな。
0773デフォルトの名無しさん2014/09/24(水) 07:01:22.72ID:2siJ58rQ
std::shared_ptrについて質問します。

std::shared_ptrの実装は、リンクリストを用いていますか?
それともカウンタを使っていますか?
0774デフォルトの名無しさん2014/09/24(水) 07:23:22.46ID:psEUFh+R
少なくともMSはx64 ABIの呼び出し規約を__fastcallモデルと呼んでいるが。
http://msdn.microsoft.com/ja-jp/library/ms235286.aspx
0775デフォルトの名無しさん2014/09/24(水) 07:23:32.45ID:PEJogInR
図解
https://pbs.twimg.com/media/ByM5koDCAAItp05.jpg
0776デフォルトの名無しさん2014/09/24(水) 08:09:48.03ID:TNcMX0Sc
>>773
規格では実装方法まで規定されていないので、実装によってどちらもあり得る。
ただ、テンプレートなのでヘッダに実装まで書いてあるだろうから、知りたければヘッダを見に行けばいい。
0777デフォルトの名無しさん2014/09/24(水) 08:19:05.15ID:2siJ58rQ
>>776
カウンタ、ポインタ、デリータを搭載したオブジェクトへのポインタを
保持していました。
0778デフォルトの名無しさん2014/09/24(水) 08:27:33.42ID:2siJ58rQ
enum classは一般的に実装されていますか?
0779デフォルトの名無しさん2014/09/24(水) 08:44:17.31ID:P3nVXP+t
>>774
そのABI、Windowsだけな。
0780デフォルトの名無しさん2014/09/24(水) 14:05:42.59ID:qzC/IE+H
プログラム趣味レベル1年なんですがandroidなどをいじってるぐらいで
Cもそこそこつかえてるとき
VBって覚えるのどのくらいかかるものなんですか?動かし方覚えるのに1ヶ月ぐらいですか?
0781デフォルトの名無しさん2014/09/24(水) 14:11:10.40ID:LGwwScCf
VBスレへ
0782デフォルトの名無しさん2014/09/24(水) 14:12:24.51ID:qzC/IE+H
VBってよくわかってないですがとりあえず移動
0783デフォルトの名無しさん2014/09/24(水) 15:50:00.10ID:N4m844gX
今の人はVBってのは逆に古いのかもね
0784デフォルトの名無しさん2014/09/24(水) 17:15:03.76ID:EKbXeXYy
VBって今でも生きてるの?
十何年か前にバージョン6.0を見たのが最後なんだが
0785デフォルトの名無しさん2014/09/24(水) 17:16:49.05ID:TaWVN6KI
vb.netになって復活したよ
0786デフォルトの名無しさん2014/09/24(水) 17:40:45.13ID:LEs4bhE4
VBはオワコン
0787デフォルトの名無しさん2014/09/24(水) 18:15:57.57ID:9fVabsZY
あるメソッドfへの参照渡し
f(SomeClass& sc)
って、インスタンスscにアドレス解決演算子&を施した結果のアドレスが引数として渡されるという意味ですか?
0788デフォルトの名無しさん2014/09/24(水) 19:48:12.55ID:8WLT/KOc
>>787
その & はアドレス云々とは関係ないと思っていたほうがよい
f(SomeClass &sc); というプロトタイプであっても、実際の呼び出しは rf(sc) と記述する。

じゃ、何が渡されるのか?
>&を施した結果のアドレスが引数として渡される
はほぼ正解
0789デフォルトの名無しさん2014/09/24(水) 20:26:35.21ID:9fVabsZY
うーん・・・
関係ないのにほぼ正解っていうのが不思議ですが
色々試してみて自分なりに納得できる方法を見つけてみようと思います。
0790デフォルトの名無しさん2014/09/24(水) 21:06:45.87ID:N4m844gX
オブジェクトへの参照を引数とする ってだけじゃないの?
勘違いしてる?
0791デフォルトの名無しさん2014/09/24(水) 21:14:15.45ID:4awcA0eB
配列じゃなくても最強ポインタさん召喚というのを避けるのに使う
0792デフォルトの名無しさん2014/09/24(水) 21:17:35.38ID:GROxL/lv
&がアドレス演算子という思い込みを一旦忘れなきゃダメ
0793デフォルトの名無しさん2014/09/24(水) 22:29:24.12ID:7MHxQfHz
呼び出し元の変数が
スコープの違う呼び出し先でも使える
0794デフォルトの名無しさん2014/09/25(木) 02:13:05.13ID:N54LjUIZ
稀にアンダースコアを多用したライブラリやらフレームワークのヘッダを見るんですがあれは何が由来というか、どうしてああなるんですか?
0795デフォルトの名無しさん2014/09/25(木) 02:23:42.09ID:kvBgFkpg
アンダースコアは規格で予約されたものだから
ライブラリやフレームワークが多様してるんだろう
0796デフォルトの名無しさん2014/09/25(木) 06:22:15.15ID:/NVqQrO0
ヘッダーにクラスメンバの定義を書くとDLLとDLLを使う側の両方に実体ができることが
有ったような気がするのですが、どうでしたっけ?
0797デフォルトの名無しさん2014/09/25(木) 06:25:12.71ID:Y/FZoDJC
>>796
inlineなものにstaticな定義があったときですかね
0798デフォルトの名無しさん2014/09/25(木) 08:26:04.64ID:/NVqQrO0
>>797
どうもです。

http://ideone.com/PfaqjK
この、b = a + 1,は合法ですか?
コンパイルは普通に通るし、インテリセンスも下線付かないんですが。
0799デフォルトの名無しさん2014/09/25(木) 08:27:34.55ID:PV5IkNGZ
>>794
以下のようなプログラムも問題なくコンパイルできるようになっている。

#define a "a"
#incluce <stdio.h>
int main() { puts(a); return 0; }

もし stdio.h など標準ライブラリ内の宣言に、たとえローカル変数であっても a という名前が
そのまま使われていた場合、ユーザーのマクロ定義の影響を受けてコンパイルできなくなってしまう。


これに対して、以下のように予約名を不正にユーザー定義しているプログラムの面倒を見てやる義理は無い。

#define __a "a"
#incluce <stdio.h>
int main() { puts(__a); return 0; }
0800デフォルトの名無しさん2014/09/25(木) 08:36:29.96ID:PQH/RCDK
incluce はコンパイルエラー
08017992014/09/25(木) 09:33:29.01ID:PV5IkNGZ
あ、ごめん。もちろん #include ね。
0802デフォルトの名無しさん2014/09/25(木) 10:24:34.54ID:Qu2+zU7G
>>798
なにが疑問なんだ?
enumの列挙子(要素)の初期化には定数式が使える
宣言済みの列挙子(の値)は定数式
0803デフォルトの名無しさん2014/09/25(木) 10:33:59.77ID:aCIY3SmK
非関数のオーバーライドだべ
0804デフォルトの名無しさん2014/09/25(木) 11:38:26.62ID:/NVqQrO0
>>802
どうもです。
0805デフォルトの名無しさん2014/09/25(木) 12:19:14.95ID:/NVqQrO0
LCDのリフレッシュ・レートを60Hzに設定しています。

画面の描画を背景から順番に図形を重ね書きしていきます。
この時、図形の数を増やしていくと、いつかちらつきが起こるようになります。

ちらつきが起こっていないときは、1/60秒以内に描画が完了していると考えることは
できますか?
0806デフォルトの名無しさん2014/09/25(木) 12:27:15.94ID:8NoETdMr
ダブルバッファ使えよ
0807デフォルトの名無しさん2014/09/25(木) 12:37:04.55ID:6cgJXjHh
ちらつきが起きてるように見えるかどうかは人による
2フレームで描画しててもちらついていないと感じる人もいるかもしれないのでそれじゃだめじゃない
0808デフォルトの名無しさん2014/09/25(木) 13:38:16.22ID:BazMlqYk
>>799
これって二つ以上の外部ライブラリが競合することってないんですか?
0809デフォルトの名無しさん2014/09/25(木) 14:07:14.87ID:/NVqQrO0
>>808
結構困ってます。
0810デフォルトの名無しさん2014/09/25(木) 15:25:57.69ID:A8OlsiHN
趣味グラマですが、C++で実践的なサンプル載ってる洋書を知ってる人がいたら、おしえてください。

Amazonで買いたいと思います。
08118102014/09/25(木) 15:27:11.65ID:A8OlsiHN
また、夜、見に来るので、暇な人は宜しくお願いします。
0812デフォルトの名無しさん2014/09/25(木) 15:36:56.72ID:QMPPpq5i
了解
0813デフォルトの名無しさん2014/09/25(木) 17:51:39.48ID:loQAbhB7
class Hoge
{
public:
template<class T,class U>
Hoge(T t,U u){}
};
で
Hoge* pt = new Hoge<int,int>(2,3);
としようとするとエラるんですが誰か理由分かりますか?
ちなみにエラー内容は「型intは不要です」とでました
0814デフォルトの名無しさん2014/09/25(木) 17:54:26.86ID:45t2KkEq
詳しくないし動作確認してないが。template<class T,class U>の位置がおかしいのでは。
0815デフォルトの名無しさん2014/09/25(木) 18:16:55.96ID:qQtrFYGh
intはclassじゃない。プリミティブ型のテンプレートはtypename
0816デフォルトの名無しさん2014/09/25(木) 19:57:53.28ID:ifGKHF6I
テンプレートコンストラクタの
テンプレート引数を直接明示的に
与える手段は文法上存在しない

似たような事するやり方はあるけど
0817デフォルトの名無しさん2014/09/25(木) 20:04:15.42ID:uEhi6Lrs
http://ideone.com/Nzlfsf

こういう事をしたいのか?
0818デフォルトの名無しさん2014/09/25(木) 20:10:21.81ID:uEhi6Lrs
http://ideone.com/pSSbLi

それともmul2みたいな事をしたいのか
0819デフォルトの名無しさん2014/09/25(木) 22:18:27.43ID:/NVqQrO0
http://ideone.com/VyAagU

これはなぜ1なんですかね?
0820デフォルトの名無しさん2014/09/25(木) 22:22:17.31ID:kvBgFkpg
0だと配列作ったりアドレス比較するときに困るだろ
0821デフォルトの名無しさん2014/09/25(木) 22:34:17.41ID:+tpWRwOH
ダークエネルギーがある
0822デフォルトの名無しさん2014/09/25(木) 22:41:24.84ID:/NVqQrO0
>>820
どうもです。
0823デフォルトの名無しさん2014/09/26(金) 00:36:35.68ID:8HWCFb8d
>>818
hoge2の方っす
0824デフォルトの名無しさん2014/09/26(金) 01:26:28.66ID:YOGKKWNY
>>823
メンバ関数を呼び出す時templateが妙な所に付いてるだろ?
これは
§14.2.4
When the name of a member template specialization appears after . or -> in a postfix-expression
or after a nested-name-specifier in a qualified-id, and the object expression of the postfix-expression
is type-dependent or the nested-name-specifier in the qualified-id refers to a dependent type, but
the name is not a member of the current instantiation (14.6.2.1), the member template name must be
prefixed by the keyword template. Otherwise the name is assumed to name a non-template.

これに倣ったものだ
gcc4.8.1だとtemplate無しでもなぜかエラーにならないけど
0825デフォルトの名無しさん2014/09/26(金) 01:28:57.79ID:YOGKKWNY
悪い
§14.2.4だった
0826デフォルトの名無しさん2014/09/26(金) 01:34:14.23ID:7RWtUm75
>>808
なるべくそういうことが起こらないように、ヘッダで定義しないといけないマクロはライブラリ固有の
プリフィックスを含む長い名前を使う、などの慣習がある。
0827デフォルトの名無しさん2014/09/26(金) 01:35:47.13ID:YOGKKWNY
酔ってて済まぬ
今まで寝てたからなあ
また寝るおやすみ
0828デフォルトの名無しさん2014/09/26(金) 03:35:29.72ID:6LjTafoV
ATLをタダで使いたいのですがビジュアルスタジオExpressには付いてません
無料のインストーラなどは無いのですか?
0829デフォルトの名無しさん2014/09/26(金) 03:37:04.68ID:DAYyQfhm
ないです
0830片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/09/26(金) 06:08:53.55ID:TOWrwa9l
>>828
Windows Driver Kitに付いてるよ
0831デフォルトの名無しさん2014/09/26(金) 07:00:34.12ID:gYh0NGrK
時々見えないレス番号があるんだけどなんなの?
0832デフォルトの名無しさん2014/09/26(金) 11:35:37.02ID:sGpJ75yo
NG宣言とか久しぶりに見た
0833デフォルトの名無しさん2014/09/26(金) 13:03:30.66ID:dz5SWLeo
跳んだ番号がいちいち気になるひとってなんなの?
0834デフォルトの名無しさん2014/09/26(金) 13:19:48.25ID:+PXOt4X8
A型なんじゃない?
0835デフォルトの名無しさん2014/09/26(金) 13:29:31.79ID:BPZIlMAB
http://ideone.com/3uN9Av

it1 == it2、v1.end() == it1は正しいですか?
0836デフォルトの名無しさん2014/09/26(金) 13:30:20.30ID:ddgt8ybY
いいえ
0837デフォルトの名無しさん2014/09/26(金) 13:32:45.41ID:qVbsgB3M
どのレスが見えなかったんだろう
831を書く前に気が付いたんだから830が見えなかったわけではないってことだよね
0838デフォルトの名無しさん2014/09/26(金) 16:17:26.96ID:b+KrCLWd
http://stackoverflow.com/questions/2342162/stdstring-formatting-like-sprintf
の8番目のソースコードをVS2013のC++で使おうとしたら、
vsnprintf(buffer, size, fmt, vl);
で警告が出たので
vsnprintf_s(buffer, size, _TRUNCATE, fmt, vl);
に変えたらビルド出来て動いたのですが、これで問題無いでしょうか?
それと、そもそもこのソースでは vsnprintf を二回使っていますが、
一回にすることは出来ませんか?
0839デフォルトの名無しさん2014/09/26(金) 18:07:40.09ID:qY859vRI
>>838
sizeを超えた時の動作が異なる。
エラーハンドラーで無視すれば同じ動作になる。
戻り値も違ったような気がする。
0840デフォルトの名無しさん2014/09/26(金) 18:14:12.60ID:qY859vRI
>>838
_TRUNCATE指定してたか。訂正。
戻り値使ってなければ、同じ動作だね。
0841デフォルトの名無しさん2014/09/26(金) 18:56:50.88ID:8HWCFb8d
高機能なソースの事前処理ってどうやったら実現できますか?(ファイルからデータを読み込む等)
0842デフォルトの名無しさん2014/09/26(金) 19:08:23.48ID:8tItaSRz
makefile とか MSVC のプロジェクト設定とかで
そういうツールやスクリプトを呼べばいい
0843デフォルトの名無しさん2014/09/26(金) 20:38:31.38ID://4m5n2I
autoにもインテリセンスが効くので、typedefやめてautoにしちゃおうと思うのですが、
まずい部分や気を付けないといけないことってありますか?
0844デフォルトの名無しさん2014/09/26(金) 20:58:03.83ID:sQacnu/5
ちょっと古いgccだとautoがコンパイルできないので互換性が低くなる
0845デフォルトの名無しさん2014/09/26(金) 20:59:29.10ID:sGpJ75yo
VisualStudioでは、typedefでつけられた型の名前から得られる情報が欠落することがある。
たとえばHRESULT型(longのtypedef)を返す関数DoSomethingがあるとして
 auto result = DoSomething();
として戻り値を受けるようにした場合、resultにカーソルを合わせると、型はlongと表示される。
なのでresultがHRESULTの値であるということがパッと見で分からなくなる。
0846デフォルトの名無しさん2014/09/26(金) 21:01:33.46ID:sQacnu/5
>>844
移植性と言うべきか
0847デフォルトの名無しさん2014/09/26(金) 21:16:19.86ID://4m5n2I
>>845
それではEclipseにしたほうが良いですかね。
0848デフォルトの名無しさん2014/09/26(金) 22:32:32.46ID:HL065XcY
>>845
HRESULT型 で表示したら、パット見で元の型わからんとか言う奴が...
0849デフォルトの名無しさん2014/09/27(土) 00:26:00.72ID:lZc14wWH
自作のライブラリを作ったりする時に、関数の戻り値を
どうするか迷うのですが、皆さんどうしています?
WindowsならHRESULT 型が良いのでしょうか?
何かお勧めの方法があれば教えてください。
0850デフォルトの名無しさん2014/09/27(土) 00:26:59.87ID:LFDE+RdC
戻したい型で。
0851デフォルトの名無しさん2014/09/27(土) 00:30:25.99ID:Rzo+82xO
ttps://sites.google.com/site/faithandbrave/error_handling
ここら辺り見て好きにする
0852デフォルトの名無しさん2014/09/27(土) 00:51:59.62ID:lZc14wWH
>>851
情報有難うございました。
ザッと読んでみたのですが30%くらいしか理解できませんでした。
例えば851さんは、成功か失敗かのどちらかを返す関数を作る場合、
戻り値はどうしていますか?
0853デフォルトの名無しさん2014/09/27(土) 00:58:55.38ID:Es6Y0cNh
関数の挙動による
成功失敗ならBOOL boolでいい
0854デフォルトの名無しさん2014/09/27(土) 01:24:25.88ID:ub60pjbZ
例外使ってもいいなら throw! throw!
戻り値で成功・失敗返すと、呼ぶ側いちいち if 文いるからメンドイ
まあそういうの多いけど
0855デフォルトの名無しさん2014/09/27(土) 08:40:17.22ID:X9fNrSMz
>>847
くそ
0856デフォルトの名無しさん2014/09/27(土) 09:25:18.60ID:dBgfCEST
>>824
http://ideone.com/IxySyO
基本x.fooが何物か特定不明の場合につける必要があるんじゃ
無かったっけ?
0857デフォルトの名無しさん2014/09/27(土) 21:33:35.08ID:pzkKNcsN
以下の通り実行したい関数をregistで登録し、executeで実行したいです

regist(func1(a));
regist(func2(a,b));
execute();

このとき、registに渡される関数は引数も戻り値も不定なのですが、この場合registの引数の型はどうすればよいでしょうか?
環境はvs2012(C++)です
0858デフォルトの名無しさん2014/09/27(土) 21:39:53.55ID:Rzo+82xO
>>857
ttp://ideone.com/vxgmfI
0859デフォルトの名無しさん2014/09/28(日) 00:01:16.55ID:ek6vZCkr
>>858
なるほど、ラムダと関数オブジェクト便利ですね
ありがとうございます
0860デフォルトの名無しさん2014/09/28(日) 05:01:25.56ID:dnjLo0or
>>856
そういう事かサンクス
0861デフォルトの名無しさん2014/09/28(日) 18:20:57.47ID:8S35qKl3
ロベール読み終わった後、楽しく読めるcpp本なにかあるでしょうか。ジャンルはといません
もうhogehugaの連続にはうんざりです…
0862デフォルトの名無しさん2014/09/28(日) 18:30:19.85ID:VNlOWu8X
ロベール終わったんならさっさとプログラム組んでしまおう
0863デフォルトの名無しさん2014/09/28(日) 19:22:23.83ID:onmSpgmc
>>861
C++の設計と進化
0864デフォルトの名無しさん2014/09/28(日) 19:53:11.73ID:yB4VOdfw
C++11とそれ以前の差分をざっと確認できるようなリファレンス本ないもんかな。
cpprefjpやcplusplus.comを紙にしたようなんでいいんだが。
0865デフォルトの名無しさん2014/09/28(日) 19:58:46.15ID:Fx/zPgDX
>>864
C++ポケットリファレンス
0866デフォルトの名無しさん2014/09/28(日) 20:17:44.75ID:yB4VOdfw
C++11対応のリファレンスってそれくらいしかないから見てみたが、ライブラリ部が逆引きだから
リファレンスの記述がどこにあるのかわからなくて恐ろしく引きにくかった。
仕方なく索引から引くんだが、複数ページあると外れもあるし。
0867デフォルトの名無しさん2014/09/28(日) 21:17:02.01ID:RAKSDySk
俺も、ライブラリを基準に書いてあるものだと期待して本屋で手に取ったら
逆引きで書かれていたからがっかりした憶えがある。>ポケットリファレンス
C++を使うに当たってのとっかかりには悪くない本なんだろうけど・・・
0868デフォルトの名無しさん2014/09/28(日) 23:58:32.22ID:SkMDQSso
買ったけどほとんど役に立たないな。
0869デフォルトの名無しさん2014/09/29(月) 00:03:20.88ID:qys/q/RJ
仕様書をダウンロードしてgrepでいいじゃん
0870デフォルトの名無しさん2014/09/29(月) 00:07:18.79ID:s6GohK/v
仕様はユーザー向けに書かれていないからリファレンスには向いてないな。
0871デフォルトの名無しさん2014/09/29(月) 01:57:49.51ID:wzhhA1qS
そうそう。規格はいわば辞書のようなものでそれ単体で読んでもあまり学習の役に立たない
0872デフォルトの名無しさん2014/09/29(月) 02:38:57.09ID:ckYTLCL6
cplusplus.com以上のものはないしあれで十分
ほかは何かが足りない
0873デフォルトの名無しさん2014/09/29(月) 15:06:55.51ID:Vd5Mo6Qu
cplusplus.comってのは規格書からピックアップしてきただけじゃないか?
規格書自体はみたことがないが。そうだっら規格書のほうが上だが。
0874デフォルトの名無しさん2014/09/29(月) 20:08:12.91ID:ldEBn8mU
日本では11,14ハブられすぎ・3・)<どんだけ
0875デフォルトの名無しさん2014/09/29(月) 20:27:13.68ID:bm2ucN1b
アメリカでもC++11は拒否られ傾向
0876デフォルトの名無しさん2014/09/29(月) 21:35:24.89ID:C8ojmzYe
14が Stable 相当に成るんかと思てたら Release未満な感じだしなんか先行きヤバイよね
0877デフォルトの名無しさん2014/09/29(月) 21:44:28.16ID:cGDZNOx4
って言うほどなんか問題あんの?
0878デフォルトの名無しさん2014/09/29(月) 21:48:12.64ID:lVua1t90
はぶはぶ
0879デフォルトの名無しさん2014/09/30(火) 01:19:47.75ID:Et9/pZky
イクラちゃんは『ハーイ』 『バブー』 『チャーン』 『アハーン』(鳴き声) しか喋らないと思う
0880デフォルトの名無しさん2014/09/30(火) 02:56:22.10ID:/eg463LS
ばぶばぶ
0881デフォルトの名無しさん2014/09/30(火) 20:11:27.60ID:ikOLIK46
wWv の3文字しか使わない言語 Grass というのもあるのだから、
イクラちゃんが高度なコンピネータ型会話を行っているのは明らか
0882デフォルトの名無しさん2014/09/30(火) 20:33:45.83ID:0L5gMKTL
各種ソートアルゴリズムをウィキペディアにあるコードを見ながら(パクって)実装してるのですが、マージソートが良く分かりません
マージソートって最後に二つに分けたデータを結合しますよね? それの、結合の仕方が分かりません

↓今は適当に比較、交換しながら整列してます
http://ideone.com/iv5fgw

比較、交換しながら整列してるので、マージソートとは名ばかりの、バブルソートと同等のものになってます
どうやって結合すればいいんでしょうか?
0883デフォルトの名無しさん2014/09/30(火) 20:35:30.91ID:2tlu79gE
>>882
URL中身見れないけど
0884デフォルトの名無しさん2014/09/30(火) 20:45:37.20ID:0L5gMKTL
>>883
すいません、設定がおかしかったようです。直しました。
0885デフォルトの名無しさん2014/09/30(火) 20:58:17.76ID:M7qXdw9r
質問なんですが、
strcmpとか
printfとか良く使うんですが、
char版やwchar_t版の関数名がなかなか覚えられないので、使うたびに毎回検索しています。
でも、よく考えたら、
strcmp
wcscmp
って、引数の型が違うんだから、関数名同じstrcmpにして、オーバーロードで定義しておけば
名前の混乱もなくなると思ったのですが、違いますか?他のprintfとかも。
0886デフォルトの名無しさん2014/09/30(火) 21:02:27.94ID:JjKI4EMd
Cにはオーバー道路ない
0887デフォルトの名無しさん2014/09/30(火) 21:03:06.26ID:SnNSAPUG
Cにはオーバーロードがないから
0888デフォルトの名無しさん2014/09/30(火) 21:11:07.84ID:M7qXdw9r
では、C++限定で、どうでしょうか?
0889デフォルトの名無しさん2014/09/30(火) 21:12:35.31ID:onIPhOR3
ガイム、もうすぐ終わるよ
0890デフォルトの名無しさん2014/09/30(火) 21:13:59.06ID:p4Jys04g
試せば一発でわかることを何ごちゃごちゃと
0891デフォルトの名無しさん2014/09/30(火) 21:20:30.37ID:SnNSAPUG
>>888
自分でラッパー作ってもいいのよ
0892デフォルトの名無しさん2014/09/30(火) 21:29:03.00ID:M7qXdw9r
>>891
それは面倒なので、C++の仕様でそうすればいいのに。
0893デフォルトの名無しさん2014/09/30(火) 21:38:51.83ID:LL2el0Wn
やだよ
混乱するのが目に見える
0894デフォルトの名無しさん2014/09/30(火) 21:46:52.44ID:QntTjtgn
VC++のTCHARじゃあかんのか
0895デフォルトの名無しさん2014/09/30(火) 22:28:37.67ID:jrue3ndR
>>882
君がやっているのはin-place mergeというマージソートの変種の一つで素のマージソートじゃない
素のマージソートでの結合は単純に結合結果用の領域を用意してそれを埋めていって
必要があればその内容を元のソート対象のリストに書き戻すだけ
0896デフォルトの名無しさん2014/09/30(火) 22:30:01.91ID:kUI4keUC
stringクラスも含めて文字周りがモノリシックで汎用性がなくなったのは
個々のベンダーとC++の歴史的教条主義のせいだみたいなことを書いていたのは
メイヤーだったかハーブだったか…
まあアレだよ 結論的には

 無 理
0897デフォルトの名無しさん2014/09/30(火) 22:52:59.01ID:0L5gMKTL
>>895
レスThanks

in place merge sortでググったらサンプルソースらしきものが出てきたのでもう少し頑張ってみます
0898デフォルトの名無しさん2014/09/30(火) 23:09:33.48ID:2xIMsJb6
>>888
std::string 使えよ
0899デフォルトの名無しさん2014/10/01(水) 01:54:20.39ID:a/0Pjuck
マージソートなんてデカイファイル内容を省メモリでソートする時しか使わないよね
普段はクイックソートとスリープソートだけあれば充分
0900デフォルトの名無しさん2014/10/01(水) 04:48:42.20ID:bsKpzQI5
>>899
スリープソートに実用性あるのけ?
0901デフォルトの名無しさん2014/10/01(水) 05:46:05.45ID:IDwTE5ky
スリープソート笑ったわ
あんなの実用になんのか
0902デフォルトの名無しさん2014/10/01(水) 12:34:22.14ID:EoNROeAA
一応最小単位がsleep命令の分解能だから突き詰めれば10ms/個までは高速化出来るんだぜ
0903デフォルトの名無しさん2014/10/01(水) 12:59:03.36ID:4fBnRRmy
tickが10msとしても、それはいわばsleepの誤差が10msということなので、安全のため20ms以上で見積もりたい
0904デフォルトの名無しさん2014/10/01(水) 13:09:58.15ID:Tpc7ro4O
マジレスしたら負けな雰囲気
0905デフォルトの名無しさん2014/10/01(水) 13:15:34.47ID:YGQGEKee
音声ファイル(但し同一再生時間)の連続再生の時に便利。
0906デフォルトの名無しさん2014/10/01(水) 14:20:51.37ID:d08nCdaw
データ大杉、仮想リストビュー化したらカラムソートが問題になってクイックソート脱落ってのはある
0907デフォルトの名無しさん2014/10/01(水) 21:11:57.62ID:7LpuTxqg
最適化で質問なのですが、VS2013のC++で
string func(int i){
 string str;
 // do something
 return str;
}
void test(){
 int iEnd = 10000;
 for (int i = 0; i< iEnd; i++)
 {
  string str = func(i);
 }
}
こういう計算して何秒かかるか計測した場合、for内のstrはtest()内のどこでも使われていないので
Releaseビルドで最適化した場合にfunc()の呼び出し自体が行われないなんていう
ことは有りますか?(なので計測結果が物凄く短時間で終わるとか)
0908デフォルトの名無しさん2014/10/01(水) 21:17:35.82ID:YGQGEKee
>>907
func()とtest()が同じソース内にあれば、コンパイル時にfunc()を呼び出す必要がないのが明示的なので、
まともなコンパイラなら最適化で呼び出しどころかループもなくなる。
0909デフォルトの名無しさん2014/10/01(水) 21:18:39.92ID:DTMRbqd/
>>907
funcは絶対呼び出される
NRVOでstringコンストラクタ呼び出しが想定より少ないとかはあり得る
0910デフォルトの名無しさん2014/10/01(水) 21:44:28.41ID:7LpuTxqg
>>908>>909
レスありがとうございます。
実際はfunc1()とfunc2()があって、どちらも同じ機能なのですが、
アルゴリズムが違っていて、どっちの計算速度が速いか調べたいので
こういうforループで計測しようと思ったのですが、もし最適化で
func1や2が呼び出されないんなら比較できないので困ります。
どうしたら良いでしょうか?
0911デフォルトの名無しさん2014/10/01(水) 21:48:36.42ID:IDwTE5ky
逆アセ見て実際に呼ばれてるのか見ればいいんじゃないか
0912デフォルトの名無しさん2014/10/01(水) 22:23:42.74ID:yW4yhB09
string strをグローバル変数にしておけば最適化がかからないはず
0913デフォルトの名無しさん2014/10/01(水) 22:38:32.56ID:DTMRbqd/
>>910
まずはやってみろとしか言えない
もうFAQだが、最適化が関わる問題はやって見なければ何も分からん
0914デフォルトの名無しさん2014/10/01(水) 23:06:22.42ID:ZcNvH3B/
volatileはあかんの?
0915デフォルトの名無しさん2014/10/01(水) 23:27:45.68ID:sjXGh0Eh
消される可能性は有るが、stringのコンストラクターの中身に依らず消してよい
と本気で考える奴は馬鹿
0916デフォルトの名無しさん2014/10/01(水) 23:46:11.41ID:DTMRbqd/
>>915
いや、消していいんだよ
コンストラクタの副作用があろうともRVO/NVROして良いと規格が保証しているんだから
もちろん、やるかどうかはコンパイラ次第
0917デフォルトの名無しさん2014/10/01(水) 23:56:22.64ID:7LpuTxqg
皆さんレスありがとうございました。
結論としては、やってみないと分らない
で良いでしょうか?
0918デフォルトの名無しさん2014/10/02(木) 00:22:13.85ID:B4fYW4YS
普通に最適化するがdead code eliminationはしないようにコンパイルオプションを指定するのが正道
0919デフォルトの名無しさん2014/10/02(木) 01:20:30.53ID:j/17asXl
>>915,916
こういうやりとりを見るたびにアジャイルプラクティスはいい本だったなぁと思うのであった…(゚∀゚)
0920デフォルトの名無しさん2014/10/02(木) 03:50:46.52ID:3VhMTQGG
素直にコンストラクタの前後で計測して処理行われてるか確認のためにcoutに出力したらいいのに
文字数大きかったらハッシュとって二つが同じ処理結果返してるか=で比較するとか
0921デフォルトの名無しさん2014/10/02(木) 07:15:22.58ID:BgcsjDYP
>>916
>コンストラクタの副作用があろうともRVO/NVROして良いと規格が保証して

ソースは?
規格が許可しているのは副作用のあるコピー・移動コンストラクタの省略だったと思ったが
0922デフォルトの名無しさん2014/10/02(木) 08:16:08.28ID:skJRG6ld
>>921
ごめん、 俺が文を省略しすぎた
そこが突っ込みどころだったのなら、その通り
0923デフォルトの名無しさん2014/10/02(木) 09:37:54.51ID:HFWeLqOZ
>>921
12.8 [class.copy] p31
"When certain criteria are met, an implementation is allowed to omit the
copy/move construction of a class object, even if the copy/move
constructor and/or destructor for the object have side effects. ..."
0924デフォルトの名無しさん2014/10/02(木) 09:46:56.07ID:HFWeLqOZ
>>915
ってことで、コンストラクタ呼び出しを最適化で消してよいかどうかって話に
コンストラクタの中身は関係ないよね?
0925デフォルトの名無しさん2014/10/02(木) 16:03:24.83ID:vUTW9S7L
std::listなどのコンテナでは、内部的なノードが動的に確保されているはずだと思いますが、
このメモリ確保の動作を変更することなどはできますか。

実際にしたいことは、listやmapがすでに確保されたメモリを使うようにすることです。

最終目的は、テキストファイルから読み込んだツリー構造が、あらかじめ確保したメモリの中にすべて納まるようにすることです。
0926デフォルトの名無しさん2014/10/02(木) 16:18:02.75ID:zf1rY1mq
自作して実用したことはないが。自作アロケータでは。



C++編(標準ライブラリ) 第28章 アロケータ
C++でプログラムを書いていると、様々な場所でnew/deleteを繰り返し、メモリを動的に確保します。
ところが、このメモリ確保の処理速度は、意外なほど低速です。
これは、標準で用意されているnew/deleteは、いかなる状況であっても、全く同様に扱えるようにするため、
処理速度を犠牲にして、汎用性を高めているためです。

C++標準ライブラリでも、当然様々な場所でメモリ確保を行っている訳ですが、このメモリ確保のためのルーチン(処理)を、プログラマが指定することが可能になっています。
メモリの割当てや解放を行うためのオブジェクトのことを、特にアロケータと呼びますが、このアロケータをプログラマが独自に作成することができるのです。
http://ppp-lab.saku ra.ne.jp/cpp/library/028.html
0927デフォルトの名無しさん2014/10/02(木) 16:28:20.79ID:vUTW9S7L
的確な回答ありがとうございます。
まさにこれでやりたいことができそうです。
0928デフォルトの名無しさん2014/10/02(木) 18:07:10.84ID:vXZHvcc3
std::vector<>は要素がメモリー上で連続していることを保証しています。
これは、C++11でも保証されていますか?

X *x = &vector.front();
::CallWindowsAPI(x, vector.size());

こういう使い方は正しいですか?
0929デフォルトの名無しさん2014/10/02(木) 18:56:59.41ID:2H9v4lU3
もちろん
先頭アドレスが欲しいならvector.data()ってのがある
0930デフォルトの名無しさん2014/10/02(木) 19:06:24.03ID:vXZHvcc3
>>929
どうもです。
0931デフォルトの名無しさん2014/10/02(木) 19:51:45.07ID:FEwT1Plk
すみません知恵をお貸しください
VC++(MFC)のSDIで開発をしています。
やりたいことは、リストを行単位で描画しており、その予定をドラッグで上下入替したいと思っています。
イメージとしては、android端末でアイコンを他のアイコンのそばにドラッグするとにゅるっと?位置を入れ替える動作があると思うのですが、
その要領で行を上下入れ替えるような操作がしたいと思っています。
今までそのようなプログラムは書いたことがなく、今回チャレンジしたいのですが、
一つの行に複数の項目があり、2行で一つの予定になっているので単純に既存のコントロール一つで完結することは難しいです。
何かヒントでもいいので参考になるサイト等ありましたら教えていただけませんでしょうか?

参考までに予定一つにつき、下記のような感じで LineTo, DrawText 等を駆使して描画しています。
ーーーーーーーーーーーーーーーーーーーーーーーーーーー
項目1| 項目2 |   項目3 |
ーーーーーーーーーーーーーーーーーーー 予定1
項目4 | 項目5 |
ーーーーーーーーーーーーーーーーーーーーーーーーーーー
項目1| 項目2 | 項目3 |
ーーーーーーーーーーーーーーーーーーー 予定2
項目4 | 項目5 |
ーーーーーーーーーーーーーーーーーーーーーーーーーーー

説明が足らない部分があるかもしれませんが、よろしくお願いいたします。
0932デフォルトの名無しさん2014/10/02(木) 20:04:10.45ID:2H9v4lU3
WM_LBUTTONDOWNでDragDetectを実行してドラッグを検知したら
SetCaptureでマウスの移動を追跡できるようにする
WM_MOUSEMOVEで今マウスの位置がどこにあるかを見て
必要なら並び替える
WM_LBUTTONUPでReleaseCaptureを呼んでマウスの追跡をやめる
だいたいこんな流れになる
0933デフォルトの名無しさん2014/10/02(木) 20:32:05.18ID:45O7cLsu
>>924
オマエ論理的思考が出来ないのか?
923「副作用が有る場合でもコピー/ムーブコンストラクタは省略して良い」
924「それ故、コンストラクタ(デフォルト含む)の中身と最適化の削除は関係ない」
レスが繋がっていないんだが。
0934デフォルトの名無しさん2014/10/02(木) 21:08:36.97ID:FEwT1Plk
>>932
ありがとうございます
教えて頂いたカーソルの追跡についてはなんとかできそうです、ですが
・クリックした場所にあるリストの情報の取得
・行をドラッグした際にその行を透過し、カーソルに追従させたい
・また入替の際のアニメーションのような処理
のイメージがつかめません。
今のようなループでリストの数回して LineTo, DrawText等で描画しているのでは無理じゃないかなと思っているのですが、できるのでしょうか?
行1つをオブジェクトのような形でwindowを作成してメインのwindowにそれぞれ順番に配置したりするのかな、とか考えているのですが、
どういった扱いをするのがよいのでしょうか?
今は1行の項目を構造体で持たせてvectorで複数格納しています。
数にっては画面をスクロールする場合もあります。
0935デフォルトの名無しさん2014/10/02(木) 22:06:47.37ID:2H9v4lU3
>>934
今のリストの描画はどうなってるんだ
CSrollViewを使っているのか?
それならvectorで持ってる構造体の中に項目の位置と大きさをCRectで持てば
PtInRectを使ってマウスの位置にどの項目があるのかが分かる
ドラッグイメージの表示はImageListが使える
アニメーションはSetTimerを使って少しずつ描画をずらすなりすればいい
0936デフォルトの名無しさん2014/10/02(木) 22:56:20.79ID:06qLYu3M
最近C++を始めたもので
もし的はずれな質問をしていたらすみません。

抽象クラスのstd::listを作って、派生クラスを入れてオーバーライドはできますでしょうか
また、これは正しい用法なのでしょうか
よろしくお願いします
0937デフォルトの名無しさん2014/10/02(木) 23:05:42.76ID:Q7xefffp
std::list<抽象クラス*> list;
list.push_back(new 派生クラス);
ならできる
0938デフォルトの名無しさん2014/10/02(木) 23:11:56.41ID:jdzyRUoJ
できるけど入れるのはunique_ptrにしとけよ
std::list<std::unique_ptr<base>>
0939デフォルトの名無しさん2014/10/02(木) 23:29:02.99ID:06qLYu3M
言って頂いた事を中心に調べてみたのですが
>>vectorにポインタで格納できるが、vector の途中に要素を挿入すると、
 挿入した場所以降の要素へのポインタは無効になります。削除も同様です。
とありました。
listも同じような話なのでしょうか...
またスマートポインタではそれが解決できるということでしょうか。
よろしくお願いします。
0940デフォルトの名無しさん2014/10/02(木) 23:29:47.30ID:cBwJNspI
json11 使ってる人います?
はじめてjson使うんだけど、これのソース見てたら添え字演算子がconst制限されてるから
ソースを変更しない限り、json objectの一部をそのまま書きかえるみたいなことはできないんですかね
json_object["key"] = "key_val" みたいな感じでkeyの値を書きかえるみたいな。
なんかソース見ると、json object -> map<string,Json>へconvert -> mapの中身変更  Json new_json(map)
みたいなことをせざるをえんように見えるんだが。。

データ読むのはいいんだけど、書き換えがすごい不自由なような...
0941デフォルトの名無しさん2014/10/02(木) 23:32:04.80ID:Q7xefffp
>>939
ポインタじゃなくてイテレーターじゃない
それにしても話がおかしいけど
deleteしなきゃポインタは無効にならないよ
0942デフォルトの名無しさん2014/10/02(木) 23:34:28.90ID:sGyqHmPN
>>939
無効になるのは「要素へのポインタ」であって格納するポインタじゃない。
なんでその二つを絡めて書いてるかは知らんが。
0943デフォルトの名無しさん2014/10/02(木) 23:34:46.36ID:Q7xefffp
>>940
json11 is a tiny JSON library for C++11, providing JSON parsing and serialization.
って書いてあるから書きかえはあんまり考えてないんじゃないか
0944デフォルトの名無しさん2014/10/02(木) 23:59:47.03ID:9vOPXvtb
ビルの一階にそのビルに入ってる会社の名前のリストとかあるだろ
そのリストの一部が破損しても会社はしかるべき階にちゃんと存在してるだろ
修復したリストの形状は変わるかもしれないけど内容は変わらないだろ
0945デフォルトの名無しさん2014/10/03(金) 00:40:47.00ID:engCVLK6
例え話は話がややこしくなりがちだからメモリマップで実動作を示してくれた方が良いぜ(環境依存の罠がまれに良くあるが)

>>939
vectorは連続したメモリ空間上にある事が保障されてないといけないから、途中への挿入や末尾追加時にcapacity足りない時は新たなメモリ上にコピーされるので、無効になるね
逆にlistは連結リストなので連続してなくても良いから挿入してもポインタは保持される。
http://ideone.com/hHjJNe

ただ、だからと言ってlistを使ってアドレス記憶するってのもlistコンテナにするって制約が発生するのであまりやらない方が良いと思う。
09469242014/10/03(金) 00:56:14.82ID:Znmj+oh9
>>933
えーと、つまり >>915 の言ってたのは↓こういうことだったのかな?

(コピー・ムーブコンストラクタの呼び出しが)消される可能性は有るが、
stringの(デフォルト)コンストラクター(を、そ)の中身に依らず消してよいと
本気で考える奴は馬鹿

>907-914 に流れで言ってる「コンストラクタ」は全部コピー・ムーブコンストラクタの
ことだと思ってた。
0947デフォルトの名無しさん2014/10/03(金) 01:20:14.80ID:BckNhF3j
アロケータとかイテレータの実装ガイドラインってないのですか?
アロケータのページサイズとかヒントは何に使うとか細かいとこまで書いてある奴がいいです
0948デフォルトの名無しさん2014/10/03(金) 01:59:45.35ID:b15O82N5
そういうのを正しく作りたいなら規格の該当個所を理解できるまで読み込むんじゃないの
0949デフォルトの名無しさん2014/10/03(金) 04:46:10.76ID:uV+ijUmp
アロケータの3つ4つのメソッドオーバーライドするだけだろ
それがすぐわからなければやる能力ない
0950デフォルトの名無しさん2014/10/03(金) 04:53:12.65ID:ON3UZZIk
参照を上書きする方法が言語仕様にないから
アロケータを自前で書く場合は常にマシン語になるって話を誰かしてなかったっけ・3・;
0951デフォルトの名無しさん2014/10/03(金) 07:28:13.22ID:2ixhbIuP
よし理解できるまで読んでくれ
20.6.9.1p6
The use of hint is unspecified, but intended as an aid to locality if an implementation so desires.
0952デフォルトの名無しさん2014/10/03(金) 09:05:28.54ID:Qxdy43ON
特に気にしたことなかったけどなんだこれw
0953デフォルトの名無しさん2014/10/03(金) 10:12:56.78ID:8OTaypIY
ヒントは所詮ヒント
0954デフォルトの名無しさん2014/10/03(金) 11:34:14.30ID:UziybsFR
>>943
あんがと。もともと、軽量のデータ想定だから、書き換えたければ、毎回新規にOBJECTつくればいいでしょ
ぐらいなんだろうね。左辺への参照戻し不許可にするのはセキュリティ的には
正しいんだろうけどなぁ。。
C11で使うとなると、やっぱこれに手をいれるしかないか。
0955デフォルトの名無しさん2014/10/03(金) 12:43:34.83ID:vVK7ZKzx
あまり理解できていないので変な事を聞いてるかしれませんが、
自分のハンドルから親のハンドルを取る関数ってあるのでしょうか?
0956デフォルトの名無しさん2014/10/03(金) 12:44:12.85ID:zYcZx51K
ハンドルって何
0957デフォルトの名無しさん2014/10/03(金) 12:50:34.66ID:lXIQAzKJ
あまり理解できていないので変な事を答えてるかしれませんが、
親のハンドル = getparent(自分のハンドル)という関数があるはずです?
0958デフォルトの名無しさん2014/10/03(金) 13:42:16.68ID:gGzwLNzY
オブジェクトを指し示す論理的オブジェクト
0959デフォルトの名無しさん2014/10/03(金) 19:04:38.96ID:ceUJAoE9
MSVCだと一時オブジェクトのアドレスを取得できちゃうんだけど、
このオブジェクトはいつまで有効なの?

#include <windows.h>
#include <iostream>

struct A { int x; };

int main()
{
  A *p = &A();  // なんぞこれ
  p->x = ::GetTickCount();
  std::cout << p->x << std::endl;

  return 0;
}
0960デフォルトの名無しさん2014/10/03(金) 20:03:47.80ID:2ixhbIuP
;  // なんぞこれ

このセミコロンまで
0961デフォルトの名無しさん2014/10/03(金) 20:27:06.70ID:ceUJAoE9
では、次のケースでは関数から制御が戻るまで有効なのだろうか?
(何の意味があるのかは別として)

struct A { int x; };
void func(A *p) { p->x = ::GetTickCount(); }

int main()
{
  func(&A());
  return 0;
}
0962デフォルトの名無しさん2014/10/03(金) 20:36:56.30ID:yBfd1FLr
なんか大袈裟に MSVC だととか言ってるけど別にg++でもヘッダファイルを
など変更してやればおk
0963デフォルトの名無しさん2014/10/03(金) 20:51:39.95ID:2ixhbIuP
>>961
クソレスでスレを汚す暇があったら
デストラクターにprint入れて調べろカス
0964デフォルトの名無しさん2014/10/03(金) 21:06:56.34ID:F3skKHUN
この程度聞くより実行したほうが
どう考えても早い件
0965デフォルトの名無しさん2014/10/03(金) 21:10:40.63ID:Bj0U/nno
struct A { int x; ~A(){printf("baka");}};
void func(A *p) { p->x = ::GetTickCount(); }

int main()
{
  func(&A()), printf("aho");
  printf("shine");
}
0966デフォルトの名無しさん2014/10/03(金) 21:13:18.67ID:engCVLK6
>>965
func内で出力しないと証明にならないんじゃない?
0967デフォルトの名無しさん2014/10/03(金) 22:02:47.44ID:ccTAdR9V
シーケンスポイントも知らないひとはこんな質問しないだろうから証明は必要だな
と思ったらC++11でシーケンスポイントという言葉が無くなってた
0968デフォルトの名無しさん2014/10/03(金) 23:07:33.71ID:0o01OOek
すみません、誰か正規表現について教えてください

#define(空白文字が1個以上)(単語に使われる文字が1個以上)
を検索したいのですが、正規表現でどうやって書いたらいいか分かりません
#define([\s]+)([\w]+) とやってみたのですが、検索で引っかかりません
だれか教えて下さい(´;ω;`)
0969デフォルトの名無しさん2014/10/03(金) 23:11:05.22ID:HP+NX9Yz
スレチ
0970デフォルトの名無しさん2014/10/03(金) 23:22:45.26ID:B6mxhxuk
#define(\s+)(\w+)

文字列のエスケープシーケンスも確認
0971デフォルトの名無しさん2014/10/03(金) 23:30:10.04ID:0o01OOek
>>970
> 文字列のエスケープシーケンスも確認
まさしく、それでした・・・

\がエスケープシーケンスとして解釈されるから\\と入力しなくちゃだめだったんですね
すっごい初歩的なミスでごめんないさい。吊ってきます ('A`)
0972デフォルトの名無しさん2014/10/03(金) 23:36:27.03ID:0aZUNouk
>>970-971
スレ違いと言われてるのにスレを荒らすなゴミクズ
0973デフォルトの名無しさん2014/10/04(土) 21:28:16.62ID:ytZZFNXo
だいぶ昔って、C言語で取得したメモリをプログラムでfreeし忘れると
プログラムが終了してもOSも解放してくれないっていう事があったのですか?

また、C言語で作成したプログラムの中でファイルポインタをクローズし忘れると
そのプログラムが終了した後も、そのファイルに対する入出力ができなくなってしまう(ロックされてしまっている状態)という
ことがあったのですか?
0974デフォルトの名無しさん2014/10/04(土) 21:32:20.16ID:uBTtBUuA
大昔ならあったんじゃないかな
0975デフォルトの名無しさん2014/10/04(土) 22:04:04.72ID:KbByyPwl
同時オープン数制限がきつかったからな
0976デフォルトの名無しさん2014/10/04(土) 22:07:11.31ID:QZPta7oH
>>973
Windowsにはリソースを開放しない(M$が仕様と言い張っている)バグがあるそうです。
Linux板では有名な話です。
0977デフォルトの名無しさん2014/10/04(土) 22:08:37.39ID:RXCsY/a+
>>973
WindowsはNT系より前はそうだった、NT系からはOSがよしなに解放してくれる、
ただしそれで解放しないプログラムはOS依存になる為汎用性が損なわれるし、
短いプログラムなら良いが長く起動するアプリケーションでそれをやるとメモリ食いつぶすのでやったらダメ。
0978デフォルトの名無しさん2014/10/04(土) 22:29:55.72ID:j+aw4iLv
>>976
> Windowsにはリソースを開放しない(M$が仕様と言い張っている)バグがあるそうです。

具体的に何?
犬厨の妄想じゃないんだよね?
0979デフォルトの名無しさん2014/10/04(土) 22:31:35.39ID:RXCsY/a+
>>977
s/汎用性/移植性/g
0980デフォルトの名無しさん2014/10/04(土) 23:26:04.11ID:9kptgWt4
>>945
忙しくてお返事が遅れてしまいました、すいません。

つまりlistでオーバーライドは賢いやり方ではないということでしょうか...
もしそうであれば、代わりになる方法等はございますでしょうか
よろしくお願いします
0981デフォルトの名無しさん2014/10/04(土) 23:26:48.62ID:OJABLBvT
ms officeなんてご丁寧にファイルを
ロックしてくれる上に、
プロセスが落ちたあとも何故か解放されず
再起動するまでファイルが弄れなくなるなんて
未だによく経験するだろう
0982デフォルトの名無しさん2014/10/05(日) 00:00:19.98ID:ktqu8y2s
プロセスが死にきれなくて残ってることならある
0983デフォルトの名無しさん2014/10/05(日) 01:16:55.03ID:ki3v4/8Q
そこはタスクマネージャでも何でも普通確認すると思うが
0984デフォルトの名無しさん2014/10/05(日) 01:45:00.81ID:ECj89i9h
あれはオフィスのプロセスが掴んでるんじゃなくて
カーネルが掴んでるからタスクマネージャでプロセス殺すと自動的に再起動なのでは?( ´∀`)
0985デフォルトの名無しさん2014/10/05(日) 01:53:29.52ID:OsaIba9z
エクスプローラプロセスが掴んでて消せないことはよくある
ファイルハンドルなどプライベートリソースはプロセス終了とともにクリア
共有リソースはいろいろ
0986デフォルトの名無しさん2014/10/05(日) 02:34:14.29ID:eVa9bbGh
>>978
妄想に浸りたいんだから問いつめちゃだめ
自尊心が保てなくなっちゃうよ?
0987デフォルトの名無しさん2014/10/05(日) 07:32:55.81ID:waE9omSr
あ
0988デフォルトの名無しさん2014/10/05(日) 07:38:07.55ID:e3IJDrLs
る
0989デフォルトの名無しさん2014/10/05(日) 08:28:31.22ID:vX4qgpsa
ひ
0990デフォルトの名無しさん2014/10/05(日) 16:46:09.67ID:x75CBE+a
とあるサイトで見つけたのですが

例)
{
int b = 0;
int* c = new int;
}
コープを抜けた後にはポインタのcが存在しないので
delete c とも書けない分けです。
・・・という分けでnewしたスコープやクラスが
きちんとdeleteの面倒を見るように注意を払う必要があります。



とありました。
この場合にdeleteをし忘れると
確保した領域はプログラム終了まで
開放する術は全くないのでしょうか?
0991デフォルトの名無しさん2014/10/05(日) 16:49:39.20ID:kq2CsrMi
言語仕様の範囲では存在しない
0992デフォルトの名無しさん2014/10/05(日) 16:51:47.92ID:a6/ySe32
次スレ
↓
0993デフォルトの名無しさん2014/10/05(日) 16:52:15.28ID:4FShMSYH
>>990
全くないとは言わないけどその程度の知識レベルでは使えないのでないに等しい
0994デフォルトの名無しさん2014/10/05(日) 16:53:31.72ID:a6/ySe32
>>990
return c;
0995デフォルトの名無しさん2014/10/05(日) 16:54:39.32ID:4FShMSYH
はいよ
http://peace.2ch.net/test/read.cgi/tech/1412495628/
0996デフォルトの名無しさん2014/10/05(日) 16:57:19.28ID:x75CBE+a
私が扱える範囲では無理なのですね
newをしたらdeleteを忘れないよう心がけます
ありがとうございました
0997デフォルトの名無しさん2014/10/05(日) 17:01:55.58ID:kq2CsrMi
>>996
やめてください
newしたらセミコロンに達するまでにスマポに挿れてください
deleteはしないでください
0998デフォルトの名無しさん2014/10/05(日) 17:06:54.96ID:BWhErrhC
いやいやnewをオーバーロードしてGCにぶち込むのが今時の正解だよ
0999デフォルトの名無しさん2014/10/05(日) 17:07:27.83ID:TPVUn8gD
埋め
1000デフォルトの名無しさん2014/10/05(日) 17:08:09.41ID:a6/ySe32
malloc はスマポに挿れられますか?
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。