[過去ログ] C/C++ゲーム製作総合スレッド Part1 (1001レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
1(4): 名前は開発中のものです。 [sage] 2012/05/20(日) 21:22:08.41 ID:iNm25OoA(1) AAS
ゲーム製作におけるC/C++全般に関するスレです。
元スレ
DXライブラリ 総合スレッド その12
2chスレ:gamedev
902: 名前は開発中のものです。 [sage] 2012/10/11(木) 16:48:18.02 ID:6KTw2vbl(1) AAS
移動を考慮するってことだろうな。
903: 名前は開発中のものです。 [sage] 2012/10/11(木) 19:22:06.59 ID:zQk05huP(1) AAS
function checkcirclclsの説明ならできるけども。
最初のifはv・cの内積がマイナスか? つまりcosがマイナス、90<θ<270
始点から終点へのベクトルが円の方向とは逆向き 始点が円の中にあるかを判定してる
2つ目のif n2はvの二乗 n1=v・c=V*C*cosθ が、v・v=V^2よりもでかいってことは
cosθ>V/C ここで0<cosθ<1だから(上のifより)
V/C<1つまりV<C 2つのベクトルは同じ方向だけど、始点から終点への距離のほうが短い
よって終点が円の中にあるか確認
3つ目のifは終点が、始点と円の中心より遠くにある場合で
円の中心から線分に下ろした垂線の長さと円の半径比べてるって感じだと思う たぶん・・・
違ってたら申し訳ない。
小文字がベクトルで大文字が絶対値ね。
高校数学の類推で書いたけど、ゲーム数学でのtipっぽいサイト・本は知らないなあ。
904: 名前は開発中のものです。 [] 2012/10/12(金) 01:34:50.66 ID:DAtskPpl(1) AAS
ググったら普通に本もサイトもあるし
905: 名前は開発中のものです。 [] 2012/10/12(金) 20:59:11.47 ID:e5RAe9Bd(1) AAS
http://p11.chip.jp/okanonaoko
906(1): 名前は開発中のものです。 [sage] 2012/10/14(日) 16:35:43.94 ID:l6oxbFUg(1) AAS
他スレの話しなんだが、なんか説得するのが面倒になったので
こっちに吐き出させてくれ…
処理系依存と未定義動作は完全に別物。
前者は、言語仕様で動作が規定されない代わりに
処理系(コンパイラ、リンカとかと、実行時のOSとか)側で
動作が規定されている。
どこかしらに「こういう動きになるよ」と書いてある事が大半(VCならMSDNにあるはず)
対して後者は、言語仕様側でも処理系側でも動作は規定されない。
誰も動作を保証しない。トラブルが有った時のクレーム先はどこにもない。
「今までこういう動きだったし」とかいう何の根拠にもならない理由は通用しない。
なぜなら、「今後もその動きをする」と保証してくれる所はどこにも無いから。
ゲ製では設計に迷っている人に対して「動きゃいいんだよ!!」と言う事がままあるが
こっちに関しては「今動いている事が奇跡」と考えるべきで、全然別物。
…と、この辺りまで考えて「何やってるんだろう俺」と感じて、書き込むのをやめた。
スレ汚しごめんよ、誰かに見てもらいたかっただけなんだ。
スレ汚しついでに、上の文で認識が間違ってるところがあったら教えてほしい。
907: 名前は開発中のものです。 [sage] 2012/10/14(日) 16:57:13.70 ID:bShDUbm6(1) AAS
あー、あのスレかw
あっこはstd::mapだから重い的な書き込みとか
自身の思い込みをそのまま書いて
それが真実であるようにして自分は間違ってない!って感じになることがあるなw
908: 名前は開発中のものです。 [sage] 2012/10/14(日) 16:58:15.31 ID:kWeeP/mI(1) AAS
そもそもどんなことにも保証など存在しない。
909: 名前は開発中のものです。 [sage] 2012/10/14(日) 17:03:43.83 ID:Zc+A2Cv+(1) AAS
他のスレで揉めたことを他に持ち込むな。
910: 名前は開発中のものです。 [sage] 2012/10/14(日) 17:09:56.24 ID:lnOWihll(1) AAS
2chで誰かを言い負かしても何の得にもならんのに何やってんだお前ら
ゲーム作れゲーム
911: 名前は開発中のものです。 [sage] 2012/10/14(日) 17:35:43.94 ID:o2nl6icf(1) AAS
嘘知識で汚染されて(現場に)派遣されてくることがあるから
2chなんかと笑ってられなかったり
現場から極端に近い人と極端に遠い人ほどムキになる
912: 名前は開発中のものです。 [sage] 2012/10/14(日) 18:20:58.32 ID:IqvNp+Kh(1/3) AAS
>>906
あちらでもチラッと言ったけど、似たような概念は他に「不定」があるな
913(1): 名前は開発中のものです。 [sage] 2012/10/14(日) 20:07:42.62 ID:qN9GuzC+(1) AAS
つーか「処理系定義」のことか?
914: Perl忍者 ◆M5ZWRnXOj6 [sage] 2012/10/14(日) 20:29:56.71 ID:sRKUA4E1(1/2) AAS
お前らウイルスとか荒らしスクリプト作れないだろ?
雑魚そうだもんな
915: 名前は開発中のものです。 [sage] 2012/10/14(日) 20:30:49.91 ID:HptHh87R(1) AAS
くっせーコテだなぁ
規制依頼すんぞ?
916: 名前は開発中のものです。 [sage] 2012/10/14(日) 20:45:44.68 ID:IqvNp+Kh(2/3) AAS
>>913
そういえばそうね。
文章的に正しいのは、処理系定義の挙動を前提としたプログラムは処理系依存、ってところか。
917: 名前は開発中のものです。 [sage] 2012/10/14(日) 21:26:37.24 ID:aM02E44v(1) AAS
ここ見てる人たちは仕事でゲーム作ってる人たち?
918: 名前は開発中のものです。 [sage] 2012/10/14(日) 21:35:38.76 ID:IqvNp+Kh(3/3) AAS
本職のゲームプログラマも、
仕事でゲーム作ってるけどPGじゃない人も、
プログラマだけどゲーム作りは単なる趣味だって人もいるよ。
919: Perl忍者 ◆M5ZWRnXOj6 [sage] 2012/10/14(日) 22:50:40.55 ID:sRKUA4E1(2/2) AAS
日本の低脳ゲームプログラマはカードゲーム、ボードゲームばっかりだなあおいおい!!
一人でMMORPGとか変わった対戦ゲームとかつくれねーのか!ヘイヘイヘイ!
本当にしょーもねーなシュシュ
全くグズばっかりだぜ
920: 名前は開発中のものです。 [] 2012/10/15(月) 00:15:23.38 ID:zkA4YGgF(1) AAS
あぼーんw
921(1): 名前は開発中のものです。 [sage] 2012/10/15(月) 12:35:20.53 ID:0j03j1xC(1) AAS
他のスレの話なら他のスレでやればいいのに
味方作って慰めてもらおうとしてるだけにしか見えないから
922: 名前は開発中のものです。 [sage] 2012/10/15(月) 13:28:26.77 ID:MkQLZqZt(1) AAS
>>921
他のスレで荒れてたのを持ってきたというより、
C言語の仕様に関する話題になったので、こっちに持ってきたというのが正しいんじゃないかな
923(1): 名前は開発中のものです。 [sage] 2012/10/16(火) 22:35:57.67 ID:aSCmSzAL(1/2) AAS
http://marupeke296.com/DXCLS_AutomationOfSaveLoad.html
このサイトでデータのセーブとロードについて解説されているのですが、
これにvectorなどの可変長配列を利用することは可能でしょうか?(例えばゲーム内で手に入れたアイテムデータリストのセーブなど)
可変長配列のサイズを取得してセーブデータ自体のサイズ自体も可変長にすればできたり・・?
924: 名前は開発中のものです。 [sage] 2012/10/16(火) 22:54:11.21 ID:F/EzBMte(1/2) AAS
やる方法はあるみたいだけど、しないほうが無難じゃないかなあ
925(1): 名前は開発中のものです。 [sage] 2012/10/16(火) 23:11:40.34 ID:jr04aFOT(1) AAS
ロックマンみたいな横アクション作ってる人に聞きたいんだけど、カメラってどういう風に動かしてる?
縦にもスムーズに追跡したいんだけどキャラ中心にするとジャンプしただけでカメラが上下…
かといってジャンプ時に縦に動かないようにすると下に落下してもカメラが追跡しない
926: 名前は開発中のものです。 [sage] 2012/10/16(火) 23:15:45.55 ID:F/EzBMte(2/2) AAS
画面中央を基準として遊びの領域を設定しておき、キャラがそこから出たら追従
927: 名前は開発中のものです。 [sage] 2012/10/16(火) 23:23:33.78 ID:3tkTJIke(1) AAS
落下して端に到達したら暗転して次のマップ
928(1): 名前は開発中のものです。 [sage] 2012/10/16(火) 23:31:40.52 ID:Xisk+kv3(1) AAS
カメラなんて概念捨ててフレームバッファだけで考えた方が簡単だと思うよ
929: 名前は開発中のものです。 [sage] 2012/10/16(火) 23:47:14.62 ID:aSCmSzAL(2/2) AAS
でも今の横スクロールアクションって進行方向にカメラが予め設置されてるよね
930: 名前は開発中のものです。 [sage] 2012/10/17(水) 02:18:31.53 ID:yEvPWQ+n(1/2) AAS
レースゲームとかソニックのカメラってどうなってるの?
入力方向じゃないし、慣性方向でもなさそうだし、
かといって別にゴールの方向に常にカメラが向いてるわけでもないし
931: 名前は開発中のものです。 [sage] 2012/10/17(水) 02:34:39.42 ID:4eV5S9Vt(1) AAS
真似することを考えずにまずは自分なりの方法でやってみろ
932(1): 名前は開発中のものです。 [sage] 2012/10/17(水) 03:05:58.87 ID:zWpchkd8(1/2) AAS
>>928
ええと、どういうこと?
933(1): 名前は開発中のものです。 [sage] 2012/10/17(水) 08:13:27.75 ID:rnolp/E3(1) AAS
>>932
全部cpuのピクセル処理で頑張ってるんじゃね
934(2): 名前は開発中のものです。 [sage] 2012/10/17(水) 13:01:49.16 ID:yEvPWQ+n(2/2) AAS
昔はマリオとかのゲームってキー入力のチェックと現在の位置から、場面場面で全部のパターン予め決めておいて分岐させてるだけかと思ってた。
つまり1フレーム目で上下左右のどのキーが押されたかチェックして4パターン作っといて、さらにそこから分岐して次の2フレーム目は16パターン3フレーム目は64パターン
935: 名前は開発中のものです。 [sage] 2012/10/17(水) 14:08:13.50 ID:WIAhzCZQ(1) AAS
>>934
1面だけで天文学的数字になるなw
936: 名前は開発中のものです。 [sage] 2012/10/17(水) 14:11:30.40 ID:zWpchkd8(2/2) AAS
>>933
どういうことだろう?と考えてみたが、みんな想定してる「カメラ」の定義がバラバラなのかもしれないと思った。
たぶん928が言ってる「カメラ」は3Dにおけるカメラなのかな。
>>934
想像したくねぇw
937: 名前は開発中のものです。 [sage] 2012/10/17(水) 20:40:55.96 ID:mciJv64M(1) AAS
まあ、子供の頃は無茶な事を平気で考えるからな
俺の場合は、図形の組み合わせでプログラムが作れると本気で思ってた。
まあ最近、仕事でそれが出来るようなツールを知ったわけだが……UMLモデリングツールなんだけどな
オブジェクト指向言語なら組み合わせて使えるから、欲しいんだけどな……ち〜と手が届かない
938: 名前は開発中のものです。 [sage] 2012/10/17(水) 20:44:02.80 ID:8GMmWMMd(1) AAS
俺はバイファムに出てきた戦闘シミュレータみたいなのは
俺が生きてる間には実現しないだろうなと思ってたよ……。
939: 名前は開発中のものです。 [sage] 2012/10/18(木) 05:50:40.05 ID:H0txiXiD(1) AAS
まさか家庭用ゲーム機がアーケードゲームの性能を超えるなんて
夢にも思わなかった。
940: 名前は開発中のものです。 [sage] 2012/10/18(木) 08:09:54.05 ID:4FpajfD4(1) AAS
お前は何を言っているんだ
941: 名前は開発中のものです。 [] 2012/10/19(金) 21:15:01.53 ID:ySWLrrZA(1) AAS
>>923 で紹介されてる
http://marupeke296.com/DXCLS_AutomationOfSaveLoad.html
ですが、ここで使われているDATA_LOCALマクロは、offsetofマクロと同じく
非POD型に対しては未定義のように思えます。
これをCSaveObjBase(仮想関数を持ってるので当然非POD型)や、その派生クラス
(非POD型の派生は当然非POD型)に対して用いるのは、やっぱりいけてないと思われるのですが
どうなんでしょうか
942: 名前は開発中のものです。 [sage] 2012/10/19(金) 22:49:35.05 ID:M4c+0Lno(1) AAS
セーブするのはどうせプリミティブな型だけだからいいんでないの?
943(1): 名前は開発中のものです。 [sage] 2012/10/20(土) 02:53:53.20 ID:V8nr5/sM(1) AAS
ちょっと調べてきた
オフセットの取得部分がoffsetofの一般的な実装と同じなんだな
offsetofに関するトピックはあったけど、いまいちわからん
多重継承するといかんのか?
http://stackoverflow.com/questions/1129894/why-cant-you-use-offsetof-on-non-pod-strucutures-in-c
オブジェクト内のメモリ配置がコンパイル時に決まるなら大して問題にならない気がするんだがどうなんだろ
944: 名前は開発中のものです。 [sage] 2012/10/20(土) 06:41:01.04 ID:s/RZO/oy(1) AAS
>>943
Cならば->は単純なポインタの足し算だからコンパイル時に決定されるけど、
C++だと->はそうではないことがあるってことかね?
典型的な offsetof の記述はこうなので
#define offsetof(type, mem) ((size_t) \
((char *)&((type *)0)->mem - (char *)(type *)0))
VCで仮想継承 を持つときには、アロー演算子が仮想関数テーブルを見にいくけど、
この時 Windowsのユーザモードの場合は(ほとんどの場合)読み込み禁止ページを見にいって、
Access violationを発生させる。保護機構が無い環境だと、アドレス 0に仮想関数テーブル分
のオフセットを足したアドレスを仮想関数テーブルだとおもって、多分でたらめな値を返す。
945: 名前は開発中のものです。 [sage] 2012/10/20(土) 10:04:42.33 ID:W2X4ug0e(1) AAS
>(このアイデアはGame Programing Gems 3に記載されています。すばらしいですよね(^-^))
出展が書かれてるから本屋が近くにあるなら
載ってる部分立ち読みしてきたらどうだろう。
てかおれもGems3みかけたら読んでみよっと
946(2): 名前は開発中のものです。 [sage] 2012/10/20(土) 14:58:04.14 ID:kepwCMlF(1) AAS
C++は酷い言語だ。標準以下のプログラマの多くが使い、
はっきり言えば完全完璧な戯言を作ることが非常に簡単だという事実によって、
ますます酷くなっている。率直に言えば、たとえCの選択がただC++プログラマを立入らさせないためであるとしても、
それはそれでCを使う大いなる理由となろう。
http://slashdot.jp/journal/501622/C%2B%2B%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6Linus-Torvalds%E3%81%B8%E3%81%AE%E5%8F%8D%E8%AB%96
947: 名前は開発中のものです。 [sage] 2012/10/20(土) 16:45:25.36 ID:qfzdsTSz(1) AAS
>>946
日本語でおk
948: 名前は開発中のものです。 [sage] 2012/10/20(土) 19:32:10.35 ID:CKi8uHGH(1) AAS
2010年3月のネタを全く臆することなくドヤ顔で貼れる>>946さんチョーカッコイイ
949: 名前は開発中のものです。 [sage] 2012/10/20(土) 20:08:16.01 ID:sAj3jZd1(1) AAS
真のC++プログラマはdeleteを書かない
950(1): 名前は開発中のものです。 [sage] 2012/10/20(土) 22:06:28.72 ID:cYGMs3W8(1) AAS
パフォーマンスのため、未だにメンバ変数にアクセスするときは、いちいちローカル変数に置き換えていたり、
明らかに多態させた方がいいのに、仮想化を避けたり・・・
確かに俺の場合、ゲームで使うときはなんかC++の爽快感がないなぁ
後者は今時のコンパイラなら上手いこと最適化してくれるんだっけ?
951: 名前は開発中のものです。 [sage] 2012/10/21(日) 05:42:47.55 ID:8o2Qx0nE(1/2) AAS
最適化もだが、そもそも今時のマシンはそのくらい気にする必要がないくらい速いだろ
952: 名前は開発中のものです。 [sage] 2012/10/21(日) 11:05:03.38 ID:2HisPjSj(1/2) AAS
マシン性能におんぶにだっこで、できる改善をやらないのは、プログラマの行動じゃないと思う。
953: 名前は開発中のものです。 [sage] 2012/10/21(日) 11:12:14.23 ID:VgVyyYQT(1) AAS
じゃあ全部ハードウェアで実装しろ
954: 名前は開発中のものです。 [sage] 2012/10/21(日) 11:26:14.12 ID:utAVkLK4(1) AAS
改善というのは、できうる限りマシン性能におんぶにだっこさせることなんだが、
それがプログラマの行動じゃ無いというのは、いったいどれだけ愚か者なんだろう?
955: 名前は開発中のものです。 [sage] 2012/10/21(日) 11:29:52.39 ID:uEOq6DXM(1/2) AAS
ハードに頼れない馬鹿なプログラマはクビだ
956(2): 名前は開発中のものです。 [sage] 2012/10/21(日) 11:40:08.93 ID:fWFEJkHx(1/3) AAS
こいつらってハッカソンとか勉強会に参加してない低能なんだろ?
957: 名前は開発中のものです。 [sage] 2012/10/21(日) 12:06:12.30 ID:un2TMSqt(1/2) AAS
できる改善というやつも
結局コーディングの手間と実行速度やリソース消費とのバランスだよな。
一概に言えるもんじゃない。
958: 名前は開発中のものです。 [sage] 2012/10/21(日) 12:15:36.14 ID:/1IdSLkb(1) AAS
あーよくいるよね、知識だけ溜めこんで実装できない奴
959(1): 名前は開発中のものです。 [sage] 2012/10/21(日) 12:15:54.46 ID:uEOq6DXM(2/2) AAS
わかる
俺も中二の頃はハッカソンとか勉強会に参加するだけでカッコいいと思ってたよ
960: 名前は開発中のものです。 [sage] 2012/10/21(日) 12:29:22.29 ID:PTum4Ngu(1) AAS
C++を知らないゲームプログラマ達
http://d.hatena.ne.jp/alwei/20111008/1318090538
961: 名前は開発中のものです。 [sage] 2012/10/21(日) 13:13:31.85 ID:smvmEgiA(1) AAS
だれこいつ
962: 名前は開発中のものです。 [sage] 2012/10/21(日) 14:29:14.20 ID:2HisPjSj(2/2) AAS
例えば「この処理はハードがやってくれるからそっちに投げよう」というのはアリだろう。
けど「最近のPC処理能力ならできるだろうからやる必要はない」は相手の状況次第だろう。
相手が対象としてるPCが「最近の」だとは限らないし、作るゲームの規模も不明。
少なくともプログラム技術について語るスレで言うようなことじゃない。
963: 名前は開発中のものです。 [sage] 2012/10/21(日) 15:22:10.49 ID:8o2Qx0nE(2/2) AAS
950からの流れでプログラム技術とか言っちゃう人って……
964: 名前は開発中のものです。 [sage] 2012/10/21(日) 15:36:19.33 ID:VBPhaVkU(1) AAS
手を抜くための理由以上のモノではないしな
965: 名前は開発中のものです。 [sage] 2012/10/21(日) 18:48:08.69 ID:fR9B1EWl(1) AAS
>>925が救われたのかが気になる
スレチだろうけどな
966(1): 名前は開発中のものです。 [sage] 2012/10/21(日) 19:16:33.45 ID:9rCgavl9(1/3) AAS
>>950は素直にC使った方がいいんじゃないだろうか
そんなところに拘っても可読性落ちるだけで
プレイヤーには誤差にも感じない程度の差しかでないでしょ
967: 956 [sage] 2012/10/21(日) 21:43:51.38 ID:fWFEJkHx(2/3) AAS
>>959
かっこいいって何?
ハッカソンとかGame Jamにも足運んでるし
CEDECとかにも毎年参加してるし
いろいろな勉強会開いたりしてるよ?
バンナム社員の人と会話とかしてTwitterでも話してるし
ちなみに愛機はMBP(MacBook Pro)使ってるかな
UDKで作ったゲームは東方風のシューティング
あとはUnityとかもやってるしね
あとこう見えてゲームは全くやらないかな(笑)
「ゲーム好き、ゲームヲタク」っていうのはゲーム開発に不要って言われてるからね
普段全くゲームをしない、所詮人が作ったゲーム、自分で作ってやるほうがおもしろいかな
好きなゲームは地球防衛軍、ストリートファイター4
ネトゲは韓国の利益になるからやらないかな
968(2): 956 [sage] 2012/10/21(日) 21:52:32.03 ID:fWFEJkHx(3/3) AAS
一応できる言語書くね
C,C#,C++,Javascrip(Node.js),Coffeescript,Haskell,Eralng,Go,Scala,Python,Objective-C,OCaml,Scheme,LISP
とか使えるね
あとUnityの本とか全部そろえてるし
今はアンドロイドアプリ作ってるかな
じゃんけんゲームみたいなやつ
969: 名前は開発中のものです。 [] 2012/10/21(日) 21:58:35.68 ID:70260In1(1) AAS
ここってプロフェッショナルレベルの人たちが集っていたのか
970: 名前は開発中のものです。 [sage] 2012/10/21(日) 22:02:03.60 ID:EmtRs25+(1) AAS
>>968
「使える」のレベルが低いことが用意に窺い知れる書き込みだな
971: 名前は開発中のものです。 [sage] 2012/10/21(日) 22:07:31.63 ID:9rCgavl9(2/3) AAS
>>968
はじめて見るのがいくつかあるな
俺もgimpのスクリプト書くのにschemeちょっとやったけど
lisp系の言語ってどういう場面で必要になんの?
やっぱりスクリプト?
972: 名前は開発中のものです。 [sage] 2012/10/21(日) 22:22:53.59 ID:koRq+7Oz(1) AAS
lispはemacsの設定で使う場面しか思いつかないな
973(1): 名前は開発中のものです。 [sage] 2012/10/21(日) 22:42:29.46 ID:63szXM1n(1) AAS
>>966
可読性が落ちるのは間違いないが、効果は誤差どころじゃないな・・・。
俺が950で挙げた前者は、みんなもやってるよね。
今時のコンパイラなら後者もOKなら、そろそろ観念してVS2012Pro買うかなぁと思ってさ。
974: 名前は開発中のものです。 [sage] 2012/10/21(日) 23:43:39.06 ID:un2TMSqt(2/2) AAS
プログラミングのスキルは手段であって目的じゃないからな。
自分の作りたいゲームが作れなければ全ては無意味だ。
975(1): 名前は開発中のものです。 [sage] 2012/10/21(日) 23:51:38.77 ID:9rCgavl9(3/3) AAS
>>973
すいません、やってないっす…
関数細かく作るから同じメンバに何度もアクセスする箇所があんまりない
ループする箇所はSTLにまとめてイテレーターでやっちゃってるな…
もしかして、俺のコード超遅い?
976: 名前は開発中のものです。 [sage] 2012/10/22(月) 00:56:42.06 ID:z1W7+ZfO(1) AAS
>>975
いやフレーム毎に収まれば正義ですし、可読性重視でいんでないですかね。
考えてみればExpressならすぐ使えたなと言うわけで、VS2012で試してみました。
うちの環境だと、基底から仮想関数で呼び出した場合に比べ、直で呼び出した場合は、
大体23%くらいの速度で行けるみたい。
最適化オプション色々変えてもあまり変わらず。
最新のコンパイラでも、やっぱり遅いみたいね・・・。
どうでもいいけど2012のUIかっこいいな。メトロというよりレトロだけど。
977: 名前は開発中のものです。 [sage] 2012/10/22(月) 02:16:07.30 ID:bfhvnErC(1/5) AAS
クラスインスタンスのdelete時に、Pure virtual function callのエラーが出て悩まされた。
純粋仮想関数持ってる親クラスのデストラクタに入ってから、その仮想関数を呼んでいることが原因だった。
978(2): 名前は開発中のものです。 [sage] 2012/10/22(月) 02:24:37.14 ID:GibO9cqH(1/4) AAS
deleteなんて自分で書くものじゃないし
デストラクタもなるべく書かないほうが良い
979: 名前は開発中のものです。 [sage] 2012/10/22(月) 02:27:36.24 ID:F1nyTPCI(1) AAS
2012ってXPには未対応なんね
980: 名前は開発中のものです。 [sage] 2012/10/22(月) 04:33:45.61 ID:bfhvnErC(2/5) AAS
>>978
そうなのか?
俺はdeleteもデストラクタも使い放題だぜ。
981: 名前は開発中のものです。 [sage] 2012/10/22(月) 06:01:48.56 ID:87TUN/xt(1) AAS
>>978
気になる。理由は?
982(1): 名前は開発中のものです。 [sage] 2012/10/22(月) 08:33:50.88 ID:19qPn/dP(1) AAS
boostの参照カウンタ使えばdelete書かなくてもなんとかなる…かも?
983: 名前は開発中のものです。 [sage] 2012/10/22(月) 09:11:31.91 ID:wKQ4qRL6(1) AAS
>>982
移植の際にコンパイルエラー出たときの対応コストがboostは大きくつく。
ジャンルによってはカウンタ同期のコストが馬鹿にできないこともあるだろうし。
minmalなオレオレsmartptrを作っておくのが一番苦労しない気がする。
984(1): 名前は開発中のものです。 [sage] 2012/10/22(月) 15:22:28.62 ID:buj+NpWL(1) AAS
#include <iostream>
#include <vector>
#include <string>
int main(){
std::vector<std::string> Strings;
std::vector<int> Vector;
Strings.push_back("1-2-3-4-5");
Strings.push_back("9-7-8");
Strings.push_back("6");
for(unsigned int i = 0; i<Strings.size(); i++){
//VectorにStringsの文字列を正規表現等で格納したい
}
return 0;
}
Stringsに格納した文字列を正規表現で数字だけ取り出してVectorに格納したいのですが
正規表現はどうかけばいいのでしょうか?
Vectorを[1,2,3,4,5,9,7,8,6]といった具合です。
よろしくお願いします。
985: 名前は開発中のものです。 [sage] 2012/10/22(月) 18:04:08.05 ID:bfhvnErC(3/5) AAS
誰が調べてあげてたもれ
986: 名前は開発中のものです。 [sage] 2012/10/22(月) 18:38:31.04 ID:yaXLi6zV(1/2) AAS
試してないけどboost::regex_grepに\\d+を突っ込むんじゃダメかな
987: 名前は開発中のものです。 [sage] 2012/10/22(月) 19:30:48.30 ID:GibO9cqH(2/4) AAS
deleteを自分で書くな
std::unique_ptrを使え
ノーコストのスマートポインタだ
スコープから抜けるときに自動的にdeleterを実行してくれる
std::unique_ptrが使えない場面では仕方ないのでstd::shared_ptrを使え
多態が必要なときはstd::shared_ptrじゃないとダメだった気がする
デストラクタを書くのはスマートポインタで自動的に解放できないリソースを扱うクラスのときだけだ
例えば、OpenGLのテクスチャオブジェクトとかな
だがFILEオブジェクトなんかはdeleterにfcloseを指定すればスマートポインタで自動解放可能だ
メンバ変数の解放はメンバ変数のデストラクタに任せて自分で解放しようとするな
抱合した子オブジェクトは親が死んだときに勝手に死ぬし
newしたオブジェクトはスマートポインタに入れとけば勝手に死ぬ
自分でdeleteする必要がある場面なんてまずないだろう
988: 名前は開発中のものです。 [sage] 2012/10/22(月) 20:05:28.33 ID:YuwwqXlf(1) AAS
>>984
strtokでググれ
989: 名前は開発中のものです。 [sage] 2012/10/22(月) 20:11:20.29 ID:bfhvnErC(4/5) AAS
でもさ、
あるクラスをアプリ実行期間中、存続させつつづけて、
ゲーム・ステージの切り替わりのタイミングで、
それが持つ配列型メンバをリサイズする場合なんかには
deleteを使わざるを得ないんじゃないか?
こういうケースは頻繁にあるんだが。
全ステージ配列のサイズは固定とか縛り持たせるわけでもあるまい。
990: 名前は開発中のものです。 [sage] 2012/10/22(月) 20:20:24.89 ID:GibO9cqH(3/4) AAS
スマートポインタのvectorを使いなさい
あと、いまどき生配列はないな
固定長配列ならstd::array、可変長ならstd::vectorを使いなさい
Visual C++でデバッグモードでコンパイルすれば、範囲外アクセスしたときに例外投げてくれるはずだ
991(1): 名前は開発中のものです。 [sage] 2012/10/22(月) 20:56:00.85 ID:bfhvnErC(5/5) AAS
相互に関連していて、deleteでトリガーされるデストラクタの実行順を気にしなきゃいけない時もあるよ。
またブラックボックスな配列ってのは、リサイズ後のメモリアクセス効率性への影響が不安じゃない。
992(1): 名前は開発中のものです。 [sage] 2012/10/22(月) 21:12:58.91 ID:yaXLi6zV(2/2) AAS
それなりに寿命が短くて、確実に管理できるなら
new/deleteの方が楽よね
993(1): 名前は開発中のものです。 [sage] 2012/10/22(月) 21:21:39.03 ID:oFyoxOqU(1) AAS
>>991 例えばこういう循環参照を持つやつだよね。
struct B;
struct A{ B* b;};
struct B{ A* a;};
こういうときは、生存期間の管理用に一つ使い捨てのクラスを用意して、
struct C{
A a; B b;
C():a(),b(){ a.b = &b; b.a = &a; }; // 循環してるポインタをセット
~C(){} // デストラクタで a と b が 同時に破棄されるようにする。
}; // struct C自体はスタックか std::unique_ptr<C> にまかす。
デストラクタが走るときはコンストラクタと逆の順番だから、循環参照してて
デストラクタの実行順番を気にしないといけないような状態の場合はそれ自体を
struct Cのデストラクタに封じ込めるのはどうだろう。
994: 名前は開発中のものです。 [sage] 2012/10/22(月) 23:30:02.44 ID:GibO9cqH(4/4) AAS
オブジェクトへの参照を保持していることとオブジェクトを所有していることは別だと思うんだ
例えば木構造でなるべくメモリを局所化したい場合だとこういう感じになると思う
class Node { Node* firstChild; Node* sibling; Node* parent; };
std::vector<Node> vNode;
この場合、Nodeは他のNodeへの参照を持ってるけど、所有しているわけじゃない
所有しているのはvNodeを持つオブジェクトだ
あれこれって>993と同じことじゃね
995: 名前は開発中のものです。 [sage] 2012/10/23(火) 00:04:00.65 ID:jziPb4Rf(1) AAS
weak_ptrを使うのだてめえら
996: 名前は開発中のものです。 [sage] 2012/10/23(火) 01:15:06.83 ID:lf4QviES(1/2) AAS
class Task {
Task* m_pNext;
Task* m_pPrev;
bool m_Head; //デク先頭フラッグ
bool m_ToBeDeleted; //削除フラッグ
virtual void Exec()=0; //
};
class Filament : public Task { //m_EntryPointにTaskクラスをつなげる。
Task m_EntryPoint; //デク先頭
~Filament() { //親delete時に、連鎖的にdeleteする子の削除フラッグを立てる。
Task* child = m_EntryPoint.m_pNext;
while (!child->m_Head) {
child->m_ToBeDeleted=true;
child = child->m_pNext;
}
};
};
class Fiber : public Filament {...}; //m_EntryPointにFilamentクラスをつなげる。
class Synthesis { Fiber* fibers_active[4]; }; //1次元配列。参照のみ。
class Repository { //シーンの切り替わりで動的に生成・破棄し、インスタンスを必要分だけ保持する。
Task* tasks[1024]; //1次元配列。インスタンスを注入。
Filament* filaments[256]; //1次元配列。インスタンスを注入。
Fiber* fibers[64]; //1次元配列。インスタンスを注入。
};
997: 名前は開発中のものです。 [sage] 2012/10/23(火) 01:16:10.47 ID:lf4QviES(2/2) AAS
↑極端な例だが、
Repositoryクラス内で、シーン中、必要なインスタンスしか確保しないという条件の場合、
まずSynthesisクラス内の要らないfibers_active要素だけ削除フラッグを立てて、
次にRepositoryクラス内のフラッグが立ったfibers要素をdeleteして、
次にRepositoryクラス内のフラッグが立ったfilaments要素をdeleteして、
最後にRepositoryクラス内のフラッグが立ったtasks要素をdeleteする、
っていうのが効率的なんじゃないか?
要は、麗しのタスクシステムなんだが(笑)
998: 名前は開発中のものです。 [sage] 2012/10/23(火) 02:02:33.12 ID:7yJptL6x(1) AAS
>>992
「確実に管理しなければならない」ポイントを減らすためにライブラリ使うんでしょ
999: 名前は開発中のものです。 [sage] 2012/10/23(火) 10:35:59.82 ID:8kXxMAJY(1) AAS
お疲れ
1000: 名前は開発中のものです。 [age] 2012/10/23(火) 10:41:49.45 ID:5T7QFGuf(1) AAS
そしてさようなら(#゚Д゚)/~~
1001: 1001 [] Over 1000 Thread AAS
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.028s