C++相談室 part164

■ このスレッドは過去ログ倉庫に格納されています
2023/05/09(火) 11:50:52.06ID:EYc2I7oW0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること

次スレは>>980が立てること
無理なら細かく安価指定

※前スレ
C++相談室 part163
https://mevius.5ch.net/test/read.cgi/tech/1672409791/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2023/05/16(火) 22:54:23.62ID:A1rs+At80
partialはXAMLから生成された.csと手書きする.csをマージするための機能なので
2023/05/17(水) 07:00:26.09ID:s9zxu+xkd
>>47
多重継承っぽいやつ?
50デフォルトの名無しさん (スップ Sd1f-kcYJ)
垢版 |
2023/05/17(水) 08:36:31.92ID:9mruUvtDd
分割されたそれぞれの断片をコンパイラの後工程で1クラスにまとめ上げる感じ。
なのでこんな感じの相互参照も許される。

partial class C{
private void F1(){ F2(); }
}

partial class C{
private void F2(){ F1(); }
}

まあ当然コードの見通しが悪くなるので、
コンパイラ生成が絡むとこだけをpartialにして1ファイル1クラスにしておくのが鉄則
2023/05/17(水) 12:04:20.17ID:nFfh+5gid
「1ファイル1クラスにしておくのが鉄則」

10行のクラスも10000行のクラスも何も考えずに1ファイル
思考停止君のやること
2023/05/17(水) 12:36:42.78ID:F24a8wLtM
C#のpartialは基本的に自動生成されたファイルとの分離が主目的

winformsのコントロールのプロパティのイニシャライズとか人から触ってほしくないファイルで一種の馬鹿避けになってる
delphiではそのコントロール向けのファイルがバイナリでぶっ壊れてもどうにもできないし
コーディング中にコード内検索も出来ない
利便性が著しくよくない

後は一般のコードジェネレータの吐き出すファイル用にも使える
最近はmvvm toolkitで便利に使われている

コードの可読性が上がるし触られたくないものを扱うのも便利

人力コードで使う場合は長いファイルの下請けメソッドを分割する場合
単純に可読性が上がるけど普通は別のアプローチを使う

特定の機能をまとめたファイルを一つ作ってそこに関連クラスを全部入れるとかもできるけど無しだろうな
特定のタイミングでプリンターに出力するメソッドを追加してファイルのアリ無しで切り替えるとかは出来そう
53デフォルトの名無しさん (アウアウウー Sa67-MLJk)
垢版 |
2023/05/17(水) 12:57:39.48ID:TlHThGt8a
おんなじ意味合いの関数なんだけどSFINAEしまくってて1000行くらいあるやつはよく見かける
2023/05/17(水) 13:32:11.85ID:6s1sKbMg0
時代はパーシャル
2023/05/17(水) 16:10:19.20ID:ZA2j/mjnd
触られたくないコードって危険を孕んで内科医?
業務の情報が1人の社員に独占されていると
そいつが急死したら詰むだろ
2023/05/17(水) 22:50:57.85ID:F24a8wLtM
彼も若いころは文脈も理解できてまともにコーディングできたのかもしれない

皆いつか老化して意味が取れなくなるんだから
いつか行く道と言うことで…
2023/05/18(木) 08:16:22.48ID:rquLbZPK0
互いに依存しないことを明確にするためにファイルを分けることはまれによくある……
static int g_foo;

class A { ... };

class B {
 void bar() { baz(g_foo); A x; } // Bがg_fooやAへの依存が無いことはBをファイルを分けたらワカル分けなかったらわからん
};
2023/05/18(木) 08:21:13.77ID:rquLbZPK0
もっともファイルを分けたからといってもメモリのエイリアシング的な形で依存した場合は知らん
some_func()が表記上はg_fooを含まないのに実は中でg_fooのアドレスを知っていて以下略
2023/05/18(木) 22:15:33.79ID:mLb7AMe5M
さすがに冷たい対応だったかなと

C#でpartialが入った経緯
winformsはGUIデザイナを使ってボタン等のコントロールを自由に配置してプロパティを変えて表示される文字を変えることができる
初期はデザイナで変更するとformのファイルがそのまま変更された
そのファイルを人間も書き換えているので人がミスしたり運が悪いと整合性が取れなくなったりしてた
例えば全置換などやってデザイナの部分も書き換わったりとか

それで自動生成された部分を人が不意に触れないないようにそこだけを別ファイルに出す目的でpartial classが出来た
partial methodも作られたけど他人が使ってるのを見たことがない
2023/05/19(金) 02:03:23.75ID:iSJAQTOS0
日本でパーシャルと言えばパーシャル冷蔵庫
微妙に凍結させた状態にして保存するというアレ
まさにC#のpartialの事である
2023/05/19(金) 14:04:53.67ID:Y7veEz1vd
偏微分
2023/05/19(金) 14:20:06.94ID:s84ipUzkM
グラッド ダイバージェンス ローテーション
63デフォルトの名無しさん (アウアウウー Sa2f-SwK+)
垢版 |
2023/05/20(土) 13:24:28.97ID:QfLlK72xa
Φ(E)
∇・E
∇×E
2023/05/20(土) 14:24:46.00ID:duXb8gf0H
ナブラッ
2023/05/20(土) 14:35:25.50ID:mmZhl8HV0
チロワッ
2023/05/20(土) 15:53:45.99ID:KTPYLvU6M
APLを思い出した
さすがに使ったことはないけど
2023/05/20(土) 16:00:42.45ID:eGW3N412a
for(auto &v: createVector()) なんか処理

みたいな書き方してもcreateVectorは一回しかよばれず大丈夫ってことでいい?
2023/05/20(土) 16:21:49.91ID:dyAKGBP20
>>67
せやで。
その関数が呼ばれるのは一度だけという解釈で正しい。
2023/05/20(土) 16:23:49.47ID:am3G09Kz0
>>67
そんくらい自分で試しなされ
$ cat test.cpp
#include <iostream>
#include <vector>
using namespace std;
auto createVector() {
cout << "hoge\n";
return vector <int> ();
}
int main () {
for(auto &v: createVector()); // なんか処理
return 0;
}
$ g++ test.cpp
$ ./a.out
hoge
2023/05/20(土) 18:59:35.46ID:VcGb9zmJ0
>>69
自分の環境だと通るのは知ってるけど、実は未定義でアウトみたいな場合あるから5chの有識者の意見が聞きたかった
2023/05/20(土) 19:26:09.53ID:KTPYLvU6M
かなり昔範囲forはプリプロセッサで展開されると聞いたことがあったなあ
そういうのから誤解なんじゃないかな

実際展開してみたけどプリプロセッサでは展開されないです
2023/05/20(土) 20:10:50.85ID:pdI1pmlS0
>>70
これのこと?

std::vector<int> createVector();

for(auto &v: createVector()) // セーフ

struct Result { std::vector<int> v; };
Result createResult();

for(auto &v: createResult().v) // UB
2023/05/21(日) 00:13:09.51ID:tvaGSf6W0
>>71
range-based for は等価なコードを示す形で意味論が規定されてる。
https://timsong-cpp.github.io/cppwp/n3337/stmt.ranged
「こう書いた場合の挙動と等しい」という説明が「このように展開される」と誤解されたんだろう。
コンパイラの内部で実際に展開しても構わないんだが
プリプロセッサはフェイズの整合性がとれなくなるのでこの展開をプリプロセッサでは実現できない。
2023/05/21(日) 00:41:25.84ID:tvaGSf6W0
一時オブジェクトの寿命は個々の具体例を網羅的に覚えるというわけにもいかんので
ちゃんと原則を理解しないといかんというのは警告しておく。

>>72 で提示された内容を解説すると、このとき createResult の結果である Result は一時オブジェクトなので
完結式の終わりには解体される。 (>>73 で提示した展開形を参照のこと。)
右辺値は参照で受けた場合に限りその参照の寿命と同じ分だけ寿命が延長されるというルールがあるので
その原則に従えば Result::v の寿命は延長されるのだが v を内包する Result が解体されるときにメンバも解体してしまうので
Result::v も無効になってしまう。
当然だがすでに解体されたオブジェクトはそのイテレータも全部が無効。
75デフォルトの名無しさん (スップ Sd8a-Cz+X)
垢版 |
2023/05/21(日) 10:05:34.04ID:bUoMcGVnd
単純なFOREACHマクロだと展開できないんだよねこれ

FOREACH(T x, iterable) "文"

{
auto&& range=iterable;
auto&& begin=range.begin();
auto&& end=range.end();
for(;begin!=end; ++begin){
T x=*begin;
"文"
}
}

range寿命の関係上スコープの外に漏らしてはいけない。
FOREACHの終了を表現するために"#define FOREACH_END }}"とかの間抜けなマクロが必要になる
(たぶんC++17で導入された初期化付きifを使えば誤魔化せるけど)

セパレータの":"(or ",")をプリプロセッサを見つけるのが不可能。
Tでもiterableでも":"とか","を使って表現するケースに対応し切れない
(Tにtypename std::array<int, 5>::value_type を指定されたら無理)
2023/05/21(日) 13:16:13.24ID:gNV32dtiM
そうそう
プリプロセッサは重複の無い任意の変数名を持ってこれない
固定でもスコープの問題もあるからプリプロセッサ論は馬鹿げてるなと思った
2023/05/21(日) 14:57:20.57ID:TLn2V+5X0
>>74
ちなみにこれはC++23からは解決する(P2644)
for文の中身のあらゆる一時オブジェクトは(謎の力によって)ループ終了まで生存するようになる
まあ現時点ではやらない方がいいし、気にしなくて良くなるまで10年はかかるだろうけど
2023/05/21(日) 15:50:41.28ID:hDRagkvp0
>>77
えええ!
どんな需要を満たそうとしてそんな変更するんかね?
2023/05/21(日) 19:09:41.96ID:9sSc2LHl0
class Foo {
 int m_value;
public:
 Foo() { m_value = 現在時刻に依存して決まる何かの値; }
 int v() const { return m_value; }
};

int tmp;
for (i = 0; (tmp = Foo().v(), tmp < 100); i++) {
  cout << i << "," << tmp << endl;
}

とかになったらどうなってしまウンダー/(;≧Д≦)\
2023/05/21(日) 20:47:43.16ID:TLn2V+5X0
for (auto&& x: <<ここだけだよ>>)
2023/05/21(日) 21:41:43.50ID:Wy9ZySN20
std::for_eachと死ぬタイミング合わせようとしてるのかな
82デフォルトの名無しさん (スププ Sdea-3V1s)
垢版 |
2023/05/22(月) 11:38:14.26ID:da9WNPSud
do{}while(ここにblock内で宣言した変数使えるのマダ?);
2023/05/23(火) 08:13:25.35ID:Zuh94crlM
Main でインスタンス化した、ファイル操作
クラスの設定を、別のクラスutilityの
インスタンスで使いたい時ってどうしたら
いいですか?

ファイル開いておいて、デバッグ内容を
そこに書き込みたい。
デバッグ終わったら不要になるんで、
あまりincludeとか変数とか増やしたくない。

VC++ のwindowsディスクトップアプリ です。
84デフォルトの名無しさん (スップ Sd8a-Cz+X)
垢版 |
2023/05/23(火) 08:33:03.17ID:2zdXEqSEd
「ファイル操作クラス」ってなんのことか読み取れんが
std::osteamのことか?std::ostreamを持ってる別の仕事があるクラスか?

差し支えなければ現状のクラス定義を貼ってほしいが
2023/05/23(火) 09:15:28.22ID:Zuh94crlM
>>84
ファイル操作を含んだ、デバッグ用に用意した
クラスです。Debugクラスとします。


Debug dbg; グローバルで‥
WWinMain(){

dbg.initial(); 色んな初期設定。
dbg.filename(debugfile) ;
dbg.start(); ここで、std::ofstrm file.openしてる

dbg.writefile(“なんかかきこむ”);

Utilty utl;

dbg.closefile();


}

Class Utility{

この中で、mainの中で色々設定した内容で
(mainで用意したdbgインスタンスのまま。)
Debugクラス。使いたい。
開いたFileそのまま。。


}

こんな感じですが、伝わりますか?
86デフォルトの名無しさん (アウアウウー Sa2f-SwK+)
垢版 |
2023/05/23(火) 10:39:56.04ID:X1m2WkvHa
Utility util(dbg);
2023/05/23(火) 12:30:30.59ID:gLCisDzi0
関数の命名センスが短絡的やな
扇子を磨け
88デフォルトの名無しさん (スップ Sd8a-Cz+X)
垢版 |
2023/05/23(火) 12:40:55.81ID:2zdXEqSEd
std::ostreamはコピーを禁止してるから参照渡し(or ポインタ渡し)で受け取るのがいいかな

class Utility{
Debug& _debug;
public:
Utility(Debug& debug) : _debug(debug) {}
void f(){
_debug.writefile(...);
}
};

int main(){
...
Utility utl(dbg);
}
2023/05/23(火) 13:00:20.12ID:zQ9auONPa
Debugをシングルトン化しておけばいいのでは。
そうすれば、utilityもMainもDebugの定義を読むだけで、お互いに無関心でいられる。
2023/05/23(火) 13:07:36.09ID:Gn7U56ehd
staticおじさんになるんだよ
2023/05/23(火) 13:19:59.30ID:4jUsmOvf0
禁じ手
グローバルおじさん
2023/05/23(火) 14:52:04.84ID:HWUzxVfV0
#ifdef NDEBUG
#define DEBUG_PUTLN(line)
#else
#define DEBUG_PUTLN(line) dbg.writefile(line)
#endif
2023/05/23(火) 20:11:47.19ID:QG1lXeie0
シングルトンって実質はグローバル変数そのものなんだけどな
2023/05/23(火) 20:33:02.99ID:H3Kl0Etq0
クラス定義がそもそもグローバルだからな
2023/05/23(火) 23:59:19.62ID:4jUsmOvf0
int i をグローバル変数にしてたおじさん居たな
理由聞いたら書くの面倒だからとか
96デフォルトの名無しさん (アウアウウー Sa2f-pkzb)
垢版 |
2023/05/24(水) 01:56:30.90ID:EzFDCa2Ya
全部シングルトンおじさんとglobalおじさんは一人でもいると周りがめっちゃ迷惑やな
2023/05/24(水) 14:31:10.50ID:VF8oVK+zM
ありがとう。
やっばり、Utility の中にも色々書く必要あり
ですね。
デバッグのためだけにUtility2 3 4全部直すのも
と思ってたけど、諦めて頑張ります。
2023/05/24(水) 14:34:53.03ID:VF8oVK+zM
external でインスタンス渡して、
global.h さんだけincludeしてできないかなと、
甘く考えてた時もありました。
2023/05/24(水) 23:58:03.92ID:lCJuR93r0
世界で1つのint iをブンブン回してるのクソワロタ
2023/05/25(木) 00:06:30.18ID:1obgfOJTa
ループ内でサブルーチンとか呼んだときどうするんだろう・・・
101デフォルトの名無しさん (ワッチョイ 1b02-XPFS)
垢版 |
2023/05/25(木) 00:18:52.33ID:8bGOXla20
std::u16string_view stringView (string);
stringView = {stringView.data () + 1, stringView.size () - 1};

これの2行目はどういう意味なんでしょうか?何かの文法のような気がするのですが、調べ切れていません・・・。
2023/05/25(木) 00:55:03.39ID:NKFrr9+j0
グローバルなオブジェクトのコンストラクタの中からprintf()とかのC言語の標準ライブラリ機能が呼べるのはワカルが
coutとかのC++の標準ライブラリ機能は安全に呼べることは保証されるの?
2023/05/25(木) 01:41:17.05ID:WiPfB6bJ0
される
規格上はstdに含まれる値(オブジェクト)はユーザーコードで参照されたら(特別の規定がない限り)常に有効でなければならない
2023/05/25(木) 08:37:46.24ID:2LyQ/gAw0
>>101
rangesのviewだろ
2023/05/25(木) 09:32:15.13ID:G3dlC7U30
>>101
> stringView = {stringView.data () + 1, stringView.size () - 1};

↑これは↓こう書いた場合と同じ。

stringView = std::u16string_view(stringView.data () + 1, stringView.size () - 1);
2023/05/25(木) 11:13:48.89ID:vvIauVZOd
>>105
一見意味不明何だけど何て記法?
2023/05/25(木) 11:49:30.93ID:tfjCiJA40
勉強中なんだけど、クラスの相互参照って気持ち悪い
2023/05/25(木) 12:04:14.41ID:tfjCiJA40
もう、慣れた
2023/05/25(木) 12:08:58.16ID:G3dlC7U30
>>106
たぶん直接的に表す用語は定義されてないと思う。

型の情報がないときは波括弧で表されたリストは initializer_list に推論されるけど
代入のときは代入演算子のオーバーロード解決時候補に関数シグネチャとして T& operator=(T&,T); が加わるので
結果としてこのとき生成される一時オブジェクトの初期化子という解釈になる。
2023/05/25(木) 13:19:23.21ID:E3OVdEtKM
Uniform initialization 一様初期化とか統一初期化?
https://cpprefjp.github.io/lang/cpp11/uniform_initialization.html

std::initializer_listも含んだ文法だね
std::initializer_listの方か他のコンストラクタの方になるかはけっこうルールがややこし
2023/05/25(木) 19:45:10.69ID:bX845kvIM
c++はその{}の中に書くとclassの中に書いた変数が順番に初期化される
いろいろ問題があるから他の言語で採用されていない

c++は実用面で利点があると判断されたのかそのまんま
2023/05/25(木) 19:47:55.97ID:bX845kvIM
Brace initialization
https://learn.microsoft.com/en-us/cpp/cpp/initializing-classes-and-structs-without-constructors-cpp?view=msvc-170
2023/05/26(金) 06:48:21.55ID:kRDoXd150
>>105
ありがとうございます。
DTMのプラグイン(VST3)を作ってみたくて、それにはC++をある程度分かってないといけないそうなので、
参考書読んだりしているのですが、これれまでC++に全く触れてこなかったので、かなり面食らってます・・・。
サンプルのソースを見ても、いろいろな応用が含まれていて、前提となる知識がそれなりにないと分からないのかなと・・・。
2023/05/26(金) 10:03:10.85ID:qewSmBpu0
>>113
C++ の仕様には未定義がたくさんあるので実際に動作させた結果から学ぶべきではないという事情がある。
ある程度は理屈で理解しておかないと簡単に破綻するよ。
実例を見ながら雰囲気で使うってのは出来ない言語だと思う。
2023/05/26(金) 10:55:39.45ID:Yaiov3bU0
しらない間に未定義踏んでて、コンパイラ変わったりしたときに挙動が変わるやつ
116デフォルトの名無しさん (ササクッテロラ Sp03-OHH9)
垢版 |
2023/05/26(金) 11:28:17.59ID:VVS6yE6rp
>ある程度は理屈で理解しておかないと
に対しての
>実際に動作させた結果から学ぶべきではない

極端じゃね?
2023/05/26(金) 11:37:41.87ID:jtoHc2Cr0
>>113
chatgptにサンプルコードを解説させたら?
2023/05/26(金) 13:02:36.82ID:qewSmBpu0
>>116
「ちゃんとした資料を読まずに動作から何かを読み取ろうとするな」という話なので、
資料を読んだうえで手を動かして確認することまで否定してるわけじゃないよ。
少なくとも初手は入門書くらい読まんといかんという程度のことを言ってる。
2023/05/26(金) 21:10:27.73ID:u5i01UPgd
解脱させたらに見えたし
2023/05/26(金) 21:19:24.77ID:cuJor+ml0
「ワイのコードではこう動いてるからいいの!」「ワイが試したらこう動いたからこうなの!」
で突っ走った結果大爆発する事例が後を絶たない
121デフォルトの名無しさん (スプッッ Sd13-Cz+X)
垢版 |
2023/05/26(金) 21:27:57.62ID:TE50P/kBd
未定義まで行かなくても処理系依存とか未規定動作もあるからほんとにややこしい
知らず知らずのうちにコンパイラの拡張機能使ってたりもあるし

「動けばいいんだよ!」としか考えてないとどこで足元掬われるかわからん
2023/05/26(金) 22:54:23.75ID:C+URTl/Qa
んちんちんちんちんちんち
123デフォルトの名無しさん (ワッチョイ cb01-OHH9)
垢版 |
2023/05/26(金) 23:25:57.70ID:Rw5xxtFh0
>>120-121
そんな低レベルな奴見たことないけどな
居るには居るんだろうけど

あと逆にそういうのを「手を動かさない」「実用コードで試しもせずに机上の空論でマウント取る」ことの言い訳にしてる奴を最近よく見かけるのでな
2023/05/26(金) 23:42:19.49ID:mzi7SNrwM
実際VS2005ぐらいに演算の順番が決まってなくて実装依存だった
それでコードを書いてた
それがVS2007には演算順序が2005と変わってた
GCCでも別の順で計算された

どうしたらいいかわからんから多分ここに聞きにきたら未定義動作だからどうしようもない
実装依存で仕方がないと返答あり
125デフォルトの名無しさん (ワッチョイ 4b01-nxBO)
垢版 |
2023/05/27(土) 00:10:57.47ID:U8Vd2x100
自分もVCから別環境のclangに数万行のコード移したら未定義踏んでた部分あるけど、試さずにそれを最初から予知出来てたかというと無理がある
どちらかのコンパイラのバグで通らなかったりおかしな動作する場合もあるんだし(特にテンプレート周りは多い)
書いてる最中でも疑問に思ったらすぐ調べる癖がついてりゃいいんじゃないかな
2023/05/27(土) 00:12:11.79ID:ne0x12BC0
>>124 いや、文を分けて順序付けするなり、やりようはあっただろ。
2023/05/27(土) 00:24:40.55ID:bsq21T/IM
>>126
上にも書かれてるけど既存のコードのどこで問題が発生してるか全てを特定できないんだよ
2023/05/27(土) 00:41:28.44ID:LEdjjvJrd
最近のVisual C++なら「コード分析」機能でコードの改良点を教えてくれるかも知れない。
2023/05/27(土) 00:45:08.14ID:JrAUAXG20
AIが他人が書いたクソコードのリファクタリングやってくれると助かるな
2023/05/27(土) 01:23:22.98ID:D5N3c6HOa
超すごい!人間を越えた!とかワイワイさわがしいAIだが
実際にそういう感じの「マジに困ってる、やってくれたら本気で助かる」
ような事案は結局できない、という地獄
2023/05/27(土) 04:58:22.78ID:wRHxWgs90
言われたとおりやるだけ、なやつの極端な例だからな
132デフォルトの名無しさん (ワッチョイ 3bf0-TYVD)
垢版 |
2023/05/27(土) 08:03:41.82ID:hUTpNjv00
AIが人間並みの知性を持てば人間並みにエンバグしてくれるはず
2023/05/27(土) 08:08:34.97ID:ap1zYrbma
すごい!まさに人間そのもののAIじゃないか!
2023/05/29(月) 16:30:05.50ID:AteM0zCG0
責任転嫁するようになるまで人間に並んだとは認めない
2023/05/29(月) 17:54:13.71ID:I9NccWA+0
会社で嫌われるイヤな奴の特徴を全てプログラミングされたAIとか?
2023/05/29(月) 18:33:58.19ID:IrTtCTAo0
AIに相談したせいで鬱になって辞める社員が続出しそうだな
AIポイゾニングは新手のリモート攻撃として流行るかもね
2023/05/29(月) 20:15:39.44ID:I9NccWA+0
ヘイテトリスみたいな社員AI
2023/06/04(日) 08:29:54.68ID:5jvZ+YKl0
質問ですがstd::stringに格納された数値文字列を数値にしたい、
しかし数値以外の文字(ただし空白文字は認める)が後ろにくっついていたらエラーにしたい、と言う場合どうす
れば良いの?
ダチャい書き方ならできうるけど人類はいつまでstrtod()や&(str[0])……
std::string str;
str ← なんか文字列入る
char* end;
double d = std::strtod(&(str[0]), &end);
if (end == &(str[0])) { エラー }
while (*end != '\0') {
 if (!std::isspace(*end)) { エラー }
 end++;
}
2023/06/04(日) 08:38:19.14ID:Wo5LOckB0
>>138 まず、こちらへ
0からの、超初心者C++相談室
https://mevius.5ch.net/test/read.cgi/tech/1542002113/
2023/06/04(日) 09:23:46.19ID:5jvZ+YKl0
誘導されたので誘導先に建てたはサーセン、
2023/06/04(日) 11:01:36.99ID:/SPLhkOjM
文字列(char配列)とstringの仕組みはダサいけど他も大体これ
さらにspanもいれる
どこも大体同じ
142デフォルトの名無しさん (ワッチョイ edf0-+LPJ)
垢版 |
2023/06/04(日) 18:06:29.89ID:HhL1J/ge0
しかしstodの「文字列が数値で始まる場合、数値化不可能な文字があっても例外は投げずに数値化出来るところまでの部分で数値化する」ってむしろ不便だよな。
2023/06/04(日) 18:43:24.19ID:XolxJINE0
charに変換して文字コード比較して範囲内外で変換分ける処理がシンプルじゃね
2023/06/04(日) 18:44:47.92ID:XolxJINE0
速度気になるなら二分探索の処理に追加してやればいいし
2023/06/04(日) 18:45:10.55ID:XolxJINE0
再帰処理でやってもいいかな
2023/06/04(日) 18:45:59.18ID:XolxJINE0
順序保証したいならリンクリストもありか
2023/06/04(日) 18:46:48.29ID:XolxJINE0
ちんこ痒い
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。