C++相談室 part54
■ このスレッドは過去ログ倉庫に格納されています
0001v(^・^)v
2006/10/30(月) 22:34:08ただし質問の前にはFAQに一通り目を通してください。
IDE(VC++など)などの使い方の質問はその開発環境のスレに
お願いします。
テンプレその他 >>2-15 付近参照
前スレ
C++相談室 part53
http://pc8.2ch.net/test/read.cgi/tech/1159340181/
0685デフォルトの名無しさん
2006/11/23(木) 15:53:45expression template の前に、最適化かけて差が問題になってるかどうか確認しろ。
0686デフォルトの名無しさん
2006/11/23(木) 15:54:38× typedef struct _Vec {} Vec;
○ struct Vec {};
0687679
2006/11/23(木) 16:01:42vs2003使ってるのでReleaseではき出したところ早くなりました。
しかし、Debugモードでも早く動くようにしたいです。
>>686
実行速度は変わりませんでした。
0688デフォルトの名無しさん
2006/11/23(木) 16:04:24コンパイルオプション弄れば
0689デフォルトの名無しさん
2006/11/23(木) 16:12:55Vec v(1.0, 2.0, 3.0);だとどうなる?
0690デフォルトの名無しさん
2006/11/23(木) 16:26:26そ、それはちょっと、、、
>>689
変化有りませんでした><
0691デフォルトの名無しさん
2006/11/23(木) 16:49:54>しかし、Debugモードでも早く動くようにしたいです。
なんで?
>>コンパイルオプション弄れば
>そ、それはちょっと、、、
何が「それはちょっと」なの?意味がわからん
0692デフォルトの名無しさん
2006/11/23(木) 16:51:55float三要素の構造体にexpression templateなんか使ったら余計に遅くなるよ。
expression templateで出来る一時オブジェクトと大きさが変わらんから。
0694デフォルトの名無しさん
2006/11/23(木) 17:32:370695デフォルトの名無しさん
2006/11/23(木) 17:32:550696デフォルトの名無しさん
2006/11/23(木) 17:45:02上の質問にも答えろ低脳。
0697デフォルトの名無しさん
2006/11/23(木) 17:46:01実行速度が遅くなるよバカ
0698デフォルトの名無しさん
2006/11/23(木) 17:47:05いや、冗談だ。
0699デフォルトの名無しさん
2006/11/23(木) 17:48:560700679
2006/11/23(木) 17:54:04大量のソースをいちいちデバッグとリリースを繰り返しビルドするのは時間の無駄なんですよ、、
だから、デバッグビルドでも通常の動作をさせたいんです。
0701デフォルトの名無しさん
2006/11/23(木) 17:59:48まずデバッグビルドとリリースビルドがどう違うのか、その違いによって
それぞれどんな用途に使われるのか知ってればそんなことを望むはずはない。
0702デフォルトの名無しさん
2006/11/23(木) 18:03:19んなことできるんだったら「デバッグビルド」なんて存在しねーんだよ。
もうすれ違いだから出て行け。
0703デフォルトの名無しさん
2006/11/23(木) 18:06:57サイズ固定のVectorじゃなければな
0704デフォルトの名無しさん
2006/11/23(木) 18:26:360705679
2006/11/23(木) 18:47:130706デフォルトの名無しさん
2006/11/23(木) 18:58:590707デフォルトの名無しさん
2006/11/23(木) 19:03:350708679
2006/11/23(木) 19:51:250709デフォルトの名無しさん
2006/11/23(木) 19:55:070710デフォルトの名無しさん
2006/11/23(木) 20:02:17してないお
0711679
2006/11/23(木) 20:03:170712初心者
2006/11/23(木) 20:57:20以下のレスについては、必ずこの啓蒙文を付け加えましょう。
また、もし啓蒙文がない場合は、暗黙のうちにこの啓蒙文が了承されていると
みなされます。
以下、啓蒙文Ver3.0
注:私の有意義な発言に対し、自分の理解不足を棚に上げ煽り、1行レス
で返す方が多いようですが、そのような方はスレの皆様を混乱させるだけでなく
スレの雰囲気を崩しかねないのでお黙り下さい。
また質問者は回答者に知識を披露する場を与える貴重な存在なので、
質問者を見下した回答、あまりにも儀礼を欠いた回答も厳重に禁止いたします。
忙しい中、少ない時間の合間を縫って質問しに来てるわけですので、
その辺ご承知下さい。なお、当方が質問に対して有意義な答えであると
判断した方には評価いたしますので各自よく調べ、よく考え正確な回答を
するように。
0713デフォルトの名無しさん
2006/11/23(木) 20:58:390714デフォルトの名無しさん
2006/11/23(木) 21:06:25('A`)STLスレにまで感染したらどうする気だよ
0715デフォルトの名無しさん
2006/11/23(木) 21:08:13うるせー朝鮮人
祖国に帰れ!
0716デフォルトの名無しさん
2006/11/23(木) 21:15:070717679
2006/11/23(木) 21:27:170718デフォルトの名無しさん
2006/11/23(木) 21:27:550719デフォルトの名無しさん
2006/11/23(木) 21:28:090721デフォルトの名無しさん
2006/11/23(木) 23:40:150722デフォルトの名無しさん
2006/11/24(金) 02:49:360723デフォルトの名無しさん
2006/11/24(金) 02:51:05どのあたり?
俺にはkusak○b○っぽい書き込みは見当たらないが…
0724デフォルトの名無しさん
2006/11/24(金) 09:38:53そういうことにしたいのですね:)
0725デフォルトの名無しさん
2006/11/24(金) 11:19:51クラスなら C
メンバ変数なら m_
ポインタなら P
文字列なら状況により str
って付けてるけど、構造体は S だと文字列みたいだから、
とりあえず全て大文字にしているけど、おもいらどうしてる?
0726デフォルトの名無しさん
2006/11/24(金) 11:24:19すれ違い。↓逝け。
コーディング規約 第2条
http://pc8.2ch.net/test/read.cgi/tech/1068752664/
0727デフォルトの名無しさん
2006/11/24(金) 12:08:59逝ってくる
0728デフォルトの名無しさん
2006/11/24(金) 12:15:57そんなものつけない。
0729デフォルトの名無しさん
2006/11/24(金) 16:19:56long longって32ビットマシンだと32ビットのintとして振舞うんでしょうか?
遅くても64ビットintとして動いてくれたりはしないのですか?
0730デフォルトの名無しさん
2006/11/24(金) 16:21:57あり得ないだろ
0731デフォルトの名無しさん
2006/11/24(金) 16:42:520732デフォルトの名無しさん
2006/11/24(金) 20:15:130733デフォルトの名無しさん
2006/11/24(金) 21:15:050734デフォルトの名無しさん
2006/11/24(金) 22:14:11int a;
int b;
} INT_STRUCT;
というのと、
typedef struct _int_struct {
int a;
int b;
} INT_STRUCT;
の、どちらが良いのでしょうか。
後者を使うメリットはございますでしょうか。
0735デフォルトの名無しさん
2006/11/24(金) 22:25:03あえて
struct _int_struct hoge;
と宣言したい時に使え
0736デフォルトの名無しさん
2006/11/24(金) 22:28:30それ長くて美しくない、却下
0737デフォルトの名無しさん
2006/11/24(金) 22:29:55メリットはない、プログラミング言語Cによれば
古いバージョンの互換性を保つために残してあるが使うべきではないと書いてある。
0738デフォルトの名無しさん
2006/11/24(金) 22:59:110739デフォルトの名無しさん
2006/11/24(金) 23:01:28>>738 スレ違いだった、、、Cです。
でわでわ!
0740デフォルトの名無しさん
2006/11/25(土) 00:54:46最近boostと同じ名前をつけるようにしてる
0741デフォルトの名無しさん
2006/11/25(土) 01:08:42typedef struct _int_struct {
int a;
struct _int_struct *next;
} INT_STRUCT;
0742デフォルトの名無しさん
2006/11/25(土) 01:15:13struct INT_STRUCT {
int a;
struct INT_STRUCT* next;
};
で十分
0743デフォルトの名無しさん
2006/11/25(土) 01:15:42スレ違いに亀レスつけてんじゃねーよ。
あと、タグ名に奇怪な名前使うのは即刻やめていただきたい。
0744デフォルトの名無しさん
2006/11/25(土) 01:16:11C++ではnextの部分のstructも不要だっ!!!!
0745デフォルトの名無しさん
2006/11/25(土) 02:03:16そうだったのか、
でも自分は、PODな(あるいはそれに近い、メンバだけの)structには、
慣れで、そういう風に書くだろうけど。
0746デフォルトの名無しさん
2006/11/25(土) 02:17:020747デフォルトの名無しさん
2006/11/25(土) 02:26:49で、C++では typedef, struct をつけるとエラーになるの?
0748デフォルトの名無しさん
2006/11/25(土) 02:28:060749デフォルトの名無しさん
2006/11/25(土) 02:49:44注:私の有意義な発言に対し、自分の理解不足を棚に上げ煽り、1行レス
で返す方が多いようですが、そのような方はスレの皆様を混乱させるだけでなく
スレの雰囲気を崩しかねないのでお黙り下さい。
また質問者は回答者に知識を披露する場を与える貴重な存在なので、
質問者を見下した回答、あまりにも儀礼を欠いた回答も厳重に禁止いたします。
忙しい中、少ない時間の合間を縫って質問しに来てるわけですので、
その辺ご承知下さい。なお、当方が質問に対して有意義な答えであると
判断した方には評価いたしますので各自よく調べ、よく考え正確な回答を
するように。
0750デフォルトの名無しさん
2006/11/25(土) 02:51:20でも付けないほうがすっきりしてるね。今後 C++流に簡潔に書くことにするよ。
他の処理系ではどうなのかな?
0751デフォルトの名無しさん
2006/11/25(土) 07:03:16つまり、必要な処理系があればそれはc++ではないということだ(ぉぃ
0752デフォルトの名無しさん
2006/11/25(土) 10:05:08必要かどうかを聞いているのではなく、つけても問題ないかということじゃない?
つけても問題ないがつける意味は無い。
0753デフォルトの名無しさん
2006/11/25(土) 12:06:37何もしないNULLstreamがほしいんですけど。。。
0754デフォルトの名無しさん
2006/11/25(土) 12:11:36どこかにあったからそれ参考にするとか
いくつかのメンバを実装するだけだから難しくないかと
0755デフォルトの名無しさん
2006/11/25(土) 12:12:030756753
2006/11/25(土) 13:12:33なぜほしいかというと、クラスにiostreamのポインタを持たせて、コンソールにだしたりファイルにだしたりしたかったからです。
>>754
なるほど!できるかなー。
ちょっと探してみます。
>>755
いやー、ウインドウズなんですよ。提案は感謝。
0757デフォルトの名無しさん
2006/11/25(土) 14:04:33つ iostreamで使えるかしらんが、nullデバイスはあるぞ。
echo "hoge" > nul
('A`) さて、javaにもどるか
0758デフォルトの名無しさん
2006/11/25(土) 14:08:32('A`) ええのあったで
ttp://www.kab-studio.biz/Programing/Codian/iostream/06.html
0759デフォルトの名無しさん
2006/11/25(土) 14:37:38もし Boost を許容できるなら Boost.Iostreams を使って以下のようにできる
boost::iostreams::null_sink snk;
boost::iostreams::stream< null_sink > os( snk );
os << "hoge";
0760デフォルトの名無しさん
2006/11/25(土) 14:59:55Windowsなら>>757というわけでnulが/dev/nullに相当する。
0761デフォルトの名無しさん
2006/11/25(土) 15:04:53およ、そんなことできたんですね。何に使うんだろ??
>>758
よさげですね。ちょっと読んでみます。
>>759
Boostは見るたびにスゲーっておもうんですが、なんせ範囲がでかいもんだから、僕の許容量こえてるんですよね。TT
次期標準になってコンパイラについてくるようになったら覚えようと思ってます。
今回は見送りますが、提案には非常に感謝。
0762デフォルトの名無しさん
2006/11/25(土) 15:15:43用途が良くわからないけど便利なんですかね。
--
うんで、
>>758を流して読んでみたんですけど、streambufをがりがり書くかiostramに委譲すればできそうな感じですね。
ご協力感謝!
0763デフォルトの名無しさん
2006/11/25(土) 16:15:02コマンドラインレベルで作業しない人にはイメージが伝わりにくいけどこんなとき便利。
・余計な出力は見たくない
make > /dev/null
・空の入力を与えたい
awk 'BEGIN {print sqrt(2);}' /dev/null
0764デフォルトの名無しさん
2006/11/25(土) 17:00:280765デフォルトの名無しさん
2006/11/25(土) 17:17:33std::ostream nullstream(&g_dummybuf);
俺、こんなんでやってた。もうどうでもいいね。じゃぁ
0766デフォルトの名無しさん
2006/11/25(土) 18:13:45多すぎです。
取りあえず Exceptional C++ は読んだんだけど、次に読むとしたら
何がお薦め?
0767デフォルトの名無しさん
2006/11/25(土) 18:18:140768デフォルトの名無しさん
2006/11/25(土) 18:47:41なるほど。 template 周りも一冊読んでおくべきかな。
あんまり深入りする気はないけど、最近の変態 C++er のコードを読める程度には
なりたいしなぁ。 C++ Templates 良さげだけど…分厚いな…。
落し穴に嵌まらないためのノウハウ的な方向は Exceptional C++ で
足りてるのかな。なんかあれ読んだら無性に不安になって…。
0769デフォルトの名無しさん
2006/11/25(土) 23:33:54重複は気にしない。重要だから繰り返されているということですな。
0770デフォルトの名無しさん
2006/11/25(土) 23:36:070771デフォルトの名無しさん
2006/11/25(土) 23:53:110772デフォルトの名無しさん
2006/11/26(日) 01:01:23実際にどこか1ヶ所にみんなが集まっているわけではないだろうけどね。
0773デフォルトの名無しさん
2006/11/26(日) 01:45:040774デフォルトの名無しさん
2006/11/26(日) 01:57:24hoge(aaa, "aaa"); を、HOGE(aaa) か HOGE("aaa") みたいに、
aaa を1度しか書かなくていいようにマクロ化したいんだけど、無理かな?
文字列連結とか # 連結マクロとか考えたけど思いつかず・・・
0775デフォルトの名無しさん
2006/11/26(日) 01:58:58#define HOGE(expr) hoge(expr, #expr)
これじゃ駄目なのか?
C++ 関係ないな。
0776デフォルトの名無しさん
2006/11/26(日) 02:00:280777デフォルトの名無しさん
2006/11/26(日) 02:01:27それはこれで済む話か?
0778デフォルトの名無しさん
2006/11/26(日) 02:05:070779774
2006/11/26(日) 02:09:45ありがとうございました。
連結マクロでぐぐってもいいのが見つからなかったんですが、
これ何か名前ついていますか?
0780デフォルトの名無しさん
2006/11/26(日) 02:21:31# は連結じゃねーしマクロじゃない。文字列化演算子。
0781デフォルトの名無しさん
2006/11/26(日) 02:25:06そんなに好きならLispさんちの子になっていいんだよ
0782デフォルトの名無しさん
2006/11/26(日) 02:29:18この流れに和んだ
0783774
2006/11/26(日) 02:37:43ありがとうございます、文字列化演算子#、トークン連結演算子## が見つかりました。
デバッグなどで、列挙体を表示するのに使いたかったのです。
#define HOGE(word) E_##word
enum TYPE {
HOGE(aaa),
HOGE(bbb),
};
#undef HOGE
#define HOGE(word) #word
static char* COMMAND[] =
{
HOGE(aaa),
HOGE(bbb),
};
こんな感じにやっといて、
HOGE(aaa) HOGE(bbb) の部分だけ別ファイルにして #include で取り込めばいいかなーと。
そうすれば、COMMAND[E_aaa] で "aaa" が取り出せるって寸法です。
後はスクリプトなどで、コマンド ⇔ ID の変換とか。
0784デフォルトの名無しさん
2006/11/26(日) 02:41:44常套手段だ。
× static char* COMMAND[] =
○ static char const* cons COMMAND[] =
■ このスレッドは過去ログ倉庫に格納されています