[過去ログ]
C++相談室 part157 (1002レス)
C++相談室 part157 http://mevius.5ch.io/test/read.cgi/tech/1628474251/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
1: デフォルトの名無しさん [sage] 2021/08/09(月) 10:57:31 ID:JaaB5Egp 前スレ C++相談室 part156 https://mevius.5ch.net/test/read.cgi/tech/1621389313/ http://mevius.5ch.io/test/read.cgi/tech/1628474251/1
903: デフォルトの名無しさん [sega] 2021/11/02(火) 10:51:55 ID:7a5iqwfV std::thread で作られるスレッドって スタックサイズはデフォルトいくつなん? 変更とかできるん? http://mevius.5ch.io/test/read.cgi/tech/1628474251/903
904: デフォルトの名無しさん [sage] 2021/11/02(火) 10:59:21 ID:oKrr57AH >>903 スタックなんて概念がないのに制御できるわけがない http://mevius.5ch.io/test/read.cgi/tech/1628474251/904
905: デフォルトの名無しさん [sage] 2021/11/02(火) 11:48:47 ID:LR6fq+wY linuxならulimit -sかpthread_attr_setstacksizeで設定できる ただ確保されるのは仮想メモリなので現実的にはその設定あんまり使い所がない そしてC++とか関係ない http://mevius.5ch.io/test/read.cgi/tech/1628474251/905
906: デフォルトの名無しさん [sage] 2021/11/02(火) 13:09:21 ID:TehqQXLJ stdよりposixのほうが洗練されてるよな http://mevius.5ch.io/test/read.cgi/tech/1628474251/906
907: デフォルトの名無しさん [sage] 2021/11/02(火) 17:28:47 ID:LR6fq+wY 何いってんの?この人 http://mevius.5ch.io/test/read.cgi/tech/1628474251/907
908: デフォルトの名無しさん [sage] 2021/11/02(火) 19:04:22 ID:TehqQXLJ 意味わかんなくてpthread使ってんなら相当頭悪い http://mevius.5ch.io/test/read.cgi/tech/1628474251/908
909: デフォルトの名無しさん [sage] 2021/11/02(火) 19:13:49 ID:U4IKz2Wy むだに喧嘩すんなよ http://mevius.5ch.io/test/read.cgi/tech/1628474251/909
910: デフォルトの名無しさん [sage] 2021/11/02(火) 19:28:12 ID:LR6fq+wY 比較対象がおかしいんだからしょうがなくね?w http://mevius.5ch.io/test/read.cgi/tech/1628474251/910
911: デフォルトの名無しさん [sage] 2021/11/05(金) 00:18:59 ID:2vTbLoUN 基底クラスに定数持たせるけど値は継承先で決めたい。 例)Carクラスには計算に使うが変更はしない定数 weight hight width があり、それは継承した車種クラス毎に異なる、など。 下記でコンパイル通るようですが、定数増えると見づらく、もっとスマートなやり方あったらご教授願いたく。 class Car { protected: const double weight, height, width; public: Car(double w, double h, double wd) : weight(w) , height(h) , width(wd) {} }; class CarA : public Car { CarA() : Car(1000.0, 1.8, 1,8) {} }; http://mevius.5ch.io/test/read.cgi/tech/1628474251/911
912: デフォルトの名無しさん [sage] 2021/11/05(金) 00:22:58 ID:O1PLiy99 別に普通だと思うけどどの辺が見づらいと思うんだ? http://mevius.5ch.io/test/read.cgi/tech/1628474251/912
913: はちみつ餃子 ◆8X2XSCHEME [sage] 2021/11/05(金) 01:26:19 ID:8QrXrM3i 値が const であるだけでなく static であって欲しいという意図なんじゃないかと想像する。 http://mevius.5ch.io/test/read.cgi/tech/1628474251/913
914: デフォルトの名無しさん [sage] 2021/11/05(金) 01:29:07 ID:zGuhJhpK クラステンプレート化すればいいじゃない template<double W, double H, double WD> http://mevius.5ch.io/test/read.cgi/tech/1628474251/914
915: デフォルトの名無しさん [sage] 2021/11/05(金) 01:41:20 ID:gd3zcTPm doubleってテンプレート引数OKになったの? http://mevius.5ch.io/test/read.cgi/tech/1628474251/915
916: はちみつ餃子 ◆8X2XSCHEME [sage] 2021/11/05(金) 01:48:57 ID:8QrXrM3i >>915 C++20 で非型テンプレート引数の大幅な緩和があった。 http://mevius.5ch.io/test/read.cgi/tech/1628474251/916
917: デフォルトの名無しさん [sage] 2021/11/05(金) 02:25:46 ID:Xs8oV2Az C++20では普通に使えるかもだけど、引数に名前を付ける風のトリックがあるらしい https://www.fluentcpp.com/2018/12/14/named-arguments-cpp/ http://mevius.5ch.io/test/read.cgi/tech/1628474251/917
918: デフォルトの名無しさん [sage] 2021/11/05(金) 05:55:16 ID:caWVwyr0 >>911 virtual double weight() const = 0; じゃあかんの? http://mevius.5ch.io/test/read.cgi/tech/1628474251/918
919: デフォルトの名無しさん [sage] 2021/11/05(金) 06:25:31 ID:8h2e+y9J >>912 引数が数値ばかりで10個とかあると確かに何を指定してるのかぱっと見わかんなくなりそう C++なら>>918に一票だけど参照する時に ( ) が要るからこう言うケースだとC#のプロパティが欲しくなる http://mevius.5ch.io/test/read.cgi/tech/1628474251/919
920: デフォルトの名無しさん [sage] 2021/11/05(金) 07:38:38 ID:gd3zcTPm C++20で指示付き初期化が出来るようなので、もしC++20が使えるなら定数を構造体にまとめたらいいかも https://cpprefjp.github.io/lang/cpp20/designated_initialization.html http://mevius.5ch.io/test/read.cgi/tech/1628474251/920
921: デフォルトの名無しさん [sage] 2021/11/05(金) 08:22:45 ID:OHT8JXtH >>911 Builderパターンとか? 面倒だったらDirectorクラスは省略しても問題なさそう。 類型的な車種ごとにBuilderを派生させてデフォルト値を決めといてもいいかと。 http://mevius.5ch.io/test/read.cgi/tech/1628474251/921
922: デフォルトの名無しさん [sage] 2021/11/05(金) 12:38:49 ID:gSSLx8YQ >>919 参照するときに()ていうのは a=car.weight(); ていうこと? a=car.weight; と表記したいならoperator=をオーバーロードすればいいかと http://mevius.5ch.io/test/read.cgi/tech/1628474251/922
923: デフォルトの名無しさん [sage] 2021/11/05(金) 13:46:37 ID:Xs8oV2Az >>920 C++20で使えるのそれそれ。gccでは元々使えるけど... http://mevius.5ch.io/test/read.cgi/tech/1628474251/923
924: はちみつ餃子 ◆8X2XSCHEME [sage] 2021/11/05(金) 13:57:04 ID:8QrXrM3i >>923 C (C99 以降) には有るからついでに C++ でも使えるようにするのは gcc 的にはたいした手間でもなかったんだろうと思う。 http://mevius.5ch.io/test/read.cgi/tech/1628474251/924
925: はちみつ餃子 ◆8X2XSCHEME [sage] 2021/11/05(金) 14:01:00 ID:8QrXrM3i ところで C の designated initializer では配列要素を指示することも出来るんだけど、 C++20 にはこれは入らなかったんだね。 ↓ こういうの。 const char *foo[5] = { [2]="bar" }; http://mevius.5ch.io/test/read.cgi/tech/1628474251/925
926: デフォルトの名無しさん [sage] 2021/11/05(金) 14:04:47 ID:XqgFcDRs c++17以前でも引数を構造体にまとめれば{}で区切って記述できるようになるから多少マシにはなるよね IntelliSenseが効きにくくなるのが欠点だけど http://mevius.5ch.io/test/read.cgi/tech/1628474251/926
927: デフォルトの名無しさん [sage] 2021/11/05(金) 14:10:59 ID:TiWO+rcp >>922 君は何を言っているんだい? http://mevius.5ch.io/test/read.cgi/tech/1628474251/927
928: デフォルトの名無しさん [sage] 2021/11/05(金) 14:27:51 ID:7LuUsMxr そのCの記述素晴らしいよね C++的でないのはわかるがどうせ初期化時でしか使わんのだしとっとと入れるべきだった http://mevius.5ch.io/test/read.cgi/tech/1628474251/928
929: デフォルトの名無しさん [sage] 2021/11/05(金) 16:10:31 ID:gd3zcTPm >>925 ラムダ式のキャプチャと競合するためと書いてるね http://mevius.5ch.io/test/read.cgi/tech/1628474251/929
930: デフォルトの名無しさん [sage] 2021/11/07(日) 16:47:32 ID:qipzvPRM https://ideone.com/d05dJ9 #include <iostream> #include <vector> #include <memory> using namespace std; #define MAX_SIZE 100 template <class T> // template <class T, size_t C=MAX_SIZE> class SizeLimitedAllocator { public: typedef T value_type; using traits = allocator_traits<allocator<T>>; T *allocate(size_t n) { if (n > MAX_SIZE) throw bad_alloc(); // if (n > C) throw bad_alloc(); return traits::allocate(_allocator, n); } void deallocate(T *p, size_t n) { traits::deallocate(_allocator, p, n); } private: allocator<T> _allocator; }; int main() { vector<char,SizeLimitedAllocator<char>> vec(MAX_SIZE); try { vec.resize(MAX_SIZE+1); } catch (bad_alloc& e) { cerr << e.what() << endl; } return 0; } このコードをコメント側に変更してコンパイルするとこけるんだけど、なんで? http://mevius.5ch.io/test/read.cgi/tech/1628474251/930
931: デフォルトの名無しさん [sage] 2021/11/07(日) 17:51:19 ID:ISiN+sDp >>928 aggregate限定だね http://mevius.5ch.io/test/read.cgi/tech/1628474251/931
932: デフォルトの名無しさん [sage] 2021/11/07(日) 17:56:01 ID:Mdbpk+F7 >>930 https://en.cppreference.com/w/cpp/named_req/Allocator#cite_note-2 > rebind is only optional (provided by std::allocator_traits) if this allocator is a template of the form SomeAllocator<T, Args>, where Args is zero or more additional template type parameters. これですかね? カスタムアロケータ自分で定義したことないのでじゃあどうすればいいかは分かりませんが…… http://mevius.5ch.io/test/read.cgi/tech/1628474251/932
933: デフォルトの名無しさん [sage] 2021/11/07(日) 18:53:11 ID:Qwz9shRh rebind_allocが悪さしてたりして http://mevius.5ch.io/test/read.cgi/tech/1628474251/933
934: デフォルトの名無しさん [sage] 2021/11/07(日) 19:23:12 ID:A2QjBZsT >>930 SizeLimitedAllocatorの定義にこれ追加すればいいよ template<typename U> struct rebind {using other = SizeLimitedAllocator<U,C>;}; http://mevius.5ch.io/test/read.cgi/tech/1628474251/934
935: デフォルトの名無しさん [sage] 2021/11/08(月) 00:05:22 ID:dWDs4ee0 https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/ptr_traits.h#L62-L69 この辺の定義にある 定数値という型でないものがテンプレート引数に入ったため、__replace_first_argの下側の定義が使われず 上側の定義が使用されtypeも入らず https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/alloc_traits.h#L80 でrebindできなくなったことが原因でした。 これを回避するためには、>>934のように https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/alloc_traits.h#L51-L57 この下の定義に当てはまるrebind<U>::otherを定義しておく必要があるようです。 定数値でなく型がテンプレート引数に追加された場合は、otherの定義は必要ありませんでした。 http://mevius.5ch.io/test/read.cgi/tech/1628474251/935
936: デフォルトの名無しさん [sage] 2021/11/10(水) 17:04:45 ID:9a0GsOuO グーグルテストのASSERTの片辺に期待値をマジックナンバーじゃなくマクロ定数で指定すると赤線引いて来やがるんだけどVSだけ? ビルドは通るしテストもできるから全く問題ないんだけどうぜー http://mevius.5ch.io/test/read.cgi/tech/1628474251/936
937: デフォルトの名無しさん [sage] 2021/11/10(水) 20:17:21 ID:MFJzciMu warningの種類ごとにon/offしたくなる http://mevius.5ch.io/test/read.cgi/tech/1628474251/937
938: デフォルトの名無しさん [sage] 2021/11/11(木) 00:05:50 ID:QjSth2/F 大体のコンパイラはそういう#pragma持ってるだろ MSVCなら#pragma warning GCCなら#pragma GCC diagnostic http://mevius.5ch.io/test/read.cgi/tech/1628474251/938
939: デフォルトの名無しさん [sega] 2021/11/12(金) 12:50:12 ID:DicJ24/v 改行コードとかタブコードとかが含まれた文字列を \nとか\tとかにエスケープしてくれる関数ってある? http://mevius.5ch.io/test/read.cgi/tech/1628474251/939
940: デフォルトの名無しさん [sage] 2021/11/12(金) 12:53:25 ID:/M/iq88E 速度気にしないなら正規表現で http://mevius.5ch.io/test/read.cgi/tech/1628474251/940
941: デフォルトの名無しさん [sage] 2021/11/12(金) 13:28:00 ID:INEjO2I3 quote? http://mevius.5ch.io/test/read.cgi/tech/1628474251/941
942: デフォルトの名無しさん [sage] 2021/11/12(金) 14:16:51 ID:IjXGHyKg std::replaceは? sjisだとまずいかも http://mevius.5ch.io/test/read.cgi/tech/1628474251/942
943: デフォルトの名無しさん [sage] 2021/11/12(金) 20:51:39 ID:4Xte/kSq 文字コード周りはカオスすぎて標準も手に負えず匙投げたからライブラリ使った方がいいよ http://mevius.5ch.io/test/read.cgi/tech/1628474251/943
944: デフォルトの名無しさん [sage] 2021/11/12(金) 23:22:09 ID:qmhW9zZv >>939 C/C++の場合、1文字単位での文字列処理が得意なので、自作するのも簡単。 0x09 や 0x0a は、SJISやUtf8などの多バイト文字の中には含まれて無いから、 なおさら。 例えば、std::stringでも、新しい文字列変数dstを作って、srcの文字列 から1バイト単位で読み取って、dstに1文字ずつ末尾追加していけばいい。 http://mevius.5ch.io/test/read.cgi/tech/1628474251/944
945: デフォルトの名無しさん [sage] 2021/11/12(金) 23:28:15 ID:qmhW9zZv >>944 [具体例] MFCのCStringなら、以下のようにするだけでよい: CString src = "元の文字列"; CString dst; // 変換後の文字列を入れる変数。 const char *ptr = (const char *)src; // CString の 0 終端文字列の先頭アドレスを取得するための変換関数を呼び出している。 while ( *ptr != 0 ) { if ( *ptr == 0x0a ) { dst += "\\n"; } else if ( *ptr == 0x09 ) { dst += "\\t"; } else { dst += *ptr; } ptr++; } http://mevius.5ch.io/test/read.cgi/tech/1628474251/945
946: デフォルトの名無しさん [sage] 2021/11/12(金) 23:33:56 ID:qmhW9zZv >>945 [補足] このプログラムは、1バイトずつ読み取っているが、文字符合は、このままでも、 無修正で ASCIIだけでなく、SJISやUTF8やEUCにも対応している。 後者のような符合では、例えば、SJISの"あ"の文字だと、1文字単位ではなく、 1バイトずつ処理され、2回ループが回るが、問題ない。 UTF8だと3回ループされる。 つまり、このプログラムでは、SJISの1文字は、2文字のように UTF8の"あ"の文字は、3文字のように処理される。 しかし、それでも結果的には問題ない。 なぜなら、0x0aや0x09は、多バイト文字の中には含まれてないから。 ただし、SJISの場合、\ の文字コードが含まれているので注意が必要ではあるが、 今回は問題ない。 http://mevius.5ch.io/test/read.cgi/tech/1628474251/946
947: デフォルトの名無しさん [sage] 2021/11/12(金) 23:39:04 ID:qmhW9zZv >>946 [補足2] char は、C言語が登場した時には、「文字」の意味であったが、 今は少なくとも C言語では文字の意味はほぼなく、1バイト(8BIT)の意味である。 そして、C言語でcharが1バイト(8BIT)で無い処理系は、主流ではないので無視 してよい。 Javaなどでは、charが 必ず16BITであるのとは対照的である。 ただし、Javaもサロゲートペアの文字に対しては、charは文字の一部であって 本当の1文字には対応していない。 ※結局、どの言語も、1文字を固定長で扱い続けることは避けている。 http://mevius.5ch.io/test/read.cgi/tech/1628474251/947
948: デフォルトの名無しさん [sage] 2021/11/13(土) 02:30:33 ID:sxA0duhG メモリ確保が多発しそうなプログラムやね http://mevius.5ch.io/test/read.cgi/tech/1628474251/948
949: デフォルトの名無しさん [sage] 2021/11/13(土) 06:30:48 ID:x1CN7sQN 老害が一生懸命考えたんだろw メモリリークしまくられるよりマシ http://mevius.5ch.io/test/read.cgi/tech/1628474251/949
950: デフォルトの名無しさん [] 2021/11/13(土) 07:45:14 ID:xg91cK1y CStringにせよbasic_stringにせよメモリ確保の多発なんて心配しなくていいよ JavaのStringじゃないんだから http://mevius.5ch.io/test/read.cgi/tech/1628474251/950
951: デフォルトの名無しさん [sage] 2021/11/13(土) 08:44:09 ID:sxA0duhG こういう時reserveしてなくても問題ないの? 最大容量わかってるやん。 http://mevius.5ch.io/test/read.cgi/tech/1628474251/951
952: デフォルトの名無しさん [sage] 2021/11/13(土) 09:34:35 ID:GqP7nzeW メモリ2倍取るのと再配置とどっちが無駄かはそれこそ環境と目的次第だろ http://mevius.5ch.io/test/read.cgi/tech/1628474251/952
953: デフォルトの名無しさん [sage] 2021/11/13(土) 11:06:02 ID:wYZH/w0f >>945 CStringA もしくは _T("\\t")他 http://mevius.5ch.io/test/read.cgi/tech/1628474251/953
954: デフォルトの名無しさん [sage] 2021/11/13(土) 11:44:37 ID:wZp5djKL vectorもそうだけど、倍々にメモリを再配置していくアルゴリズムがそこそこ効率的なので、 たいていの場合はreserveしようがしまいが有意な差は出ないよね http://mevius.5ch.io/test/read.cgi/tech/1628474251/954
955: デフォルトの名無しさん [] 2021/11/13(土) 12:34:40 ID:GR8tTV2x >>943 ほんそれ std::codecvt_utf8_utf16とか黒歴史でしかない http://mevius.5ch.io/test/read.cgi/tech/1628474251/955
956: デフォルトの名無しさん [] 2021/11/13(土) 12:36:34 ID:GR8tTV2x >>944-945 良い子は真似をしないように http://mevius.5ch.io/test/read.cgi/tech/1628474251/956
957: デフォルトの名無しさん [sage] 2021/11/13(土) 12:49:12 ID:jQtDYU1M プログラミングとしてはiso2020使ってた頃と大して変わらんよね 低レベルで吸収してくれんとやってられん http://mevius.5ch.io/test/read.cgi/tech/1628474251/957
958: デフォルトの名無しさん [] 2021/11/13(土) 13:24:23 ID:xg91cK1y ファイル読み取りもシステムコール側が独自にバッファリングしていることが多いから プログラマ側ががんばってバッファリングしても二度手間だったりする http://mevius.5ch.io/test/read.cgi/tech/1628474251/958
959: ハノン ◆QZaw55cn4c [sage] 2021/11/13(土) 15:53:45 ID:DyUYxUU0 >>955 utf32<->utf8 utf32<->utf16 で十分だと思っていますが というか、 utf16 自体が黒歴史… http://mevius.5ch.io/test/read.cgi/tech/1628474251/959
960: ハノン ◆QZaw55cn4c [sage] 2021/11/13(土) 15:54:13 ID:DyUYxUU0 >>958 stdio.h をディするのはそこまでだ http://mevius.5ch.io/test/read.cgi/tech/1628474251/960
961: デフォルトの名無しさん [sage] 2021/11/13(土) 17:16:26 ID:kpA91CRo 文字コードなんて事実上iconvが標準だろ せいぜいicuくらい 他は一部のプラットフォーム固有の関数くらい 制御コードはISO2022でもなければ使わんし、いうてwhite spaceの類は使われてないから気にすんな 真面目にやると文字の境界見つけんのがだるいし、合成文字の扱いも微妙、異常系の仕様も要件次第になるし、Unicodeのバージョンも無限に上がりそうだけどなw ってわけでC++とか関係ない話だからどうでもいいよ http://mevius.5ch.io/test/read.cgi/tech/1628474251/961
962: デフォルトの名無しさん [sage] 2021/11/13(土) 18:02:09 ID:vJfZgOKN C++ なら strstream やろ http://mevius.5ch.io/test/read.cgi/tech/1628474251/962
963: デフォルトの名無しさん [sage] 2021/11/13(土) 18:03:36 ID:vJfZgOKN >>959 utf32<->utf8 utf32<->utf16 どちらも std:: のは黒歴史 http://mevius.5ch.io/test/read.cgi/tech/1628474251/963
964: ハノン ◆QZaw55cn4c [sage] 2021/11/13(土) 18:39:04 ID:DyUYxUU0 >>963 そうなんですか… なぜなんですか? http://mevius.5ch.io/test/read.cgi/tech/1628474251/964
965: デフォルトの名無しさん [sage] 2021/11/13(土) 19:29:59 ID:vJfZgOKN >>964 知ってるくせに https://cpprefjp.github.io/reference/codecvt.html https://cpprefjp.github.io/reference/codecvt/codecvt_utf8.html https://cpprefjp.github.io/reference/codecvt/codecvt_mode.html https://cpprefjp.github.io/reference/locale/wstring_convert.html http://mevius.5ch.io/test/read.cgi/tech/1628474251/965
966: デフォルトの名無しさん [] 2021/11/13(土) 21:14:20 ID:aIrFEHKz 自分はHTML5の仕様に従って変換してます! http://mevius.5ch.io/test/read.cgi/tech/1628474251/966
967: デフォルトの名無しさん [sage] 2021/11/14(日) 08:24:14 ID:gLhea8X6 >>959 結合文字列があるから、結局コードポイントに必ず1文字が対応しているとは限らないし、 何使ってもUnicodeは闇じゃないか。 まあ、UTF32使えばコードポイントがぶっ壊れることは避けられるけれども。 http://mevius.5ch.io/test/read.cgi/tech/1628474251/967
968: デフォルトの名無しさん [sage] 2021/11/14(日) 09:14:46 ID:ybz8bu8o この場合同じコードポイントでの変換なわけだし一文字がどうとか関係ないが。 http://mevius.5ch.io/test/read.cgi/tech/1628474251/968
969: デフォルトの名無しさん [sage] 2021/11/14(日) 10:38:12 ID:G9ajtZXw >>948 Perl/Ruby/JSなんかで正規表現を使って置換する場合でも、 同じようなアルゴリズムを使ってるはずだから、これが 特に非効率なわけではないし、代わりになるアルゴリズムで これよりトータルで効率の良いものも恐らく存在しない。 1.例えば、0x0aと0x09の出現回数を最初に数えれば、必要な dstのバイト数を見積もることは可能だが、その場合は、 二回もパースが必要になるし、プログラムも分かりにくくなる。 二回パースすることによる速度低下も有る。 2.dstのサイズはsrcのサイズの2倍を越えないので、単純に dstの内部バッファをsrcのバイト数の2倍として予約しておけば メモリ確保は一回で済むが、srcが巨大な時、メモリを圧迫し、 余り良いアルゴリズムとは言えない。 http://mevius.5ch.io/test/read.cgi/tech/1628474251/969
970: デフォルトの名無しさん [sage] 2021/11/14(日) 10:52:13 ID:G9ajtZXw >>951 文字列のバッファは、不足すると2倍、2倍、・・・で確保されていくので 確保される回数は、最終的な文字列のバイト数を N としたとき、大体、 log2(N) 回程度となり、バッファがコピーされるトータルのバイト数は、 b = a + a*2 + a*2^2 + a* 2^3 + ... + a* 2^k k = log2(N) 程度 a = 文字列クラスの内部バッファの初期バイト数。 となり、大体で言えば、2N を越えない。 1 + 2 + 2^2 + 2^3 + ... + 2^k は 2進数で考えれば、全てのビットが 1 に成っている整数で、 2^{k+1} = 2*2^k = 2*2^{log2(N)} = 2 * N であることに注意する。 ただし、bの値は大体で書いたので、厳密には少し違うだろう。 http://mevius.5ch.io/test/read.cgi/tech/1628474251/970
971: デフォルトの名無しさん [sage] 2021/11/14(日) 10:59:39 ID:G9ajtZXw >>970 1 + 2 + 2^2 + 2^3 + ... + 2^k = Σ_{i=0}^k 2^i = (1 - 2^{k+1}) / (1 - 2) = 2^{k+1} - 1 である。途中、等比数列の和の公式: 等比数列の和 = 初項 * ( 1 - 公比^項数) - ( 1 - 公比 ) を用いた。 http://mevius.5ch.io/test/read.cgi/tech/1628474251/971
972: デフォルトの名無しさん [sage] 2021/11/14(日) 11:04:20 ID:G9ajtZXw >>971 誤: 等比数列の和 = 初項 * ( 1 - 公比^項数) - ( 1 - 公比 ) 正: 等比数列の和 = 初項 * ( 1 - 公比^項数) / ( 1 - 公比 ) http://mevius.5ch.io/test/read.cgi/tech/1628474251/972
973: デフォルトの名無しさん [sage] 2021/11/14(日) 12:08:34 ID:p964tW2k 俺は数年前業を煮やして自前のstringクラスを作ってしまった(´・ω・`) ・sjis/utf8/utf16/utf32対応で比較・代入などどの組み合わせでも問題なく動く ・どの文字コードでも同じハッシュ値を生成する ・char型がsjisなのかutf8なのかはdefineで決める ・テンプレートベースのformatを用意してprintfを置き換え みたいな http://mevius.5ch.io/test/read.cgi/tech/1628474251/973
974: デフォルトの名無しさん [sage] 2021/11/14(日) 12:57:01 ID:hL5WeBkj >>973 保持するときのエンコードは? http://mevius.5ch.io/test/read.cgi/tech/1628474251/974
975: デフォルトの名無しさん [sage] 2021/11/14(日) 12:58:38 ID:p964tW2k >>974 文字コードの種類に1バイト用意して、後はそれぞれの文字コードで直接保存している http://mevius.5ch.io/test/read.cgi/tech/1628474251/975
976: デフォルトの名無しさん [] 2021/11/14(日) 13:30:12 ID:mwYTHPjW えー コンストラクタで各種文字コードのバイト列を受け取れるようにして内部保持形式はUTF32でよくない? http://mevius.5ch.io/test/read.cgi/tech/1628474251/976
977: デフォルトの名無しさん [sage] 2021/11/14(日) 13:42:53 ID:p964tW2k それだと大きめのテキストファイルを開いたときなどいちいち変換が入って遅くなりそうだから…といっても実際にはどっちが効率良いのかまでは比べてないけど 異なる文字コード同士比較する時なんかはコードポイント単位で読み出して結局utf32ベースで処理するしな… http://mevius.5ch.io/test/read.cgi/tech/1628474251/977
978: デフォルトの名無しさん [] 2021/11/14(日) 13:44:30 ID:E00roTgy >dstのサイズはsrcのサイズの2倍を越えない しね http://mevius.5ch.io/test/read.cgi/tech/1628474251/978
979: デフォルトの名無しさん [sage] 2021/11/14(日) 13:59:19 ID:5aeLrxCA プログラマーは3種類しかいない 文字コードが分からない一般プログラマー 文字コードを理解したと勘違いしている地雷プログラマー そして人類が文字コードを理解するのは不可能だと悟った上でなんとか事故が起こらないように心を砕く真の専門家だ http://mevius.5ch.io/test/read.cgi/tech/1628474251/979
980: デフォルトの名無しさん [sage] 2021/11/14(日) 14:17:19 ID:p964tW2k >>976 あーあとは、これのstring_viewバージョンがあって、関数のパラメータをconst mystring_view& strみたいに受けると、どんな対応してる文字なら(リテラルや対応してるクラス含めて)なんでも参照として受け付けるから便利なんだよね http://mevius.5ch.io/test/read.cgi/tech/1628474251/980
981: デフォルトの名無しさん [sage] 2021/11/14(日) 14:59:21 ID:WpZMPVn+ それconst&いるんか? http://mevius.5ch.io/test/read.cgi/tech/1628474251/981
982: デフォルトの名無しさん [sage] 2021/11/14(日) 15:13:11 ID:p964tW2k 実質的にはほとんどなにも変わらないと思うけど、無駄なコピーが減る場合もあるので付けておくに越したことはないと思う http://mevius.5ch.io/test/read.cgi/tech/1628474251/982
983: デフォルトの名無しさん [sage] 2021/11/14(日) 15:45:24 ID:p964tW2k まぁ、でも参照もコストゼロってわけじゃないから、場合によっては遅くなることもあるか… http://mevius.5ch.io/test/read.cgi/tech/1628474251/983
984: デフォルトの名無しさん [sage] 2021/11/14(日) 16:54:05 ID:tkHjD9h1 const って伝播するから嫌い 付けるのは反対ではないが http://mevius.5ch.io/test/read.cgi/tech/1628474251/984
985: デフォルトの名無しさん [sage] 2021/11/14(日) 17:26:15 ID:CXUBNW9m 伝播ってどういうこと? http://mevius.5ch.io/test/read.cgi/tech/1628474251/985
986: はちみつ餃子 ◆8X2XSCHEME [sage] 2021/11/14(日) 17:38:21 ID:A4GQ1/1N 参照で受け取るときには const を付けないと右辺値を受け取れないんだよ。 && にしたら逆に右辺値しか受け取れないし、 テンプレートにするのも面倒くさいし、 const 参照で不都合がないならまずそれを選ぶのが常道になってる。 積極的にそうする必要はなくても手癖でやるよね。 http://mevius.5ch.io/test/read.cgi/tech/1628474251/986
987: はちみつ餃子 ◆8X2XSCHEME [sage] 2021/11/14(日) 17:44:17 ID:A4GQ1/1N >>985 const 無しから const 付きの参照へは暗黙の型変換が許されるがその逆はない。 const 付きにしたらそれがずっと伝わっていくってことだ。 元のオブジェクトが const でないなら const_cast で const を剥がして書き換えるのは一応は有りなはずだが、 かなり行儀が悪いしな。 http://mevius.5ch.io/test/read.cgi/tech/1628474251/987
988: デフォルトの名無しさん [sage] 2021/11/14(日) 17:59:13 ID:CXUBNW9m スコープ限定のconstを欲するひとがいるとは思わんかった http://mevius.5ch.io/test/read.cgi/tech/1628474251/988
989: デフォルトの名無しさん [] 2021/11/14(日) 18:02:00 ID:nLCz7RQY 責任ベースのconstは有り得るのでは? privateが在るんだから。 http://mevius.5ch.io/test/read.cgi/tech/1628474251/989
990: デフォルトの名無しさん [sage] 2021/11/14(日) 18:05:38 ID:leu9kbhs というか伝播しなかったら困るのでは? お行儀悪くconst_castしない前提なら ある関数の引数がconstだったら、その関数が呼び出す関数もまたconstであるという保証は大切だろうし http://mevius.5ch.io/test/read.cgi/tech/1628474251/990
991: デフォルトの名無しさん [] 2021/11/14(日) 18:45:07 ID:nLCz7RQY もちろんそれは大切ですよ。 伝搬しなかったら意味ないし。 http://mevius.5ch.io/test/read.cgi/tech/1628474251/991
992: ハノン ◆QZaw55cn4c [sage] 2021/11/14(日) 19:45:46 ID:5CSGBVhH K&R2 にも const はありますが全然使わなかったなあ…volatile 同様キワモノだとおもっていました(爆) http://mevius.5ch.io/test/read.cgi/tech/1628474251/992
993: デフォルトの名無しさん [sage] 2021/11/14(日) 22:33:34 ID:oUoND4t/ C++20からコルーチン入るけどコルーチンの返り値に関数内の変数の参照返すの問題になるかな? hoge& test(){ hoge tmp; for(int i=0;i<10;++i){ co_yield tmp; } } //返り値は実際はgeneratorとかになるかもしれない http://mevius.5ch.io/test/read.cgi/tech/1628474251/993
994: デフォルトの名無しさん [sage] 2021/11/14(日) 22:35:39 ID:PetPaRNq yeild使えるようになるのか http://mevius.5ch.io/test/read.cgi/tech/1628474251/994
995: デフォルトの名無しさん [sage] 2021/11/15(月) 01:03:02 ID:tPLK0GqY viewは値渡しが基本だよ http://mevius.5ch.io/test/read.cgi/tech/1628474251/995
996: デフォルトの名無しさん [sage] 2021/11/15(月) 06:05:50 ID:Rt8JG1Np 何かのリミッタが外れた感じだね 無差別にぶち込むようになった http://mevius.5ch.io/test/read.cgi/tech/1628474251/996
997: デフォルトの名無しさん [sage] 2021/11/15(月) 06:11:48 ID:Rt8JG1Np 江添が逃げた理由も察しがつく http://mevius.5ch.io/test/read.cgi/tech/1628474251/997
998: デフォルトの名無しさん [sage] 2021/11/15(月) 15:55:33 ID:Ux5WoKB6 更新してないよね http://mevius.5ch.io/test/read.cgi/tech/1628474251/998
999: デフォルトの名無しさん [hage] 2021/11/15(月) 16:41:30 ID:i/3H6iLT hage http://mevius.5ch.io/test/read.cgi/tech/1628474251/999
1000: デフォルトの名無しさん [pow(10,3);] 2021/11/15(月) 16:42:03 ID:i/3H6iLT 10^3 http://mevius.5ch.io/test/read.cgi/tech/1628474251/1000
1001: 1001 [] ID:Thread このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 98日 5時間 44分 33秒 http://mevius.5ch.io/test/read.cgi/tech/1628474251/1001
1002: 1002 [] ID:Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。 運営にご協力お願いいたします。 ─────────────────── 《プレミアム会員の主な特典》 ★ 5ちゃんねる専用ブラウザからの広告除去 ★ 5ちゃんねるの過去ログを取得 ★ 書き込み規制の緩和 ─────────────────── 会員登録には個人情報は一切必要ありません。 月300円から匿名でご購入いただけます。 ▼ プレミアム会員登録はこちら ▼ https://premium.5ch.net/ ▼ 浪人ログインはこちら ▼ https://login.5ch.net/login.php http://mevius.5ch.io/test/read.cgi/tech/1628474251/1002
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.260s*