- 1 名前:デフォルトの名無しさん [2014/07/31(木) 19:14:13.79 ID:17Xd3Yqq]
- エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 ◆ソースのインデントについて 半角空白やTABでのインデントはスレに貼ると無くなります。 そのため、アップローダーに上げるのも手ですが直接貼る場合は、 全角空白か に置換すると見栄えだけはよくなります。 前スレ 【初心者歓迎】C/C++室 Ver.91【環境依存OK】 peace.2ch.net/test/read.cgi/tech/1400394837/ 【アップローダー】(質問が長い時はココ使うと便利) codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック) ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)
- 232 名前:デフォルトの名無しさん [2014/08/14(木) 15:29:25.75 ID:8/lb7CTL]
- そんな糞なことは止めて行列ライブラリを作るか既存のものを使え
- 233 名前:デフォルトの名無しさん mailto:sage [2014/08/14(木) 19:02:21.63 ID:sAFDwER0]
- 確かに2D,3Dのシミュレーションする数値演算ならvectorはちょっとお呼びでない
- 234 名前:デフォルトの名無しさん mailto:sage [2014/08/14(木) 21:08:35.96 ID:8EuqiR5k]
- widthxheight固定なら素直に連続領域とれるビットマップのような二次元配列だな
- 235 名前:デフォルトの名無しさん mailto:sage [2014/08/14(木) 21:51:37.55 ID:MeOL7pvQ]
- キミはスパース行列を知らないのか?
- 236 名前:デフォルトの名無しさん mailto:sage [2014/08/14(木) 22:29:17.20 ID:BNqK6z00]
- >>232
>>233 >>234 おすすめのライブラリはありますか? 用途は数値の書き込みと読み取りをするだけです
- 237 名前:デフォルトの名無しさん mailto:sage [2014/08/14(木) 22:37:39.50 ID:BNqK6z00]
- よく考えてみれば書き込みと読み取りだけならどのライブラリでも良さそうですね
- 238 名前:デフォルトの名無しさん mailto:sage [2014/08/15(金) 01:33:12.65 ID:j/DUXog9]
- なんでこんな需要の多そうなクラスが標準で無いんだろうと思ったけど
まさか double unko[100]; ((double(*)[10])(unko))[9][9]; って保証されてない?
- 239 名前:デフォルトの名無しさん mailto:sage [2014/08/15(金) 02:20:11.21 ID:Wy6EwLn0]
- [99]のアクセスと同じかどうかってことなら同じじゃね
通常の配列も多次元配列もメモリ上は一直線になることは決まってたはず ソースは探してない
- 240 名前:デフォルトの名無しさん [2014/08/15(金) 07:18:12.35 ID:gY0bb4xI]
- >>216
余談だけど、前 VS が無かったから Mac で久しぶりに XCode で書いてたら、 std::vector<std::vector<_T>> vec; で構文エラー投げられた。>> を stdin の演算子として読まれたらしい VS ではこんな事なかったのにやはり GNU は信用できn(ry
- 241 名前:デフォルトの名無しさん mailto:sage [2014/08/15(金) 08:09:25.44 ID:1yOnOTpl]
- >>240
それが昔からのデフォだ vector<vector<T>> と書いてOKになったのは C++11 からだね、VS で ++11 に対応しているの
- 242 名前:デフォルトの名無しさん mailto:sage [2014/08/15(金) 08:10:41.78 ID:rBk8U20E]
- >>240
その>>をきちんと解釈するのはC++11からだ。 C++03では> >と書かないといけなかった。
- 243 名前:デフォルトの名無しさん [2014/08/15(金) 08:49:10.77 ID:gY0bb4xI]
- >>241 >>242
そうだったのか! どうりで XCode では std::to_string() が使えなかった訳だ。
- 244 名前:デフォルトの名無しさん mailto:sage [2014/08/15(金) 09:24:41.59 ID:Lne+Px+X]
- そんなの常識タッタタラリラ
- 245 名前:デフォルトの名無しさん mailto:sage [2014/08/15(金) 10:40:55.78 ID:vo9zRayR]
- ピーヒャラピーヒャラ
- 246 名前:デフォルトの名無しさん mailto:sage [2014/08/15(金) 12:54:12.49 ID:Aqg845W8]
- www.buzzword.jp/img/face10.png
- 247 名前:デフォルトの名無しさん mailto:sage [2014/08/15(金) 15:40:11.62 ID:rWnY0+Nz]
- >>243
そのXcode古すぎじゃね? それかオプションでC++03になってるか
- 248 名前:デフォルトの名無しさん mailto:sage [2014/08/15(金) 17:57:41.55 ID:gY0bb4xI]
- >>247
さあ、確か XCode で C++11 を導入するには gcc を手動でアップデートしなければいけないという事も聞いたが... XCode を貶すつもりなどないが、自分にとっては使い易いから VS を使い続けるつもりでいるよ
- 249 名前:デフォルトの名無しさん mailto:sage [2014/08/15(金) 18:01:50.30 ID:LpsonrOj]
- こういうときにXcodeはカスと言うような輩が居るから困る
逆もしかり って言うか身近にいる
- 250 名前:デフォルトの名無しさん mailto:sage [2014/08/15(金) 18:03:48.47 ID:EAoCiRcg]
- C++はカス
- 251 名前:デフォルトの名無しさん mailto:sage [2014/08/15(金) 18:58:08.91 ID:dVKltVs+]
- どんな言語でも、3ヶ月以内に自分が書いたコード以外はカス
- 252 名前:デフォルトの名無しさん mailto:sage [2014/08/15(金) 19:14:06.92 ID:FG/0ESXh]
- 設計ができない奴のコードはどれだけ高機能だろうとカス、汚物
しかも必ず「時間がなかったので」という言い訳付き 設計に基づくコードは1年前だろうと理路整然として美しい
- 253 名前:デフォルトの名無しさん mailto:sage [2014/08/15(金) 19:19:42.09 ID:EAoCiRcg]
- emacsを使うと設計しなくてもコーディング出来ます()
- 254 名前:デフォルトの名無しさん mailto:sage [2014/08/15(金) 19:22:14.18 ID:2DtLTSpw]
- 初めから仕様の決められるようなプログラムって、創造的余地のまるでない
誰でも作れるものでしかないんじゃ
- 255 名前:デフォルトの名無しさん mailto:sage [2014/08/15(金) 19:40:09.65 ID:71J7kCx5]
- 考えるという行為を知らない
コピペコーダーのたわごとだな 設計ってのは脳みそ使うんだぞ
- 256 名前:デフォルトの名無しさん mailto:sage [2014/08/15(金) 19:49:52.48 ID:2DtLTSpw]
- いやプログラムのほぼ最適な設計は仕様決まったらある意味自動的に出来る物だろ。
仕様が変わるからこそ、作業量優先で 増築繰り返して美しくない設計になる。 もちろんある程度の増築を想定した設計にはなっているけどね。 だからこそリファクタリングという工程が必要になるんだよ。
- 257 名前:デフォルトの名無しさん mailto:sage [2014/08/15(金) 19:52:56.78 ID:UOqJaIfS]
- と有機生命体のコード生成機械は自負しています
- 258 名前:デフォルトの名無しさん mailto:sage [2014/08/15(金) 20:01:44.71 ID:nXBM096I]
- 外部仕様と内部仕様のどちらの話なのか区別すべき
>仕様が変わるからこそ、作業量優先で >増築繰り返して美しくない設計になる 内部設計したこと無い人の常套句だね こういう人は一生まともなコードは書けん
- 259 名前:デフォルトの名無しさん mailto:sage [2014/08/15(金) 20:12:33.70 ID:rWnY0+Nz]
- >>248
んなわけない。 それに今XCodeに使われてるコンパイラはGNUじゃなくてLLVM Clang C++11の主要機能の実装はVisualStudioより一年以上早かったよ。
- 260 名前:デフォルトの名無しさん mailto:sage [2014/08/15(金) 20:50:15.31 ID:2DtLTSpw]
- 何を言っているのか解らない。
内部設計位息をするように出来なきゃ 動くもの作れないだろ。
- 261 名前:デフォルトの名無しさん mailto:sage [2014/08/15(金) 21:10:18.85 ID:aVUc5SAD]
- 内部設計しなくてコーディングするひとが多くて困ってます(≧∀≦)ゞ
それっぽく動くものができるのが不思議
- 262 名前:デフォルトの名無しさん mailto:sage [2014/08/15(金) 21:48:52.69 ID:2DtLTSpw]
- 基本的に頭の中で内部の詳細について
設計したものを頭の外に出す作業がコーディングじゃね? 別の形で残す必要性が解らない。 言葉や別の言語で実態と乖離した説明聞くより直接コード見た方が早いだろう。 まあそこが直接繋がらない初心者には 何がしたかったのか意図を聞くこともあるけど。
- 263 名前:デフォルトの名無しさん mailto:sage [2014/08/15(金) 22:06:36.47 ID:ZsqsNQIf]
- ソース公開された時全部TCHAR依存(関数も_tstoiとか_tprintf)だとやっぱり嫌がられますでしょうか?
いろんな方のソースを拝見するとcharで統一されていたりTCHARでも文字セットがマルチバイトになっていたりするんですが
- 264 名前:デフォルトの名無しさん [2014/08/15(金) 22:35:54.17 ID:oVfRPgr4]
- C言語のAPIやリファレンスってどうやって確認する物なんでしょうか?
javaならオラクルのwebサイトに仕様が有って、eclipseでshift+F2を押せば確認出来たりするのですが。 Cだと最初から作られている物の一覧を何処から入手すれば良いのかさっぱり分かりません。 コンパイラの作成元に別々に置かれている物なんでしょうか?
- 265 名前:デフォルトの名無しさん mailto:sage [2014/08/15(金) 22:44:18.53 ID:tVn+C2pp]
- >>263
ものによる Windows以外で使う可能性があるならTCHARは殺害だし Windowsで商用レベルのソフトならcharは許されない
- 266 名前:デフォルトの名無しさん [2014/08/15(金) 22:49:52.18 ID:yLhHHOyz]
- charで書いといてマクロで書き換えてunicode対応にする。面倒だがこれならwindows以外ではいいだろ。
- 267 名前:デフォルトの名無しさん mailto:sage [2014/08/15(金) 23:02:39.26 ID:WUgX6twt]
- 内部utf-8にする必要があるとかじゃなけりゃwchar_tだな。
Win32APIは明示的にW版を使うようにして。
- 268 名前:263 mailto:sage [2014/08/15(金) 23:44:35.57 ID:ZsqsNQIf]
- >>265
>>266 >>267 ありがとうございます オープンソースの場合あまり環境に依存させないほうがいいということですね C++においてもし決め打ちをするならcharとwchar_tならどちらがいいのでしょうか? charじゃないといけない時というのはどういう時でしょうか?
- 269 名前:デフォルトの名無しさん mailto:sage [2014/08/15(金) 23:44:45.59 ID:dqHjjjVM]
- >>265
TCHAR定義されてなかったら#defineすればいいだけでコスト0
- 270 名前:デフォルトの名無しさん mailto:sage [2014/08/16(土) 00:19:24.37 ID:xuwM529Y]
- >>268
いや、別にWindows専用ならTCHAR使ってもいいと思うぞ。
- 271 名前:263 mailto:sage [2014/08/16(土) 01:24:29.38 ID:k3e0e9h7]
- >>270
一応windows環境のソフトウェアですがなにか変なことをしていないかと思って質問しました
- 272 名前:デフォルトの名無しさん mailto:sage [2014/08/16(土) 03:06:47.92 ID:FC037fxL]
- >TCHAR定義されてなかったら#defineすればコスト0
そんなことをしたらマイクロソフトに親を殺された人たちに因縁をつけられて とんでもないコストが発生するだろう
- 273 名前:デフォルトの名無しさん mailto:sage [2014/08/16(土) 05:40:01.26 ID: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使うことなんて無いでしょ。
- 274 名前:デフォルトの名無しさん [2014/08/16(土) 06:02:24.34 ID:5flrnqyZ]
- 内部でUTF8(1バイト長)を使うと固定するように、
内部でUTF16(2バイト長)を使うと固定してもマルチプラットフォーム化は可能。 昔から次世代のPHP6は内部UTF16化しようとしてた。
- 275 名前:デフォルトの名無しさん mailto:sage [2014/08/16(土) 06:15:22.75 ID:HsWLjWa1]
- >>274
今からUTF-16は中途半端でしょ。プログラムの外に文字列出すときはUTF-8の方がベターだし、メリットが無い
- 276 名前:デフォルトの名無しさん mailto:sage [2014/08/16(土) 06:34:07.99 ID:4+vOhLId]
- >>273
ソースをUTF-8で保存して L"ほげ"でリテラル埋め込んでると VC++のコンパイラが暴れるんです
- 277 名前:デフォルトの名無しさん mailto:sage [2014/08/16(土) 08:25:20.68 ID:KA+KE7+G]
- Visual C++のCランタイム関数やC++のstreamクラスってUTF-8対応していないの?
- 278 名前:デフォルトの名無しさん [2014/08/16(土) 08:45:24.88 ID: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」というバージョンにすべきだ、という話のようだ。 developers.slashdot.jp/story/14/07/25/040238/
- 279 名前:デフォルトの名無しさん mailto:sage [2014/08/16(土) 08:55:34.89 ID:aJ9J0CdO]
- ↓Perl 6
( ゚д゚ ) ガタッ .r ヾ __|_| / ̄ ̄ ̄/_ \/ /
- 280 名前:デフォルトの名無しさん mailto:sage [2014/08/16(土) 10:48:50.82 ID:0XKtKnUw]
- >>277
UTF-8 はそのまま通るんじゃない? >>278-279 Perl の話かと思ったゎ
- 281 名前:デフォルトの名無しさん mailto:sage [2014/08/16(土) 11:01:29.74 ID:xuwM529Y]
- >>280
LC_CTYPEに依存する関数はロケールを適切に設定する必要があるな。
- 282 名前:デフォルトの名無しさん mailto:sage [2014/08/16(土) 11:16:19.08 ID:x/55uCwJ]
- windowsはlocaleでutf-8指定しても
マトモに扱ってくれなかったような vcのバージョンによるのかもしれないが
- 283 名前:デフォルトの名無しさん mailto:sage [2014/08/16(土) 11:51:54.48 ID:iDf+bXK3]
- >>271
Win32 APIのA版はフォルダーの中に長い名前のファイルが混じってるだけで ファイル一覧の列挙が動作しなくなったり とにかくWindowsのフル機能を正常に使えない出来損ないだぞ 残念ながらWindowsアプリでは処理をマルチバイト文字に統一することは不可能
- 284 名前:デフォルトの名無しさん mailto:sage [2014/08/16(土) 23:26:59.16 ID:VKTgsMtd]
- >>268
char で決め打ちして日本語対応しませんというのが一番楽
- 285 名前:デフォルトの名無しさん mailto:sage [2014/08/17(日) 05:26:13.50 ID:3OAkF9Uq]
- >>284
それ日本語だけじゃ済まないから
- 286 名前:デフォルトの名無しさん mailto:sage [2014/08/17(日) 06:16:23.78 ID:4EYqeDv1]
- >>284
ハゲどー。 そして申し訳程度に日本語に見えるバイナリ列対応w
- 287 名前:デフォルトの名無しさん mailto:sage [2014/08/17(日) 06:35:37.54 ID:D8fOlFKd]
- >>282
UTF-8へのロケール変更はできないはず
- 288 名前:デフォルトの名無しさん [2014/08/17(日) 06:43:50.32 ID:ruDVRpF3]
- windowsAPIでUTF-8は使えるって聞いたことがない。
それだったら、linuxと一緒でwchar_t版が不要だろ。
- 289 名前:デフォルトの名無しさん [2014/08/17(日) 06:46:25.94 ID:ruDVRpF3]
- マイクロソフト純正でないとおもうが。
仮にUTF-8が使えたとしても、ラッパーであってUTF-16LEへ変換して渡してるだろう。 windowsは内部が全世界統一でUTF-16LEだろ。
- 290 名前:デフォルトの名無しさん mailto:sage [2014/08/17(日) 07:09:51.14 ID:2ZZ0upcs]
- ソースコードをどう書くかの話をしているときに
裏での見えないラッパーの話をされても >linuxと一緒でwchar_t版が不要だろ encoding-schemeとencoding-formの区別がつかない人はすっこんでてください
- 291 名前:デフォルトの名無しさん mailto:sage [2014/08/17(日) 13:30:39.71 ID:3OAkF9Uq]
- え?ソースコードのエンコーディングの話してたの?
- 292 名前:デフォルトの名無しさん mailto:sage [2014/08/17(日) 15:12:10.77 ID:H69Yv+5P]
- >>288
Win32(Windows NT)ができた当時はUTF-8なんてなかったんだからしょうがない。 というか、今のようにUTFなんちゃらが乱立する状況なんて想像されていなくて "UNI"CODEで文字コード問題は解決されると信じられていた時代だった。 #漢字Unificationの問題は別として。
- 293 名前:デフォルトの名無しさん mailto:sage [2014/08/17(日) 23:26:46.65 ID:3BRjkNZj]
- charと竹中直人は兄弟だと思っていた1977年の春。
- 294 名前:デフォルトの名無しさん mailto:sage [2014/08/18(月) 17:23:56.00 ID:ENGcdXzN]
- std::regexが思っていたより遅いんですが、より速い正規表現での検索を利用したい場合には何を使うといいですか?
grepソフトの検索はすごく速いので、正規表現のコストがこんなに高いとは思ってなかった
- 295 名前:デフォルトの名無しさん mailto:sage [2014/08/18(月) 17:26:46.65 ID:BFPWuSMs]
- 最適化入れてないとかデバッグモードで実行してるとかそういう話じゃないの
- 296 名前:デフォルトの名無しさん mailto:sage [2014/08/18(月) 17:42:45.77 ID:0GH1txVb]
- 何百回も呼ぶような場合はキャッシュというかコンパイルすべきかも
regcomp()
- 297 名前:デフォルトの名無しさん mailto:sage [2014/08/18(月) 18:16:45.57 ID:ENGcdXzN]
- Releaseモードにしたら劇的に速くなった
コンパイルもやってみます
- 298 名前:デフォルトの名無しさん mailto:sage [2014/08/18(月) 21:02:44.92 ID:0GH1txVb]
- いや、解決したならやらんでいい
- 299 名前:デフォルトの名無しさん mailto:sage [2014/08/18(月) 22:01:41.52 ID:uDUM2zni]
- >regcomp()
んなもんは無い。 >コンパイルすべきかも コンパイルするのが>>294に書かれてるstd::regexじゃねーの
- 300 名前:デフォルトの名無しさん mailto:sage [2014/08/19(火) 07:36:05.01 ID:tg7i16ue]
- >>299
> >regcomp() > んなもんは無い。 ググレカス
- 301 名前:デフォルトの名無しさん mailto:sage [2014/08/19(火) 12:02:47.11 ID:F3IU7kyP]
- >>294の質問をしたものだけど標準ライブラリのisupperが遅かったので、
代わりにwchar_tをintにキャストして、0x41〜0x5Aの範囲にあるかを調べる関数を作ったらだいぶ速くなりました これだけで大文字アルファベットを漏れなく拾えるかな? isupperが遅い理由はファセットがどーたらとあったけど、要するにすべての文字コードに対応する作業で遅い?
- 302 名前:デフォルトの名無しさん [2014/08/19(火) 12:32:08.96 ID:qv1p14qX]
- 正規表現の話で無くなってる。
あと文字コードによっては、英文字と2バイト長以上の文字に重複部分あるかもしれない。
- 303 名前:デフォルトの名無しさん mailto:sage [2014/08/19(火) 12:37:35.60 ID:F3IU7kyP]
- 文字列でなく1文字の判定をする部分があって、そこにまで正規表現を使うことはないだろうとisupperも試してみた結果です
日本でUnicode使う分には大丈夫そうかな
- 304 名前:デフォルトの名無しさん mailto:sage [2014/08/19(火) 20:41:30.24 ID:Mliou7o7]
- >>301
ctype.hのisupper()の実装は、配列を引いてand演算するぐらいだから速いと思うけど
- 305 名前:デフォルトの名無しさん mailto:sage [2014/08/19(火) 21:33:22.76 ID:APzI7Yv4]
- >>304
?
- 306 名前:デフォルトの名無しさん [2014/08/20(水) 16:13:47.13 ID:vZ4195p+]
- 列挙体にマイナスの値は許されていますか?
- 307 名前:デフォルトの名無しさん mailto:sage [2014/08/20(水) 16:24:48.87 ID:lf2AdZUe]
- >>306
許されてます。
- 308 名前:デフォルトの名無しさん mailto:sage [2014/08/20(水) 17:06:17.01 ID:cYiGvIKn]
- enum EnumDayo : unsigned long {
AAAA, BBBB, CCCC, }; もおk
- 309 名前:デフォルトの名無しさん mailto:sage [2014/08/20(水) 19:26:51.17 ID:YTuxoJAp]
- staticなメンバ関数内(TimerProcとか)でthisポインタを使うためにSetWindowLongPtr使うってあるけど
thisポインタを保持するstaticなメンバ関数(例えばSaveThis())をTimerProcで呼んでThisポインタ取得でもok?
- 310 名前:デフォルトの名無しさん mailto:sage [2014/08/20(水) 19:44:36.47 ID:lf2AdZUe]
- >>309
そこまでするならシンクルトンにしなよ
- 311 名前:デフォルトの名無しさん mailto:sage [2014/08/20(水) 20:24:01.41 ID:YTuxoJAp]
- 調べてみたらそのまんまだったありがとう
- 312 名前:デフォルトの名無しさん mailto:sage [2014/08/20(水) 21:28:31.99 ID:TfPzovZL]
- いい加減なやり方を教えるなよ
スレッドなりタイマーなり thisを渡せるように設計されてるだろ
- 313 名前:デフォルトの名無しさん mailto:sage [2014/08/20(水) 21:49:29.16 ID:G+JA3SG/]
- windows の話だとして スレッドなら this を渡す機構あり
タイマーは window proc/dialog proc の一部分でしかなく、そのインターフェース上には無い が、渡ってくる window handle や dialog param に this を持ち越す機構がある
|

|