[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 04/16 18:53 / Filesize : 155 KB / Number-of Response : 599
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 21:21:26.11 ]
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。

【前スレ】
【初心者歓迎】C/C++室 Ver.76【環境依存OK
hibari.2ch.net/test/read.cgi/tech/1312621728/

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

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

175 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 12:18:10.65 ]
クラスにfriendを追加したりする変更権限のある人が
テストをした方が良いと思うんだが。

176 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 14:39:19.81 ]
>>171-172
呼ばれないメンバ関数をコンパイルしない代表は、VC++。
他人が使うクラスを作るときは要注意。

177 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 16:14:40.38 ]
>>176
実例よろ

178 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 16:31:36.66 ]
>>163
前者はインライン関数。
インライン関数は一部は一部文法チェックされるようだけど、
呼ばれなければ、returnがなくても怒られないね。
バイナリには含まれないから問題ない。

後者はインライン関数ではないので
呼ばれなくてもバイナリに含まれるから
returnがなければ怒られる。

よって両者は異なる。

179 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 22:37:11.15 ]
ひどいコンパイラだ…

180 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 22:46:22.31 ]
当然の処置だと思うがね。
インライン関数のマージ作業に意味解析済みである必要は無いというかそもそも無駄なんだから

181 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 22:54:10.81 ]
そうかなぁ…
リリースモードならともかく、デバッグモードではちゃんとコンパイルエラーを出して欲しい。
DEFCON^h^h^h^h^h^h警告レベル4でもでなのかしら? …実験してみるかな。

182 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 23:02:13.29 ]
未使用だと言うなら警告してくれてもいいとすら思う。

183 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 23:53:24.85 ]
>前者はインライン関数。
なんと!
クラス宣言の中に書いてしまうとインライン扱いになるということ?

警告してくれるようなオプションってないのかな?
後で邪魔になっても困る人もいるのでは?



184 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 01:09:32.25 ]
震災前

     /::::::::::::::::::::::::::::::;;::ノ ヽ;::\
    /::::::::;;;;;;;;;,,,;;...-‐''"~    ヽ:;::l
     |:::::::::::|    岡田 異音    |ミ|
     |:::::::/     ,,,  ヽ,、   '|ミ|  
     '|:::::::l    '''""   ゙゙゙゙`   |ミ|
       |:::::|.  ,,r ‐、   ,, - 、  |/
     ,/⌒|  ノ ・ _), (. ・ `つ|
     | (   "''''"    |"'''''"  | 
      ヽ,,.        ヽ    |
       |       ^-^_,, -、   |   
         |    _,, --‐''~    ) |  マニフェストもう守れない。どうしよう・・・・ 
         'ヽ  (   ,r''''''‐-‐′ / 


震災後

     |:::::::::/            |ミ|
     |::::::::|   ,,,,,    ,,,,,   |ミ|
     |彡|.  '''"""''   ''"""'' |/
     /⌒|  -=・=‐,   =・=-  |
     | (    "''''"   | "''''"  |  
     .ヽ,,         ヽ    .|  キリッ
        |       ^-^    |
   .     |     ‐-===-   |   大震災が起こったのだからマニフェストの破綻も致し方ありません
         ,\.    "'''''''"   / 
朝鮮民主党
    解党

185 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 08:52:29.38 ]
WIN32のAPIのwinsockの関数、「WSACleanup()」というのは、何をする関数なのでしょうか?

「WSAStartup()」と対になって、
初期化・開放 のようなものかと思っていたのですが、
調べてみると、
「WSAStartup()」はメモリを取得するが、
「WSACleanup()」をしても開放しないので、そのうちヒープか何かが無くなって落ちると知りました。

186 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 09:00:06.22 ]
何をするのか知らなくてもいいようにそういう関数になってるんだけど

187 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 12:32:56.69 ]
今独習C++やっているんですが、

std::ofstream out("test.txt", std::ios::out | std::ios::binary);
double num = 100.45;
out.write((char *) &num, sizeof(double));

の(char *) &numって何で&numなんですか?

188 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 12:38:00.47 ]
numのアドレスでした
事故解決しました


189 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 13:14:39.78 ]
>何をするのか知らなくてもいいようにそういう関数になってるんだけど
プロセス中で複数回呼ぶのはNGで、
プロセスが終了したら開放されるのであれば、
「WSACleanup()」しなくてもいいってことにならないのでしょうか?

もうひとつお願いします。
ソケットが使える常態かそうではないかはどのように確認できますか?
WSARecv()などで受信してみないとわからないでしょうか?

190 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 07:15:28.99 ]
STLのstd::mapをprivateメンバとしてもつクラスをDLLの内部に持って、そのクラスをエクスポートすると、
Visual C++では、警告:C4251 が示されます。

privateとして利用している場合は、OKなのでしょうか、NGなのでしょうか。
インタフェースとして利用している場合は、std::mapの実装が異なる可能性があるのでNGというのは、なんとなくわかるのですが、
内部で利用するだけであれば問題がある理由がわからないです。
inlineを利用してアクセスするのがNGというのも良くわからないです。

この件では、ヘッダの内容を全てcpp側にコピーしても同じ警告が出ます。どうしてなのでしょうか?
コンパイラがインタフェースに利用されているか判断するのが困難だからでしょうか?

「class 'std::map<_Kty,_Ty>' は __export キーワードを使って class 'info::driver::InetPromiscuousDriver' にエクスポートしてください。」
とは、どこの何に対して、__exportを追記するとエクスポートできるのでしょうか?

エスパー出来れば、この辺りについて教えてください。

191 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 08:48:18.60 ]
cat test.cpp | indent

で奇麗に整形されたソースになると思ったら
とんでもない壊れたものしか出力されない
何かオプションでもいるの?

192 名前:片山博文MZ ◆0lBZNi.Q7evd mailto:sage [2011/12/24(土) 10:22:48.99 ]
>>191
www.6809.net/tenk/html/lib/doc/astyle_j.htm

193 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 17:43:03.67 ]
>>190
private メンバもクラスのサイズに影響する。
inline でアクセスしてたらDLL内外で実装の異なる map アクセスが展開される可能性がある。



194 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 22:55:08.76 ]
int を全部doubleにおきかえたら不具合おきることなんてあるんだろうか
めんどくさくなってきたから全部doubleにしてしまいたい

195 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 23:10:57.90 ]
>>194
>1/2*2
0
>1.0/2.0*2.0
1.000000

196 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 23:20:24.96 ]
>>194
>めんどくさくなってきたから全部doubleにしてしまいたい

すれば?

余計面倒なことになると思うが。

197 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 00:38:18.53 ]
インデックスがdoubleとかどこのうちの会社のソースだよ

198 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 00:39:23.25 ]
Luaではよくある事

199 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 00:44:23.33 ]
doubleででるかどうかはプログラム次第。
[]を小数点切り捨てとすると
[a/n + b/n]
[a/n] + [b/n]
は異なる。

200 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 00:54:18.15 ]
>>199
世も末だなw

201 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 02:57:13.99 ]
>>194
double i;
for(i=0;i<1;i+=0.01)printf("%f ",i);

int i;
for(i=0;i<100;i++)printf("%f ",(double)i/100.0);
とは違うことがある。



202 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 03:48:17.30 ]
実数をループカウンタにすんなよ

203 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 13:54:45.42 ]
intをdoubleに置き換えたので仕方がないです
実数でループできるように言語仕様を変えるべきでは?



204 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 14:00:55.12 ]
実数でループできるが、計算の誤差が問題。

205 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 14:06:30.24 ]
2進数で表記出来ないような数値を繰り返しで足し算したりするとどんどん誤差が増えるんだっけ

206 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 14:24:16.46 ]
ループが一回多かったり少なくなったりする。
マシーンで計算精度が異なる。
整数型であればズレが出ない。

207 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 15:16:35.68 ]
他の学問ならまだしもプログラミングって基本的に質問に向いてないよね

208 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 18:36:46.52 ]
仕様上は数値である必要すらないけどな。

209 名前: ◆QZaw55cn4c mailto:sage [2011/12/25(日) 22:10:03.45 ]
>>207
コード・ソースを晒せば早いかもしれませんが、はじめのうちはなかなか勇気がでないかもしれません。

210 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 23:20:09.77 ]
>>209
糞コードを晒す厚顔無恥さは勇気とは言わないけどな

211 名前: ◆QZaw55cn4c mailto:sage [2011/12/25(日) 23:23:41.70 ]
>>210
具体的に

212 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 23:39:55.69 ]
自分で気付けない時点ですでに┐(´д`)┌ヤレヤレ

213 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 23:44:05.64 ]
糞コードと馬鹿にするだけのカスは要らないのでスレから立ち去りなさい
糞コードを改善する答えやヒントを人に与えることができる人間以外は必要ありません



214 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 23:56:37.99 ]
>>213はQがコテを外して書いた糞レス

215 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 22:56:39.86 ]
7BITとか31BITみたいな中途半端な整数型って作れますか?

216 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 00:10:20.44 ]
>>215
intと暗黙で相互変換可能なクラスを作ればそれですむ。
厳密な意味での整数型が作りたければコンパイラに手を入れる必要がある。

217 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 00:59:27.39 ]
ビットフィールド

218 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 11:09:05.80 ]
広いビット幅があれば制限すれば良い。
少ないビット幅しか使えないなら配列で多倍長数を表現する。
ハードウェアの対応でないから演算速度は落ちる。

219 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 14:44:51.44 ]
// Hogeのインスタンスをたくさん作成
vector<auto_ptr<Hoge> > hoge_pointers(num, NULL);
for (int i = 0; i < num; i++) { hoge_pointers[i].reset(new Hoge); }

// pushするループで例外を投げたくないから、先行してhoge_userの内部にメモリを確保する
hoge_user.reserve(hoge_pointers.size());

// pushされた時点からポインタはhoge_userが管理する
for (int i = 0; i < num; i++) { hoge_user.push(hoge_pointers[i].release()); }

こんな感じで、hoge_userの外でHogeインスタンスをたくさん作成してから
hoge_userにポインタを渡したいんですが、どういう風にすればいいでしょうか

例外が起こった場合には、hoge_pointersがすべて解放されて、
hoge_userにpushされたポインタはすべてなかったことにしたいです

で、スマポを使おうと思ったのですが、auto_ptrはSTLのvectorに突っ込めなくて、
boost::shared_ptrはポインタを取り出すことができないのでやめました

try/catch 使えって話ですが、なにか他にいい解決策はありますか?

220 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 15:20:55.13 ]
>>219
コンテナにauto_ptrを入れる行為はCOAPと呼ばれ厳禁

Effective STLを読め

221 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 15:25:10.76 ]
その目的だとtry/catchで書くのが一番シンプルで楽だと思うよ

vector<Hoge *> v;
try {
 v.reserve(N);
 for(int i(0); i != N; ++i) {
  v.push_back(new Hoge);
 }

}
catch(...) {
 int n(v.size());
 for(int i(0); i != n; ++i) {
  delete v[i] ;
 }
throw ;
}

どうしてもtry/catchが嫌ならcatchブロックの部分をデストラクタで実行するクラスを作ってvのアドレスをもたせればいい

222 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 15:59:34.02 ]
アドバイスありがとうございます
意地でもtry/catchを使いたくないので、そちらのコードを参考にしてクラスを自作したいと思います

223 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 18:41:37.49 ]
構造体内で確保したリソースを削除するには?

public ref struct A {
array<int> a;
A() {
a = gcnew array<int>(10);
}
~A(){
delete a;
}
};


A^ s = gcnew A();
delete s;

で~A()が呼び出されて内部のリソースも削除される?



224 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 19:09:14.58 ]
>>223
節子それC++やない、C++/CLIや

225 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 19:32:32.67 ]
あ、ここc++/cliの質問は禁止?
すいません

226 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 21:00:27.48 ]
別の言語だしな。C#の質問をするのと大して変わらんw
とりあえずスレ一覧をCLIで検索してみれ。

227 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 00:12:20.49 ]
機種依存OKって事になってますので、こちらで質問させてもらいます。
プリミティブ型の値をvectorに大量に一括設定する際、vector::assign以上に高速に
設定する方法はないでしょうか?
VC++2010を使っています。

228 名前:227 mailto:sage [2011/12/28(水) 00:24:38.84 ]
すみません、もう1点。
vector等のSTLのコンテナを含む静的ライブラリ(型を限定してコンパイルした上で提供)を作成しているのですが、
Debug版の遅さに我慢できません(VC++2010)。
ライブラリのリリースでは内部実装がDebug版である必要はないため、
Debugビルド向けにもReleaseでビルドして提供したいと考えています。
しかし、イテレータデバッグレベルがどうのこうのっていうエラーが発生してしまいます。
なんとか回避する方法はないでしょうか?

229 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 01:30:39.39 ]
>>227
たぶん無いね。あっても大差無いだろう。

>>228
_SECURE_SCL の設定で片付くんじゃないの?
msdn.microsoft.com/ja-jp/library/aa985965.aspx

あと、エラーメッセージは正確にね。

230 名前:227 mailto:sage [2011/12/28(水) 03:28:57.27 ]
>>229
ありがとうございます。

_SECURE_SCLについてはやってみましたが、プロジェクト全体で同じ値に設定しないとダメなようです。
Debugのプロジェクトは
 利用者側 ... デバッグ作業がしたいので_SECURE_SCL=1にしたい
 ライブラリ側 ... デバッグは済んでいて高速に処理したいので_SECURE_SCL=0にしたい
としたいのですが、下のLNK2038と同じエラーになってしいます。

> あと、エラーメッセージは正確にね。
申し訳ありません。
手元に環境がないため、ググッた結果になりますが、
 error LNK2038: '_ITERATOR_DEBUG_LEVEL' の不一致が検出されました。
だと思います。

自前のクラスを作って置き換えるか、より高速なSTLの実装があれば、それを使うというのもありなのかもしれませんが…。

231 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 09:16:58.00 ]
リンク先を読んだならchecked_***はためしたんだろうか

232 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 10:50:07.41 ]
デバッグ用はおそくていい。
速くしたければリリース使う。

233 名前:227 mailto:sage [2011/12/28(水) 21:10:53.96 ]
>>231
227に関しては早くなるかもしれませんね。
でも、今はなくなってしまったようです。
VC++2008のalgorithm
msdn.microsoft.com/en-us/library/chzkfc23%28v=VS.90%29.aspx
VC++2010のalgorithm
msdn.microsoft.com/en-us/library/chzkfc23%28v=VS.100%29.aspx
make_checked_iteratorは残っていますが、これを使ってstd::copyしても、内部で
 _DEBUG_RANGE
_DEBUG_POINTER
が呼ばれた後、ようやくコピー処理が走るようになってるようです。

>>232
それが、我慢出来ないくらい遅いんですよ。
ソースコードデバッグを開始すると数分反応が帰って来ませんし。



234 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 21:15:11.47 ]
[]じゃなくてatを使っているとか
そういうのじゃないよね?

235 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 21:27:54.73 ]
とりあえずreserve()してからだとどうなるか知りたいね

236 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 21:29:53.57 ]
>>234
SECURE_SCLのせいでatも[]も変わらなくなってるよ
最初に気がついたときは怒りで発狂するかと思ったw

ありなしでDLLまたげないしね
ほんと面倒だわ

>>233
うちもけっこうでかいプログラム作ってるけどSECUrE_SCLをOFFにしてDebug版は素直に使ってる
ただ、デバッグ実行じゃなくてexeを直に叩いて立ち上げてからアタッチしたほうが
結構速い気がするのでそっちを使ってる


237 名前:227 mailto:sage [2011/12/28(水) 21:30:32.33 ]
>>234
atは使ってませんね。[]です。

238 名前:227 mailto:sage [2011/12/28(水) 21:45:42.75 ]
>>235
reserveして設定も試しています。
[]で設定する他、生ポインタに変換して設定したり、OpenMPを使ってみたりしてみましたが…、
assignの方が早かったです。
どうも、reserveも要素ごとに配置newが発生したり、_DEBUG_RANGEなどが走ったりしているようで、
値の設定分、遅くなってしまうようです。

>>236
立ち上がってアタッチってのはたしかに有用かもしれませんね。
ありがとうございます。


239 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 21:52:35.70 ]
どんな操作なのかソース出したほうがいいんじゃないかと思う

240 名前:227 mailto:sage [2011/12/28(水) 23:13:13.60 ]
>>239
ソースは手元に無いので、覚えている範囲で似たようなコードを書きました。
あと、うちにあるのはExpressなので、OpenMPが動くかどうかは不明です。
codepad.org/kqZndGzg
ちなみに >>238 はreserveではなくて、resizeでした。
申し訳ありません。
reserveも試してはいますが、assignの方が早かったと思います。


241 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 01:07:24.97 ]
forじゃなくてfor_eachを使うと少しはましになるかもしれないなあとか
この際だからmemcpyでいいんじゃねというくらいしかまともな方法は思いつかない

boost::container::vectorとか使って望む結果になるかどうかも試したことないからわからないな

242 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 04:03:07.90 ]
void function (char *arg);
という関数に渡された引数が &hoge[1]だった場合、
関数の中ではhoge[0]はarg[-1]という表現でいいんですか?

243 名前:227 mailto:sage [2011/12/29(木) 06:52:19.95 ]
>>241
へえ、boostにもvectorがあるんですね。
これは、試してみたいですね。
ありがとうございます。



244 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 08:20:41.31 ]
boostには変なコンテナがたくさんあるよ

Header <boost/container/container_fwd.hpp>
Header <boost/container/deque.hpp>
Header <boost/container/flat_map.hpp>
Header <boost/container/flat_set.hpp>
Header <boost/container/list.hpp>
Header <boost/container/map.hpp>
Header <boost/container/set.hpp>
Header <boost/container/slist.hpp>
Header <boost/container/stable_vector.hpp>
Header <boost/container/string.hpp>
Header <boost/container/vector.hpp>

ひと通りどんな内容なのか目を通しておくとよい
boostは今や膨大な内容になっていてとても全部目を通すのは不可能に
近くなってきたから興味のある所だけでも見ておこう

245 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 08:29:02.28 ]
boostはいらん。
これ使うやつはアホウだ。

246 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 08:31:19.60 ]
timerとか正規表現とかスマートポインタあたりで使うやつがいるが。
有名なライブラリがあったりtimerなど3行程度で自作できるだろ。
バージョン違いで動作が変わる可能性あるし、インクルードするやつはアホウ。

247 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 08:37:09.53 ]
バイナリの配布で中身にboost使うなら良い。boostのバージョンに依存しないからな。
ソースコードを張ったり公開するところでboostはダメだな。

248 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 11:24:02.76 ]
0xが普及したらboostとか要らなくなる

249 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 13:11:43.53 ]
スマートポインタなんて使う必要ないと思うんだが。
STLを使っとけばスコープ外れたら自動で解放するだろ。
どうやってnewの使用が回避出来なかったら手動で開放しろよ。
もしくはデストラクタに組み込めよ。そしたらいらん。

250 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 13:59:55.29 ]
>>245-246はアホウ
使ってもみないでただ批判ばかりしてる

251 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 14:33:10.27 ]
>>249
>デストラクタに組み込めよ
これを毎回書くのがだるいからスマポ使うんだろ

252 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 14:33:12.78 ]
つかってみて言ってるんだ。
boostが優れている所なんてないだろ。
使う意味なし。

253 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 14:37:06.06 ]
釣りにしても露骨すぎる
真性なのだろうか



254 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 14:46:40.93 ]
そうだな
標準の std::unique_ptr と std::shared_ptr で十分だよな

255 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 14:51:34.14 ]
それもいらないが。速度低下するし。
スマートポイント使うんだったら、C#とかPHPとかBASICとか自動で開放するやつつかえよ。

256 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 15:03:08.22 ]
一理ある
パフォーマンス犠牲にして楽したいなら他の言語だよな

257 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 15:08:46.98 ]
649 デフォルトの名無しさん [sage] 2011/12/29(木) 14:50:37.28 ID: Be:
学生プログラマ日本一決定戦(予選は社会人も参加可)
ttp://codevs.jp/howto.html
現在予選開催中
応募締切 2012.1.6 12:00

おもしろいことやっているじゃん。誰か今から参加しろよ。

258 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 16:04:27.15 ]
>>255
unique_ptr は速度低下しないだろ。

259 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 16:08:33.62 ]
ユニポはクールだよねぇ
右辺値最高やわ

260 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 18:39:50.46 ]
>>258
C++スレで他言語持ち出すバカなんだから察してあげなよ

261 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 23:29:53.46 ]
境界チェックつきの配列を使いたく、オリジナルで
detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1111063861

の回答のようなクラスを作ろうと思うのですが、

このクラスで作る配列を静的に初期化したいのですが、できますか?

static int hoge[] = {0,2,4,5,};みたいな感じで扱いたいです。

262 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 23:45:38.95 ]
boost::array使えば?

263 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 23:49:28.42 ]
template <class T, unsigned int N> struct Array {
T elements[N];
// コンストラクタデストラクタは書かない
T & operator [] (unsigned int n) {
if(n < N) return elements[n] else throw out_of_range("out_of_range");
}
// 以下略
} ;

たぶんこれでいけると思うよ



264 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:15:22.35 ]
boostは使えませんので、類似のものを作るか・・・

>>263

operator[]はメンバー関数である必要があります っていわれました。
環境は、VC2010です

265 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:09:07.12 ]
すいません。そのままでコンパイルできました。
size N を明示的に書かなくても使えますか?

266 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:42:55.10 ]
無理
でもVC10なら自分で書かずともstd::arrayで範囲チェックできるだろ

267 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:58:25.77 ]
平松サイド  vs   橋下サイド

民主党         大阪市民
自民党          ν速民
共産党
財界
関西電力
連合
自治労
日教組
公務員
毎日新聞
MBS
解同
極左

大阪の敵が濃縮されてわかりやすくなったな


268 名前:265 [2011/12/30(金) 12:04:10.90 ]
サイズを省略するのはあきらめます。


template <class T, unsigned int N> struct Array {
T elements[N];
// コンストラクタデストラクタは書かない
T & operator [] (unsigned int n) {
if(n < N) return elements[n] else throw out_of_range("out_of_range");
}
// 以下略
} ;

int main()
{
Array<int,5> test = {1,2,3,4,5};


}
みたいにすると、
コンパイルされたクラスの テンプレート のインスタンス化 の参照を確認してください

といわれコンパイル通らないのはなぜでしょうか?

269 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 12:16:50.18 ]
MSVC2010 / C++

□使用可能なライブラリ
stl / boost / zlib / ライセンスがうるさくないものであればその他もOK

□やりたいこと
zipファイルの中身(主にファイル名)を列挙したいです。
その時に、なるべくwchar_tベースでの書庫ファイル指定や、ファイル名取得をしたいです。
zlib + minizip だと、char文字列でのやり取りしかできないように思います。

□質問
どんなライブラリをどういう感じで使うと実現できますでしょうか。

よろしくお願いいたします。

270 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 12:23:41.34 ]
charで格納された物は、ユニコードにならないんだよ。
ユニコードで格納された物はユニコードで取り出せる。
取り出しかたの問題ではないから工夫しても無理。

271 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 12:28:04.94 ]
shift+JISの方が好き

272 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:03:50.87 ]
EUCやSJISで格納された名前をwhar_tに変換して格納すれば良い。
zip読み取りルーチンとは関係なし。
UTF-16LEで格納されていればそのまま格納すれば良い。
格納時のエンコードの問題。

273 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:13:05.57 ]
VC++であるクラスを継承してメンバ変数を追加し=operatorをオーバーロードした時に
基底クラスのメンバーをコピーするのはどうやって記述すればいいんでしょうか?

class NewClass : public OldClass
{
public
int mNewMenber;
...
NewClass operator=(NewClass &nc){
/* 基底クラスのメンバーをコピー */
????????????????
mNewMember = nc.mNewMember;
return *this;
}




274 名前:273 mailto:sage [2011/12/30(金) 13:15:57.84 ]
ああ、基底クラスにも自身の=operatorが定義してあります。

275 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:27:13.08 ]
NewClass & NewClass::operator = (NewClass const & other) {
OldClass::operator = (other);
mNewMember = other.mNewMember;
return *this;
}






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<155KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef