16/09/13 04:10:18.62 ifCWTkZq.net
>>775
差分取るときホワイトスペース無視すればいいだろ
793:デフォルトの名無しさん
16/09/13 05:08:48.43 E9px3zRx.net
std::get_temporary_buffer ってなんであんなクソ仕様で作ったの
794:デフォルトの名無しさん
16/09/13 05:14:57.49 ifCWTkZq.net
それ知らんかったけどクソだからC++17でdeprecatedになるのか
795:デフォルトの名無しさん
16/09/13 07:08:31.21 fa0Yw14i.net
引数の異なる関数を関数テーブルにまとめる方法ヘルプミー
796:デフォルトの名無しさん
16/09/13 07:11:36.75 jvr3tDVu.net
型が違うから難しくね?同名でオーバーロードするんじゃだめなんかい。
797:デフォルトの名無しさん
16/09/13 07:21:28.20 6YUjJJm0.net
テーブルの別の要素で引数と返り値の型を記憶しておき、任意の関数ポインタ型にreinterpretして保存
呼び出し時は記憶した引数と返り値のの型に対応する関数ポインタ型にreinterpretしてから呼び出す。
798:デフォルトの名無しさん
16/09/13 07:56:45.02 BC6G6r/f.net
>>783
それどうやって使うつもりなの?
799:デフォルトの名無しさん
16/09/13 08:09:28.64 LgTr6ZxA.net
>>785
やはり別物で統一して記憶させるしかないか…
要は入れてから後にキャストだよね
>>786
関数群30ぐらいあるからそれを管理しやすくしたい
別にenumで関数名入れておくのと
関数名に対応したインデックス拾ってくる関数を用意しておいて
後に使いやすく
800:デフォルトの名無しさん
16/09/13 08:11:50.46 jvr3tDVu.net
酷い設計って言っていい?
801:デフォルトの名無しさん
16/09/13 08:20:36.44 BC6G6r/f.net
>>787
> 後に使いやすく
ごめん、全然使いやすくなるイメージがないんだが...
単にまとめときたいだけならクラス作って静的メンバ関数でいいような気がするし
802:デフォルトの名無しさん
16/09/13 08:29:56.17 LgTr6ZxA.net
>>789
関数名を別ファイルから取り出して動的に動かすためにはこれしかなかった
まとめておいてプログラム内で処理ならそれで良いけど
今のところそうなってるからそれに会わせるしかないんだ
803:デフォルトの名無しさん
16/09/13 08:32:38.69 jvr3tDVu.net
可変長引数取る関数内でスイッチするのと大差なさそう。
804:デフォルトの名無しさん
16/09/13 08:33:59.57 Dh1MHapU.net
>>791
はぁ??
805:デフォルトの名無しさん
16/09/13 08:39:26.37 LgTr6ZxA.net
>>791
結局どこかで分岐処理によるキャストするからほぼ変わらん気もする
これに関連する話だけど
int (*func)(void*)みたいな関数ポインタがあって
引数二つにするにはどうやってキャストしたら良いんだろうか
806:デフォルトの名無しさん
16/09/13 08:43:25.81 kwiFGb/T.net
まず関数の型をtypedefしようぜ。
807:デフォルトの名無しさん
16/09/13 08:47:38.13 GD/RUd4Y.net
windows のマクロまみれのメッセージディスパッチと同じようなことじゃろ
808:デフォルトの名無しさん
16/09/13 08:57:44.86 jvr3tDVu.net
URLリンク(ideone.com)
こういう感じのこと思いついたけど、できんかった。テヘペロ。
関数複製するんだから通ってほしいなぁ。
なんかテンプレマジックで通らんかなぁ。
809:デフォルトの名無しさん
16/09/13 09:02:38.95 jvr3tDVu.net
これができたら、ファクトリーメソッドがパラダイス。
810:デフォルトの名無しさん
16/09/13 09:51:20.93 jvr3tDVu.net
特定の型のパラメータパックってできなかったっけ?
Anyのパラメータパック食わせれば解決するんだけどなぁ・・・。
811:デフォルトの名無しさん
16/09/13 11:14:43.16 nTkG/AQ9.net
やりたいことにたいして少し大仰だが、Boost.Pythonのようなものでインタプリタからどうやって型安全に関数を実行してるか見たら少しは参考になるんじゃない?
812:デフォルトの名無しさん
16/09/13 12:49:03.21 BC6G6r/f.net
>>790
> 関数名を別ファイルから取り出して動的に動かす
なら初めからそう書いてよ
使いやすさ云々じゃないじゃん
関数名を特定するのはいいけど引数は関数毎にバラバラなんでしょ?
結局どこかで分岐が必要な気がする
それとも引数は Variant みたいななんでも入れられる変数の配列にしてしまうとか
813:デフォルトの名無しさん
16/09/13 17:00:07.27 dUelqKgA.net
>>783
#include <functional>
double foo(double x) { return x; }
int bar(int x) { return x; }
int main()
{
std::function<double(double)> table[2];
table[0] = foo;
table[1] = bar;
}
814:デフォルトの名無しさん
16/09/13 18:18:50.00 LmZnag12.net
>>801
コードサンクス
ただこれはintとdouble型に対してだからできるんじゃないのだろうか
>>800
そういうことだね
だからどこかでキャストし直す必要がある…はず
あらかじめどこかにパターンを定義しておいてそれはもうスイッチ文に頼るしかないかなって考えてる
815:デフォルトの名無しさん
16/09/13 18:20:35.88 LmZnag12.net
>>797
俺もパラダイスを目指している
Cならエラー出ずにできるみたいなんだよね
C++でxmlをjsonにパースしたり
jsonを簡単に読み込む方法ってあったっけ?
ないならC#も考えないとな…
816:デフォルトの名無しさん
16/09/13 19:01:39.86 bDDPvjQm.net
実行時に文字列を比較して分岐することのどこにパラダイスを見いだせるんだよ
817:デフォルトの名無しさん
16/09/13 20:22:41.37 BC6G6r/f.net
>>803
調べてないけどライブラリぐらいあるんじゃね?
818:片山博文MZ ◆T6xkBnTXz7B0
16/09/13 21:57:21.43 7T7m5n2i.net
質問です。
placement newの関数の宣言と定義はどこに書くのが正解ですか? よろしくお願いします。
819:デフォルトの名無しさん
16/09/13 22:04:54.99 6F1+hrdF.net
>>805
picojsonとやらを使ってみた
便利なんだけど配列二つあると積む現象が起きてしまった…
820:デフォルトの名無しさん
16/09/13 22:23:58.73 eOd6ZBDo.net
jscriptで読めるから
WSHでアプリで実行
821:片山博文MZ ◆T6xkBnTXz7B0
16/09/13 22:34:06.63 7T7m5n2i.net
ReactOSというOSの開発をしています。
ヘッダー<new>と<crtdbg.h>のnewの宣言が衝突していて、<new>が使えません。
どうしたら正しく配置newが使えますか?
822:デフォルトの名無しさん
16/09/13 22:52:09.89 7Uxx8QPD.net
自分のソフトの販売権がカシオが取得とかねつ造してたやつだ
823:片山博文MZ ◆T6xkBnTXz7B0
16/09/13 22:59:05.82 7T7m5n2i.net
わかりました。ReactOSのSTLかCRTのコードが間違っているということですね。
配置newは<new>をインクルードしたら使えなければおかしい。
824:デフォルトの名無しさん
16/09/13 23:06:52.68 7T7m5n2i.net
自分の商品の販売権をどう決めようが勝手でしょう。会社名を出したのは悪かったが。
825:デフォルトの名無しさん
16/09/13 23:08:15.35 jz2gr8q/.net
ライバル会社かなにか?
826:デフォルトの名無しさん
16/09/13 23:15:36.33 7Uxx8QPD.net
>>812
おまえカシオが権利を所有とか書いてたんだろ
カシオと専売契約交わしたみたいに書いてたろ
カシオが知らんと思うてか
827:デフォルトの名無しさん
16/09/13 23:21:08.73 7T7m5n2i.net
>>814
誤解です。メールで交渉中でした。
828:デフォルトの名無しさん
16/09/13 23:29:04.40 7Uxx8QPD.net
>>815
うそつけこら。おまえがメール送ってただけやろが。
往生際が悪い。全部バレとんねん
狭い業界でごまかせるとおもうなよ
829:デフォルトの名無しさん
16/09/13 23:33:01.44 7T7m5n2i.net
すみません
830:デフォルトの名無しさん
16/09/14 00:03:18.61 3NkcLiKm.net
反省してます
831:デフォルトの名無しさん
16/09/14 01:01:49.61 QlIAHX1m.net
なんやなんや
832:デフォルトの名無しさん
16/09/14 02:49:36.41 Xhtlj9Sh.net
マトラボスレ勢いなさすぎ。
誰かイコライザのコーディング教えてくれや
833:デフォルトの名無しさん
16/09/14 03:15:05.48 Pl2/S2ti.net
イコライザってなに?
834:デフォルトの名無しさん
16/09/14 03:18:25.05 EjX8GKMV.net
信号処理
835:デフォルトの名無しさん
16/09/14 03:53:21.14 qczVS6OA.net
FFTか。言葉しかしらん。
836:デフォルトの名無しさん
16/09/14 04:57:26.35 8Y7m8SBN.net
高速フーリエ変換か
837:デフォルトの名無しさん
16/09/14 08:16:10.34 58JMlqKS.net
placement newの関数を自分で書く素振りを見せながら
newをインクルードとか、何言ってんだか。
標準ヘッダーが衝突するなら処理系作った奴に聞け
838:片山博文MZ ◆T6xkBnTXz7B0
16/09/14 11:33:48.49 3NkcLiKm.net
>>825
ありがとうございます。
839:デフォルトの名無しさん
16/09/14 18:34:08.81 O92aoqkR.net
CppUnitによるテストって登録件数が多くなった場合…なんとかならんもんかね
1000を越えるとかマジで嫌なんだが
840:デフォルトの名無しさん
16/09/14 18:59:00.04 EjX8GKMV.net
何が嫌なんだ
時間がかかるってことなら分割したらいいじゃないか
841:デフォルトの名無しさん
16/09/14 19:15:10.96 O92aoqkR.net
>>828
コードがめっっっちゃ汚くならね?
1000個テストするなら1000行似たこと連続で書くんでしょ?
842:デフォルトの名無しさん
16/09/14 19:27:01.68 EjX8GKMV.net
>>829
テストコードも名前を付けてモジュール化すればすれなりに見やすくはなるんじゃないか
どこで何のテストをしているか見つけやすくなるし
843:デフォルトの名無しさん
16/09/14 19:57:41.83 C1VR7bWr.net
>>830
ファイル分割するってことだろうか?
844:デフォルトの名無しさん
16/09/15 00:14:31.25 SldeaLfO.net
別にそれCppUnit 固有の問題じゃねーじゃん。
お前のテストコード作成全般の問題だろ。
845:デフォルトの名無しさん
16/09/15 01:28:50.14 NSWALpAD.net
>>829
「似たこと連続で」ならマクロでも何でも使ってまとめりゃいいだろ。
846:デフォルトの名無しさん
16/09/15 06:31:33.82 eCorjc8D.net
URLリンク(ideone.com)
URLリンク(nonbiri-tereka.hatenablog.com)を見て勉強中なのだが、
なぜ、test_addでaddをラップしてるのかがわからない
addに引数を持たすことが出来ないのか。
また、addの足し算が引数をaが1-100だった場合、今の俺では100個記述することになる
マクロを使用とかすれば解決できそうだけど、適切に使う方法が思いつかないんだ…
外部ファイルとかからの読み込みでも良いので何かしらヘルプ・・・・
void FunctionTest::test_add(){
CPPUNIT_ASSERT_EQUAL(3+2,func->add(3,2));
}
この部分を何個も書いて
CPPUNIT_TEST(test_add);//メンバ関数の登録ってのを
CPPUNIT_TEST(test_add);//メンバ関数の登録
CPPUNIT_TEST(test_add1);//メンバ関数の登録
CPPUNIT_TEST(test_add2);//メンバ関数の登録
.....となってしまう
847:デフォルトの名無しさん
16/09/15 08:43:36.54 wjxOqoMl.net
コンパイル時と実行時の違いがあるから直接指定はできないよ。
lambdaとかbindでいけんじゃね?試してないけど。
848:デフォルトの名無しさん
16/09/15 09:20:50.32 Dfv6m4lx.net
凝ったことをした挙句テスター自体にバグ仕込んでテスト無効とか馬鹿らしいから
1回きりと割りきってシンプルに書くという考えもある
849:デフォルトの名無しさん
16/09/15 10:13:14.67 dJJn2WBE.net
template<typename...Args> void hoge(Args...args){}
hoge({1,2,3});
としたら
hoge(std::initializer_list<int>)
のように推論して欲しいのですが何故できないのですか
850:デフォルトの名無しさん
16/09/15 10:40:36.62 krf6YZ+h.net
URLリンク(ideone.com)
851:デフォルトの名無しさん
16/09/15 10:41:24.48 krf6YZ+h.net
投稿を暴発してしまった。
自動では推論してくれないみたいだねぇ。なんでだろう・・・。
852:デフォルトの名無しさん
16/09/15 14:05:17.34 OOrl8bCH.net
勝手に変換されても困るべ
853:デフォルトの名無しさん
16/09/15 16:06:02.66 qnepHcI/.net
C++PRIMER 5TH KINDLE版でシコシコするのはどう思いますか。
尼ではさっぱり人気がないようですが。
854:デフォルトの名無しさん
16/09/15 16:40:29.83 gyul79OX.net
あの手の本は意味がないよ
どんだけ、言語の仕様に詳しくなっても何の得にもならんからな
855:デフォルトの名無しさん
16/09/15 19:22:13.92 BBoNUH+R.net
熱い江添批判
856:デフォルトの名無しさん
16/09/15 20:07:08.11 95/CUQAP4
おっと江添の悪口はそこまでだ
857:デフォルトの名無しさん
16/09/15 20:07:39.04 axqGMSjf.net
おっと江添の悪口はそこまでだ
858:デフォルトの名無しさん
16/09/15 20:59:53.90 XkA1sBZN.net
少なくとも言語仕様を把握してない奴にライブラリは作って欲しくない
859:デフォルトの名無しさん
16/09/15 21:49:37.24 7lTxlp13.net
つまりハゲはライブラリ作るな
860:デフォルトの名無しさん
16/09/15 21:50:15.59 umQizf+V.net
言語仕様が
げんこつ塩ラーメン
に見えた
ちょっと夜食食ってくる
861:デフォルトの名無しさん
16/09/16 06:27:51.21 nhdK38ZD.net
「言語仕様」→「げんごしよー」→「げんこつしおらーめん」
漢字の視覚情報として入力されたパターンを、
脳内でいったん音声情報に変換してから似た言葉に錯誤したのね。
俺の認識手順と違うみたいなので理解するのに手間取った。
862:デフォルトの名無しさん
16/09/16 07:23:14.79 1ml378Vd.net
>>849
言語仕様の後にライブラリのラだけ見えたからさらに連想を促進した
863:デフォルトの名無しさん
16/09/16 09:43:39.74 wscqtQV8.net
おまえらハゲを敬え
864:デフォルトの名無しさん
16/09/16 10:02:58.29 q1C1+fLl.net
URLリンク(dnaimg.com)
865:デフォルトの名無しさん
16/09/17 19:36:33.08 /lrAuukn.net
ハゲ(笑)
866:デフォルトの名無しさん
16/09/17 20:17:46.81 n9MPs/HW.net
ハゲが世界の技術を支えてる
867:デフォルトの名無しさん
16/09/18 00:04:19.65 5e40+2Z7.net
VSのリードプログラマもハゲだな
868:デフォルトの名無しさん
16/09/18 00:05:00.62 +iC0HZAY.net
ハゲが好きだなお前ら
869:デフォルトの名無しさん
16/09/18 00:23:27.97 +IdphFbB.net
ハゲは絶倫!
870:デフォルトの名無しさん
16/09/18 00:45:36.25 5e40+2Z7.net
質問なんだけどnewするとき例外処理する人はvectorとかでpush_backする時も毎回tryしてんの?
871:デフォルトの名無しさん
16/09/18 02:44:35.25 9+5kS6ok.net
してると言えばしてるけど、多分君の思ってる感じではしてない。
872:デフォルトの名無しさん
16/09/18 02:48:48.02 9+5kS6ok.net
例外は例外的にしか発生しないので、層の上の方の集約するポイントでcatchしてる。
あんまり細かくやっても意味ないしハゲる。
873:デフォルトの名無しさん
16/09/18 03:18:08.82 +iC0HZAY.net
つーか、例外発生する可能性のある箇所でcatchしないとかないでしょ
874:デフォルトの名無しさん
16/09/18 03:29:47.07 L03d0R0a.net
あまり細かい事気にしてるとハゲるよw
875:デフォルトの名無しさん
16/09/18 03:43:50.19 1yHXSEjx.net
問い1「newするとき毎回try catchするバカはvectorのpush_backもtry catchするのか?」
答え「している可能性あり」
問い2「newするとき毎回try catchするバカは非noexcept関数の呼び出しも毎回try catchするのか?」
答え「バカの行動は一貫性が無いのでしていないだろう」
876:デフォルトの名無しさん
16/09/18 04:12:03.01 CEGgaeCy.net
// Aをnewしてveにpush_back
// push_backは落ちないようcatchのおまじない必須
try { ve . push_back( new A( new R(), new S() ) ); }
catch ( ... ) {}
877:デフォルトの名無しさん
16/09/18 04:50:42.33 EIh/dcA1.net
そんな基本的なコンテナのエラーを、catchしても、
プログラマーが回復させることは出来ない
強制終了されるままにしておいた方がいい
下手すれば、エラーログに書き込む際、さらにエラーが起きるかも
878:デフォルトの名無しさん
16/09/18 05:42:12.02 +IdphFbB.net
クラスの型が一致しなくてcatch出来なかった例外は一体何処へ吹っ飛んでいくのだろうか…
879:デフォルトの名無しさん
16/09/18 06:02:09.25 +jQZdVYD.net
NULLチェックしろよとチェックツール使った品質チームが指摘してくるんだが、そもそもnew失敗したら例外になるからNULLチェックまで来ねーだろ、お前のチェックチーム馬鹿すぎだろって突っ込みを誰もしないで数年
880:デフォルトの名無しさん
16/09/18 06:29:33.73 CQAObZ4Q.net
バカってなんでnewしたがるんだろう
881:デフォルトの名無しさん
16/09/18 06:44:28.23 xYSNtktv.net
>>867
チェックツールが古い仕様向けに作られているのだろうか。
newが失敗した場合はNULLが返る、だからnewの後は常にNULL(ポ)を確認せよ。
指摘を聞き流すだけでなく、チェックする部署の人に
ツールのバージョンだか設定だかを現状に合うように改めてもらったら?
882:デフォルトの名無しさん
16/09/18 08:41:57.71 TydQpzdL.net
pimpl = new impl;
if(pimpl == nullptr) []()[[maybe_unused]]{throw std::bad_alloc();}();
883:デフォルトの名無しさん
16/09/18 08:48:34.25 2blUzsBI.net
c++ は最新仕様だけ覚えていればいいってもんではない。
884:デフォルトの名無しさん
16/09/18 09:21:00.65 /1FlYzFJ.net
>>868
make_uniqueはコンストラクター引数の補完が働かないので使いづらい
885:デフォルトの名無しさん
16/09/18 09:22:05.47 6SQSBv8I.net
仕様だけは詳しいが、実務は全くできない奴いるなw
正直最新の仕様なんかについてうんちく垂れるより、古い仕様でもきちんと動くほうがいい。
中には、よくわからずに使って、はまって納期遅れさせるバカもいるwwww
886:デフォルトの名無しさん
16/09/18 09:33:08.57 1yHXSEjx.net
日本語が理解できずに話をすり替えてしまう>>871みたいな低能や
例外処理の基本も理解できていない>>865みたいな低能が
その品質チームとやらにいるんだろう
887:デフォルトの名無しさん
16/09/18 10:19:05.24 EIh/dcA1.net
new にも、NULLを返すバージョンと、例外にするバージョンなど、色々あるんじゃね?
888:デフォルトの名無しさん
16/09/18 11:18:56.17 WPlu++Kc.net
例外処理って目的によって異なる
素直にシステムがエラー吐いて終了で問題ない場合
特定のエラーを検出して改善の為のログを残したい場合
止まると困るシステムの場合十分なリカバリー手段を用意して例外検出と復旧処理を行う
通常のアプリケーションにnew なんて使わないって書いてあったけど
プログラムの目的とエラーに対する必要な強度を仕分けして
全体としてどの様に例外処理を組み込むかって事だよね
889:デフォルトの名無しさん
16/09/18 14:08:31.95 5e40+2Z7.net
やっぱりC++って集団で使うのには向いてないんだよね
どのC++の話してるか分からないか
890:デフォルトの名無しさん
16/09/18 14:09:15.23 EIh/dcA1.net
ゲームエンジンの本には、自分でメモリプールを作っている例が、よく載っている
newをその都度呼ぶと遅いから、まとめて何十個分のメモリを確保する。
そしてその中から、今使う分だけを使う
でも、それぐらいの機能、既に誰かが、ライブラリを作っていそうなもんだが
891:デフォルトの名無しさん
16/09/18 14:14:46.13 /A9gXhFE.net
boost.pool
892:デフォルトの名無しさん
16/09/18 14:42:48.66 5e40+2Z7.net
もちろんメモリプールなんてたくさん出回ってるし今度標準にも入る
でもそれらの性能が十分とは限らない
893:デフォルトの名無しさん
16/09/18 14:43:41.47 Qq7O8IvU.net
昔、lokiとかあったやん?
使ったこと無いからしらんけど
あれにもメモリプールなかったっけ
894:デフォルトの名無しさん
16/09/18 15:03:20.15 vvzKkhQt.net
>>869
えええええええ
いつからそんなクソ仕様になったん…
例外じゃないのか
895:デフォルトの名無しさん
16/09/18 15:26:11.91 vvzKkhQt.net
と思ったけどC++て全部チェック例外だっけ
newのたびにtryさせられるよりsegmentation faultのほうがマシだな
896:868
16/09/18 16:16:16.34 xYSNtktv.net
>>882
勘違いさせたならすまん。>>869 で書いた
「newが失敗した場合はNULLが返る、だからnewの後は常にNULL(ポ)を確認せよ」
っていう方が古いC++でのnewの動作ね。
古いチェックツールがそんなエラーを返してるんじゃないの? という意図。
現在はnewの失敗は例外が返るのがデフォルト動作だよな。
nothrowで例外を出さないように指示したら今でもnullptrが返るけど。
897:デフォルトの名無しさん
16/09/18 16:24:41.60 ygUqx6Ix.net
>>883
C++は全てjavaでいう非チェック例外じゃないの?
898:デフォルトの名無しさん
16/09/18 16:45:14.01 /VzCUPpk.net
お前らの例外話は何故いつもnewなのか
899:デフォルトの名無しさん
16/09/18 17:36:57.68 5e40+2Z7.net
newにおける例外の扱いのベストプラクティスが示されていないから
900:デフォルトの名無しさん
16/09/18 17:37:48.57 +iC0HZAY.net
ないものは自分で見つけんだよ
901:デフォルトの名無しさん
16/09/18 18:15:15.56 sUrpOA8l.net
ひょえー
902:デフォルトの名無しさん
16/09/18 18:28:35.89 L03d0R0a.net
うはー
903:デフォルトの名無しさん
16/09/18 19:43:10.68 1yHXSEjx.net
>>886
newを見るとすぐtry catchで囲わないといけないと妄想してる882みたいな低能が多いからでは?
catchを見ると「近くにnewが有るはず」と脊髄反射したに相違ない
904:デフォルトの名無しさん
16/09/18 19:45:44.60 XW30Cfu8.net
それよりもnullチェックってどうやるのがスマートなんだ?
使ってるvector全部をif文にぶち込んでるコード見かけて驚愕したんだが
905:デフォルトの名無しさん
16/09/18 20:00:16.67 aEHfUxVO.net
vectorに挿入する前にチェックすればいい
906:デフォルトの名無しさん
16/09/18 20:06:12.23 5e40+2Z7.net
一部の用途を除いてnewが失敗する可能性は考えなくていい
907:デフォルトの名無しさん
16/09/18 21:15:21.06 sUrpOA8l.net
説明願います
908:デフォルトの名無しさん
16/09/18 21:23:31.21 ORSLx8xU.net
VBのCSV出力が遅いんだけど
Cで書いたら速くなんの?
909:デフォルトの名無しさん
16/09/19 01:02:18.86 aveOgqLD.net
むしろその手の処理はVBの方が速い
910:デフォルトの名無しさん
16/09/19 01:04:42.68 aveOgqLD.net
>>885 んなこたーない
912:デフォルトの名無しさん
16/09/19 12:39:37.38 d/dsjAXw.net
>>896
文字列連結を馬鹿みたいに繰り返して遅くなってるんじゃないの
913:デフォルトの名無しさん
16/09/19 12:39:37.43 d/dsjAXw.net
>>896
文字列連結を馬鹿みたいに繰り返して遅くなってるんじゃないの
914:デフォルトの名無しさん
16/09/19 12:51:32.58 0BKQBe6K.net
かなり大事な事ですねw
VBとかC#で遅いからといってCやC++にしたところで劇的に速くなる保証なんかないのにな
何の言語にしようがどうしようもないか自分の組み方がおかしいかどちらか
915:デフォルトの名無しさん
16/09/19 13:10:11.98 fA1B/38Y.net
>>896
ファイル出力が遅いのかテキストの組み立てが遅いのか
916:デフォルトの名無しさん
16/09/19 13:15:05.33 3VQNeREi.net
VBのCSVライブラリ使ってるなら、
規格(?)に準拠するようにいろんな処理してるから
かなり遅いっぽいぞ
エスケープが要らないとかダブルクォーテーションが要らないとか
条件を限定できるなら高速化の余地もあるんでないかい
917:デフォルトの名無しさん
16/09/19 13:17:08.06 MZBT2IFS.net
>>899>>902>>903
おまえらこのスレで面倒見るつもりなのw?
918:デフォルトの名無しさん
16/09/19 19:50:10.96 urF+pqo3.net
むしろ同じロジックでコードを書いて比較してほしい。
919:デフォルトの名無しさん
16/09/19 19:55:07.34 80/BHnqI.net
アルゴリズムの選択を誤ればJavaにすら負ける
大事なのはアルゴリズム
920:デフォルトの名無しさん
16/09/19 20:12:40.99 sZXP+7ot.net
Javaで適切なアルゴリズムを使うPGと同一人物が
C++で不適切なアルゴリズムをわざわざやるかよ
同一人物が使ってどっちが優れた結果を出せるかだろ
921:デフォルトの名無しさん
16/09/19 21:10:21.81 urF+pqo3.net
ここではアルゴリズムってよりライブラリ依存だな。
CSVのパースは真面目にROC準拠でやろうとすると頭が禿げるぐらい面倒くさい。
現実に扱うCSVはもっと前提条件を少なくできるだろうから、
自分で簡易版のパーサーを実装した方がいいかも。
922:デフォルトの名無しさん
16/09/19 22:22:17.19 aveOgqLD.net
ROCってのが何なのかわからんが
RFC 4180なら所詮ワンパスなのでそんなに難しくない。
C#で自作したものをブビライブラリと比較したら10倍程度の速さだった。
どうせTextFieldParser使ったんだろ
923:デフォルトの名無しさん
16/09/19 22:40:37.56 Kz778z8P.net
CSVなんかただの記号区切りのテキストファイルだろ。
区切ってテキスト出力すりゃええだけじゃろ
924:デフォルトの名無しさん
16/09/19 22:50:33.73 w3ljrVli.net
質問者は出力について悩んでいる人に
パーサーの自作をすすめる
これがクソスレのクオリティ
925:デフォルトの名無しさん
16/09/19 23:03:23.99 eTcqfU0K.net
パーサー次第で出力に差が出るだろう、そんなことも分からんのか???
926:デフォルトの名無しさん
16/09/19 23:41:33.03 byZSyyWN.net
テキトーな仕様のオレオレCSVの自作を勧める奴がいまだに存在するとは。
927:デフォルトの名無しさん
16/09/19 23:45:11.41 r/G6SK9c.net
1行ずつ読んでいくんじゃないのか
928:デフォルトの名無しさん
16/09/19 23:47:22.25 pyTHmoe6.net
オレオレ仕様のcsvが氾濫してるから今更どうしようもない
それが問題になるようなら保存形式にcsvを用いる事自体が間違い
929:デフォルトの名無しさん
16/09/19 23:49:18.87 r/G6SK9c.net
csvってカンマ区切りということ以外の仕様ってあるのか?
930:デフォルトの名無しさん
16/09/20 00:09:05.24 Em9B638f.net
無い
オレオレの中でもメジャーなのに後付けでRFCが出来ただけ
931:デフォルトの名無しさん
16/09/20 00:30:40.31 o1tJ3Pdk.net
>>907
普通に見たことあるけど
vectorじゃなくlist使って遅いとか
>>911
質問読めてない糞民が何言ってんだか
932:デフォルトの名無しさん
16/09/20 02:23:46.55 E+J9y3sP.net
ポインタの無いC++を誰か作ってくれないかな…。
933:デフォルトの名無しさん
16/09/20 03:38:57.96 MJf3DPDB.net
>>919
C++なら、あんまりポインタ意識しなくてもできるでしょ。
ライブラリが吸収してくれるんだし。
934:デフォルトの名無しさん
16/09/20 06:57:10.89 83nQEiQC.net
> vectorじゃなくlist使って遅いとか
Javaしか使えないやつの付け焼き刃か
935:デフォルトの名無しさん
16/09/20 07:29:03.31 l/rjpK7G.net
>>916
区切り文字(カンマと改行)をデータとして含む場合にどうするかについての仕様がある。
それが面倒くさいなら最初からタブ区切りテキストにしておけと思うが。
936:デフォルトの名無しさん
16/09/20 07:41:11.11 h/QlA5En.net
ここで休んでいくか
URLリンク(o.8ch.net)
937:デフォルトの名無しさん
16/09/20 08:17:39.33 yT+pR0RD.net
CSVは汎用性とか規格準拠とか考え始めると面倒らしいね。
カーニハンとパイクの有名な『プログラミング作法』第4章でも
素朴なプロトタイプから汎用ライブラリに磨き上げていくネタに使われてる。
引用符でくくられた文字列フィールドに含まれるカンマを読み飛ばすとか、
文字列に引用符文字を含ませる場合のエスケープ処理、
フィールド先頭以外にいきなり出てきた引用符文字はどう扱うべきか、
そういった問題。
結局、仕様のあいまいな部分は、データをExcelに処理させて
どう解釈するかを観察し、それに動作を合わせるという妥協策とか。
面白いけど奥深い(面倒くさい)話が載ってる。
938:デフォルトの名無しさん
16/09/20 08:23:33.04 pi/Zyw6M.net
面倒くさがりの俺はカンマのあとのスペースの扱いをどうするか考えるのをやめた
939:デフォルトの名無しさん
16/09/20 08:30:50.00 nnGYYj6O.net
実際問題、業務で扱うCSVがRFCにそってた試しがない
データ中に,とダブルクォーテーションがないこと前提で全フィールド囲みなしとか
データの改行かどうかはフィールド数から判断しろとか
940:デフォルトの名無しさん
16/09/20 08:34:47.14 9l0NUqqb.net
空白は有効な値として取り込みマズければ前処理でなんとかしてくれというのがかんたん
941:デフォルトの名無しさん
16/09/20 08:49:26.68 pi/Zyw6M.net
>>927
空白のあとの引用符出現とか考えると面倒
942:デフォルトの名無しさん
16/09/20 15:15:36.96 sn1HJBVo.net
裏でExcel立ち上げてそいつにCSV読み込ませる
ってのがスマートなやり方かもしれん。
943:デフォルトの名無しさん
16/09/20 16:11:59.45 83nQEiQC.net
手作業でか? COM使えよ
944:デフォルトの名無しさん
16/09/20 16:34:35.12 83nQEiQC.net
ところでさ
bitsetって複数ビットへのアクセスってできたっけか?
00001111 から
0001 のprvalueを得たり、
00000000 を
00011100 にするのに
bs(4,2) = 0b111; みたいなこと
945:デフォルトの名無しさん
16/09/20 18:42:56.25 yRlSWmtK.net
今すぐN4606をダウンロードして20.9を読め
946:デフォルトの名無しさん
16/09/20 19:03:07.64 ChLW8Xs7.net
C++標準についてですが
よく言われる「ゼロオーバーヘッド原則」はどのように守られているのでしょうか?
たとえば委員会はこの原則を明文化して守っていますか?
または原則が委員の思想や感情だけによって守られていますか?
今後のアップデートにより破られることはありますか?
D&Eには「思想も進化する」というような文が見られますが設計思想の変更プロセスはマニュアル化されているのでしょうか?
947:デフォルトの名無しさん
16/09/20 20:52:23.19 DFwXwRkO.net
ゼロオーバーヘッドの意味するところはなんなのか知らんが、
仮想関数使った時点で間接参照になって現代のキャッシュマシンには厳しいオーバーヘッドになっていると思いますけどね。
948:デフォルトの名無しさん
16/09/20 20:54:50.75 ChLW8Xs7.net
たぶんあなたは「ゼロオーバーヘッド原則」を何かわかっていないですね。
とにかく標準規格の委員会の設計方針のルールをしりたいのです
949:デフォルトの名無しさん
16/09/20 20:58:56.89 k+TyjvZt.net
キタ━━(゚∀゚)━━!!
950:デフォルトの名無しさん
16/09/20 21:04:19.73 obZzfy4A.net
そりゃ原則なんだから、原則守られるだろう。
原則Goto文が使われる事は絶対無いのと同じだ。
951:デフォルトの名無しさん
16/09/20 21:10:11.42 3ENBAG3F.net
てかここで聞く質問じゃないだろ。直接委員会にメール送れよ。
952:デフォルトの名無しさん
16/09/20 21:12:30.36 DFwXwRkO.net
>>938
知らないなら答えないでください
とかいいだすぞwwwwwww
953:デフォルトの名無しさん
16/09/20 21:16:42.79 tBN6CcRw.net
よし教えてやろう
その言語機能を使わない人にとって(マシン語レベルで)余分な命令が生成されないこと
ただしそれは書いたコードに対する局所的なもので
スタートアップ時の処理のオーバーヘッドやワーキングセットの肥大化によるキャッシュヒット率低下ついては触れないのが常
954:デフォルトの名無しさん
16/09/20 21:17:17.91 5hgqMPTY.net
あかんやつか
955:デフォルトの名無しさん
16/09/20 21:57:22.02 83nQEiQC.net
>>932
それはともかく、おまえは氏ね
956:デフォルトの名無しさん
16/09/20 21:59:44.26 26fGody7.net
>>933
明文化されたルールはないんじゃない?ルールにするメリットないからやらないだろうし。
957:デフォルトの名無しさん
16/09/20 22:01:25.46 83nQEiQC.net
ヘリコプターがシアトル付近を飛行中に、ナビゲーション・システムと通信系が故障してしまい、現在位置を把握することができなくなってしまった。
機長は、近くに見えた高いビルにヘリコプターを寄せ、周りを旋回しながら、副操縦士に「私は今どこにいますか?」と大きな紙に書かせ、それをビルの中の人間に見せるように命じた。
ビルの中の人間は、大きな紙に「あなたは今、ヘリコプターの中です」と書いて答えてきた。
958:機長はにっこりと笑って手を振り、副操縦士に言った。 「あれはマイクロソフトの本社ビルだ。ここから東へ向かえば空港があるはずだ」 「どうしてマイクロソフトの本社ビルだと分かったんです?」 「奴らはいつも、技術的には完璧だが、まったく役に立たない答えしか寄こさないからさ」
959:デフォルトの名無しさん
16/09/20 22:15:01.88 ChLW8Xs7.net
>>943
そうですか。ありがとうございます。
960:デフォルトの名無しさん
16/09/20 22:16:07.34 Em9B638f.net
>>933
そんな自縄自縛ルールを明示したらjavaみたいになってしまうだろ。
961:デフォルトの名無しさん
16/09/20 22:26:54.29 A2psZARz.net
>>912
えっ
962:デフォルトの名無しさん
16/09/20 22:51:13.68 9l0NUqqb.net
>>940
そんな機種依存の最適化を気にするのも広い意味でオーバーヘッドや
963:デフォルトの名無しさん
16/09/20 22:54:34.83 wtHZC2ze.net
>>931
bitsetは改良したらもっと使われると思うんだけどなあ
boostみたいにサイズを動的に変えられるようにするのとバイト列として取り出せるようにして欲しい
964:デフォルトの名無しさん
16/09/20 23:04:57.83 2u6BtGm8.net
>>947
バカにふれるな
965:デフォルトの名無しさん
16/09/20 23:45:29.10 g6KAU3qV.net
ゼロヘア・アラウンド・オーバーヘッドの略
966:デフォルトの名無しさん
16/09/21 01:01:45.84 vGo10QGu.net
>>933
江添に訊け
967:デフォルトの名無しさん
16/09/21 06:53:20.55 t4AsfpX5.net
>>949
サイズを動的に変えるとなるとメモリーアロケーションが必要になるからなぁ
上限を 32bit/64bit に制限する手もあるけど中途半端感が拭えないし...
そもそも普通にビット演算で事足りるし
968:デフォルトの名無しさん
16/09/21 09:03:47.17 K2D2Rq8+.net
>>933 は例の人物の再来って感じだなぁ。
前スレッド終盤から、このスレッド序盤で活動した人の口調(文体)に似ている。
自分が理解しているレベルにぴったり適合し、自分が理解できる説明をされないと
「そんなことは聞いていません」「もっと実のある回答をお願いします」などと
慇懃無礼な態度で読み手の神経を逆撫でする質問者がいたんだよ。
ちなみに >>933 の質問には答えられません。
969:デフォルトの名無しさん
16/09/21 10:48:52.21 7D4j/v4w.net
シュトラウプ(うろ覚え)さんに直接メールすれば答えてくれそう。
そんな英語力は無いんだろうけど。
970:デフォルトの名無しさん
16/09/21 14:04:05.66 6wq1WTZb.net
>>949 >>953
thx
なさそうってことはわかった
971:デフォルトの名無しさん
16/09/21 20:33:55.57 mzpKxj3U.net
>>954
神経を逆撫でをしたレスには見えたが
回答者がアスペな回答をしたからだったと記憶しているが。
お前、その時の回答者か?
972:デフォルトの名無しさん
16/09/21 20:59:57.83 6wq1WTZb.net
スルー検定中
973:デフォルトの名無しさん
16/09/21 21:04:36.22 49I69gX0.net
ここもワッチョイ入れた方がいいと思うよ
C#の初心者スレとか酷かったのが大分良くなったし
974:デフォルトの名無しさん
16/09/21 23:57:14.58 juClqO0A.net
>>952
メールしてみゆ
975:デフォルトの名無しさん
16/09/22 00:08:42.02 G5ENlyOZ.net
諸事情と成り行きでコンストラクタがこんな風になったんだけど糞コードですか?
hoge(bool type) : base(type ? static_cast<base>(new a) : static_cast<base>(new b)){}
976:デフォルトの名無しさん
16/09/22 00:19:01.74 RtaHiGLM.net
>>961
ポインタがstatic_cast<base>できるのか?
977:デフォルトの名無しさん
16/09/22 00:21:49.80 G5ENlyOZ.net
>>962
ミス
正しくはstatic_cast<base*>
978:デフォルトの名無しさん
16/09/22 00:46:02.45 Pt+3vwTk.net
実装はどうでもいいが
boolを取ってそれによってインスタンスの性質が(大きく?)変わるコンストラクタというのが
�
979:�用者視点からの一般論では糞っぽい設計だな
980:デフォルトの名無しさん
16/09/22 00:54:34.74 6AgJgQbd.net
static_castしてる意味が解らん
981:デフォルトの名無しさん
16/09/22 01:00:01.33 G5ENlyOZ.net
>>965
三項演算子だから型を合わせないといけない
982:デフォルトの名無しさん
16/09/22 01:44:09.82 eab4XCGG.net
hogeにcreate_aとcreate_bみたいなstaticメソッド作って、ユーザーコード側で参考演算子書かせりゃいいのに
馬鹿すぎてそんなことも思いつかないなら、今すぐコプログラマーやめろ(´;ω;`)
983:デフォルトの名無しさん
16/09/22 01:59:14.64 sh3eyHdy.net
きっと何かのテンプレートか何かに渡すとかで
コンストラクタがあの形じゃなきゃダメな制約が云々でしょ
984:デフォルトの名無しさん
16/09/22 02:01:04.64 G5ENlyOZ.net
>>967
これが全く良くないのは分かってるがやりたくなさすぎる仕事だったから横着しすぎた感はある
985:デフォルトの名無しさん
16/09/22 03:01:20.41 7BuONNwf.net
>>145
S只
ST只
STL只
貞子
986:デフォルトの名無しさん
16/09/22 04:45:30.88 uum3cLOt.net
new bって初心者っぽい
987:デフォルトの名無しさん
16/09/22 05:28:33.71 gyLxLatL.net
>>967
参考にします
988:デフォルトの名無しさん
16/09/22 07:30:27.01 RG/iP2c6.net
ファクトリーメソッドが要るとみんなは気付いているが
政治的問題でなし崩しになっていると見た
989:デフォルトの名無しさん
16/09/22 07:40:14.43 vdVnk2cw.net
ファクトリーメソッドでいい引数の渡し方ってある?っていうか引数の設計?
パラメータばっか増えてうまくまとめられない。
990:デフォルトの名無しさん
16/09/22 14:13:51.56 7wkfE+LH.net
>>974
条件がわからんけどbuilderパターン使うとか
991:デフォルトの名無しさん
16/09/22 14:39:48.97 sh3eyHdy.net
俺も条件がわからんが
テンプレートのパーフェクトフォワードが使えるかもしれないね
992:デフォルトの名無しさん
16/09/22 23:49:28.05 vdVnk2cw.net
サンキュー。
993:デフォルトの名無しさん
16/09/23 02:38:31.47 FrbFFvPo.net
初めから読んでみたんですが、
このスレ恐い人もいますね。
994:デフォルトの名無しさん
16/09/23 13:12:24.83 z2QCychJ.net
おっかない人が鉞持って茂みに潜んでることもあるので覚悟して臨んで
995:デフォルトの名無しさん
16/09/23 13:37:45.42 ircl/elV.net
C++やる人は怖いのですね
996:デフォルトの名無しさん
16/09/23 15:04:30.06 z2QCychJ.net
C++をやったから怖くなったのか、それとも怖い人はC++に魅入られるのか、それともその両方なのか、それはまだ判りません
997:デフォルトの名無しさん
16/09/23 16:12:15.84 1AYxo37g.net
std::array<int,3> ia = {1,2,3};
なんでいちいちサイズをしていなきゃいけないの?
コンパイラは右式からサイズを知れるはずだよね
998:デフォルトの名無しさん
16/09/23 16:43:56.15 DI5cYQNa.net
arrayがクラステンプレートだからだよ
テンプレート実引数を推定できるのは関数テンプレートだけ
999:デフォルトの名無しさん
16/09/23 16:50:29.51 Z6rdhOh4.net
もともと生配列なんて狭いスコープ内に閉じた使い方しかしてなかったし、あえてstd::array に変える気が起こらん。
1000:デフォルトの名無しさん
16/09/23 16:56:36.61 SmlWzTAW.net
arrayってoparator[]が境界チェック無いとか困る~
1001:デフォルトの名無しさん
16/09/23 17:02:31.08 1AYxo37g.net
>>983
そう・・・・
使い物にならんな、標準なんかにするなよw
1002:デフォルトの名無しさん
16/09/23 17:04:21.59 k0FhbiHl.net
サイズとか取れて便利じゃん。俺ベクタしか使ってないけど。
1003:デフォルトの名無しさん
16/09/23 18:19:30.71 z2QCychJ.net
"std::array<int> ia = {1,2,3}" という文字列を読んで、括弧内の要素数を数えて
std::array<int,3> ia = {1,2,3}として書き換えてくれるテンプレートメタプログラミングすればいんじゃね?
1004:デフォルトの名無しさん
16/09/23 18:28:49.47 Z6rdhOh4.net
template<std::size_t N> の文脈の中でだったら不要だしな
1005:デフォルトの名無しさん
16/09/23 18:41:44.36 jjS354wW.net
配列をstd::arrayに置き換えなくてはならなくなった。
と被害妄想してグチを2chで垂れるのは間違いなく人生負け組
1006:デフォルトの名無しさん
16/09/23 19:45:39.19 k/GEXWfz.net
新しいコンパイラならstd::experimental::make_arrayが使えるんでねぇの?
URLリンク(en.cppreference.com)
1007:デフォルトの名無しさん
16/09/23 20:07:45.67 1AYxo37g.net
ベタに配列でよくね?
1008:デフォルトの名無しさん
16/09/23 20:08:53.66 1AYxo37g.net
>>990
2ちゃんに居る時点で負けだろw
1009:デフォルトの名無しさん
16/09/23 20:23:26.18 Z6rdhOh4.net
algorithmにbeginとendを渡すときでも生配列でいいしな
1010:デフォルトの名無しさん
16/09/23 20:26:55.96 x7wdola9.net
シンタックスシュガー
1011:デフォルトの名無しさん
16/09/23 21:01:07.45 FB5yu9xq.net
サイズ欲しい時に変数用意したり、演算したりするのが面倒だし、余分な処理になるからじゃないの?
std::arrayはサイズ変数を保持していないし、演算もしていないし
at()使えば範囲チェックしてくれるし、生配列にも直接アクセスできるし
凄く便利だと思うけどな
1012:デフォルトの名無しさん
16/09/23 21:20:41.97 kJ5RCJcw.net
超薄型コンドームがでて、感覚上生挿入と変わらないことが統計学的に証明されていても、気持ちの問題だからと生を求める人がいる
1013:デフォルトの名無しさん
16/09/23 21:39:11.65 nEqelPbM.net
はい
1014:デフォルトの名無しさん
16/09/23 21:39:50.82 tPpdE/S0.net
難しいなぁ
1015:デフォルトの名無しさん
16/09/23 21:49:35.34 pyQwxOFM.net
arrayのメリット:コピーができる
1016:デフォルトの名無しさん
16/09/23 21:59:45.45 x7wdola9.net
std::copy
1017:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています