※前スレ
C++相談室 part153
https://mevius.5ch.net/test/read.cgi/tech/1602339500/
テンプレここまで
探検
C++相談室 part154
■ このスレッドは過去ログ倉庫に格納されています
2021/01/08(金) 17:54:00.55ID:0DW9z0rL
384デフォルトの名無しさん
2021/01/31(日) 17:15:45.54ID:fCVb5Gn/ int _x; //こんなのがあっても
#define b(x,y) {int _x=x; int _y=y; f(_x,_y); g(_x,_y); } //ブロックスコープで保護されるだろうが
#define b(x,y) {int _x=x; int _y=y; f(_x,_y); g(_x,_y); } //ブロックスコープで保護されるだろうが
385デフォルトの名無しさん
2021/01/31(日) 17:19:07.49ID:ZnRwde8F >>382
でも、_ が最初に来る名前をアプリが使っちゃいけない、というのは伝統的にそういう
ことが一番の目的だと思うぞ。
もう一つは、コンパイラの内部でこっそり使う場合があって、それと知らないうちに
衝突する可能性が僅かにあるため。
なぜこっそり使うかと言うと、絶対に衝突しないようにコンパイラ側を
書こうとするとコンパイラ作りに手間がかかるから。
もし、アプリ側が命名規約を守ってくれていれば、コンパイラ作りが楽になる
ことがある。
でも、_ が最初に来る名前をアプリが使っちゃいけない、というのは伝統的にそういう
ことが一番の目的だと思うぞ。
もう一つは、コンパイラの内部でこっそり使う場合があって、それと知らないうちに
衝突する可能性が僅かにあるため。
なぜこっそり使うかと言うと、絶対に衝突しないようにコンパイラ側を
書こうとするとコンパイラ作りに手間がかかるから。
もし、アプリ側が命名規約を守ってくれていれば、コンパイラ作りが楽になる
ことがある。
386デフォルトの名無しさん
2021/01/31(日) 17:20:06.45ID:ZnRwde8F387デフォルトの名無しさん
2021/01/31(日) 17:25:17.52ID:fCVb5Gn/ >>385
おまえさんはコンパイラ屋か?
そうだとして同業者は__builtin_va_argのように注意深くやってるぞ
自分らのエゴのために客に制限をかけるようなことを
でかい声で叫びまくるのはやめてくれ
おまえさんはコンパイラ屋か?
そうだとして同業者は__builtin_va_argのように注意深くやってるぞ
自分らのエゴのために客に制限をかけるようなことを
でかい声で叫びまくるのはやめてくれ
388デフォルトの名無しさん
2021/01/31(日) 17:30:48.87ID:ZnRwde8F389デフォルトの名無しさん
2021/01/31(日) 17:37:15.73ID:2WBeknRq >>383
ローカルスコープで同じ名前の別変数を定義するのは「その自動車を私用で使う」ことには当たらないって言ってるの
ローカルスコープで同じ名前の別変数を定義するのは「その自動車を私用で使う」ことには当たらないって言ってるの
390デフォルトの名無しさん
2021/01/31(日) 17:42:24.07ID:/1NNOLNs ヘッダーファイルに書くか、ソースファイルに書くかの違いも大きい。
ヘッダーファイルに書くときは名前衝突に対する細心の注意が必要。
ヘッダーファイルに書くときは名前衝突に対する細心の注意が必要。
391デフォルトの名無しさん
2021/01/31(日) 17:45:15.36ID:fCVb5Gn/392デフォルトの名無しさん
2021/01/31(日) 17:51:16.48ID:/1NNOLNs C/C++の場合、スコープだけ意識するのは不十分で、ヘッダーかソースかで厳格さを変える柔軟性が必要。
ヘッダーに書くと影響範囲が大きいから。
ヘッダーに書くと影響範囲が大きいから。
393デフォルトの名無しさん
2021/01/31(日) 17:57:13.23ID:fCVb5Gn/ テンプレートなんか普通にヘッダに内容全部を書くが
マクロでバカやるやつがいなければ平和だよ
マクロでバカやるやつがいなければ平和だよ
394デフォルトの名無しさん
2021/01/31(日) 17:58:49.95ID:A8yllSCF ローカルスコープでも _x が禁止だというなら >>346 のマクロ a 定義内で _x を使っていい理屈もわからんよな。
395デフォルトの名無しさん
2021/01/31(日) 18:55:26.91ID:gXTMTlGe std::pair<>を継承してquadを作る場合どうなりますか?
396デフォルトの名無しさん
2021/01/31(日) 18:58:05.19ID:gXTMTlGe std::regexが意外と使える子に成長してますが、標準化委員会では捨て去る提案まで出てるそうで。
397デフォルトの名無しさん
2021/01/31(日) 19:37:14.68ID:/1NNOLNs std::regexはプロパティが貧弱なので結局、従来の正規表現ライブラリ使う羽目になる。
std::regexと互換性のあるインターフェースを持つ正規表現クラスを提供するよう呼びかけるのが現実的。
std::regexと互換性のあるインターフェースを持つ正規表現クラスを提供するよう呼びかけるのが現実的。
398デフォルトの名無しさん
2021/01/31(日) 19:51:04.44ID:vFnk+kXo 順序付き pair って自分で順番に格納するのと2要素のsetにするのどっちが良いですか
399デフォルトの名無しさん
2021/01/31(日) 20:39:53.24ID:/1NNOLNs pairはSTLのアルゴリズムの恩恵を得るための物。
自宅の郵便受けを豪華にしたところで、郵便事業には何の関係もない。ただの趣味の世界。
自宅の郵便受けを豪華にしたところで、郵便事業には何の関係もない。ただの趣味の世界。
400デフォルトの名無しさん
2021/01/31(日) 21:08:09.18ID:vFnk+kXo set< pear<int, int> > で、ある数を含む pear を高速に検索する方法ってある?
401デフォルトの名無しさん
2021/01/31(日) 21:47:36.00ID:jyYnHelr set<int, vector<pair<int,int>*>>
元の集合に1億個程度のペアが入ってるとすると、住所録めいたものをあらかじめ生成しておく
配列でやっても速そう
list[m].empty()
こういうリストで空っぽかどうかわかればいいわけだ
vector<vector<pair<int,int>*>>>;
それならドでかい二次元配列に入れた方がラクかもしれない
連想配列でも出来る
map<int ,vector<pair<int,int>*>>>
静的な話だったが動的つまり追加と検索が交互に起こるとおそらく話は違ってくる
全部試して早かったモンが高速である、程度の他愛ない結論に落ち着く
元の集合に1億個程度のペアが入ってるとすると、住所録めいたものをあらかじめ生成しておく
配列でやっても速そう
list[m].empty()
こういうリストで空っぽかどうかわかればいいわけだ
vector<vector<pair<int,int>*>>>;
それならドでかい二次元配列に入れた方がラクかもしれない
連想配列でも出来る
map<int ,vector<pair<int,int>*>>>
静的な話だったが動的つまり追加と検索が交互に起こるとおそらく話は違ってくる
全部試して早かったモンが高速である、程度の他愛ない結論に落ち着く
402デフォルトの名無しさん
2021/01/31(日) 22:01:19.63ID:gvpDZJRs 構造体にしろよバカども
読みにくいだろ
読みにくいだろ
404デフォルトの名無しさん
2021/01/31(日) 23:01:41.96ID:eyFvwlDf googleスタイルガイドはそちらを推してるな
405デフォルトの名無しさん
2021/02/01(月) 01:17:42.16ID:FSry25xS >>391
int _x=_y;
int _y=_x;
ここの二行目の右辺の_xは、b(_y,_x)の第二引数の_xではなく、一行目
で宣言した_xになっているので、b(_y,_x)の第一引数の_yになる。つまり、
int _x=引数の_y;
int _y=引数の_y;
となるので、{}の中の_x, _yは、どちらも引数の_yの値に等しくなってしまう。
これではマクロ作者が意図したことではなくなってしまう。
int _x=_y;
int _y=_x;
ここの二行目の右辺の_xは、b(_y,_x)の第二引数の_xではなく、一行目
で宣言した_xになっているので、b(_y,_x)の第一引数の_yになる。つまり、
int _x=引数の_y;
int _y=引数の_y;
となるので、{}の中の_x, _yは、どちらも引数の_yの値に等しくなってしまう。
これではマクロ作者が意図したことではなくなってしまう。
406デフォルトの名無しさん
2021/02/01(月) 01:19:32.38ID:FSry25xS407デフォルトの名無しさん
2021/02/01(月) 01:22:56.68ID:FSry25xS >>389
そうではなくて、ローカルスコープで使うことそのものが、file scope
で使ってないことに当たるので、規約違反と言うことになると解釈できる
気がするんだ。
なぜそんなルールにしたのかは分からんがな。
そうではなくて、ローカルスコープで使うことそのものが、file scope
で使ってないことに当たるので、規約違反と言うことになると解釈できる
気がするんだ。
なぜそんなルールにしたのかは分からんがな。
408デフォルトの名無しさん
2021/02/01(月) 03:22:30.15ID:fw9rYrIy409デフォルトの名無しさん
2021/02/01(月) 07:01:58.51ID:v6ebtUL1 >>400
unordered_map<int, int>
unordered_map<int, int>
410デフォルトの名無しさん
2021/02/01(月) 07:30:17.18ID:LhepLs74411デフォルトの名無しさん
2021/02/01(月) 07:38:30.21ID:LhepLs74 として安全に取り扱われる
一方>>346の_xはa(x)が展開された結果が他のプリプロセッサ定義で再置換され得るなら危険
これが起きるかはプリプロセッサの仕様(規格)を見たら白黒付くが
個人的には君子なので危うきには近づかないことに死体、
一方>>346の_xはa(x)が展開された結果が他のプリプロセッサ定義で再置換され得るなら危険
これが起きるかはプリプロセッサの仕様(規格)を見たら白黒付くが
個人的には君子なので危うきには近づかないことに死体、
412デフォルトの名無しさん
2021/02/01(月) 08:09:47.67ID:v6ebtUL1 うちの若いのがあんなアホマクロ書いてたら張っ倒す
まあ、やらかしそうなのはいないけど
まあ、やらかしそうなのはいないけど
413デフォルトの名無しさん
2021/02/01(月) 09:26:53.82ID:5yr9aQzL414デフォルトの名無しさん
2021/02/01(月) 11:43:32.41ID:xFB8fPis 仕事に情熱が持てなくなった
415デフォルトの名無しさん
2021/02/01(月) 11:43:38.91ID:VhfMLcQM >>346
アホだ
アホだ
416デフォルトの名無しさん
2021/02/01(月) 12:06:54.06ID:ZelzH3+k417デフォルトの名無しさん
2021/02/01(月) 12:30:15.68ID:jyRtFT93 >>408
>file scope で予約されてる名前を file scope で使ってないなら問題ないね。
そうじゃない。
英語原文を読めば、file scopeで予約されているのではなく、file scopeで
使用するために予約されているのだ。
だから、file scope以外で使用することが禁止されている。
>file scope で予約されてる名前を file scope で使ってないなら問題ないね。
そうじゃない。
英語原文を読めば、file scopeで予約されているのではなく、file scopeで
使用するために予約されているのだ。
だから、file scope以外で使用することが禁止されている。
418デフォルトの名無しさん
2021/02/01(月) 12:32:18.30ID:jyRtFT93 >>417
日本語で言うなら、「file scope 専用」。
日本語で言うなら、「file scope 専用」。
419デフォルトの名無しさん
2021/02/01(月) 12:46:40.95ID:/T40sBmV420デフォルトの名無しさん
2021/02/01(月) 12:55:04.41ID:ioMwojjO >>417
その一文ばっかりやたらこだわるけど
これが属しているセクションの名前って「17.4.3.1.2 Global names」なんだわ
グローバル名前空間の名前以外については言及してないの
ドラフトならインターネットで無料で見られるんだからこの辺の全容見てきな?
その一文ばっかりやたらこだわるけど
これが属しているセクションの名前って「17.4.3.1.2 Global names」なんだわ
グローバル名前空間の名前以外については言及してないの
ドラフトならインターネットで無料で見られるんだからこの辺の全容見てきな?
421デフォルトの名無しさん
2021/02/01(月) 13:14:13.18ID:Z79JHlVc >>417
あらゆる場所で使ってはいけないのなら、7.1.3でわざわざ1つ目と対比させるように使用用途を限定して記載した理由を説明してよ。
普通はコンパイラ実装者のために予約されている、だけで十分でしょ
あらゆる場所で使ってはいけないのなら、7.1.3でわざわざ1つ目と対比させるように使用用途を限定して記載した理由を説明してよ。
普通はコンパイラ実装者のために予約されている、だけで十分でしょ
422デフォルトの名無しさん
2021/02/01(月) 13:45:48.95ID:fos4FOVO 仕事に情熱が持てなくなった
423デフォルトの名無しさん
2021/02/01(月) 13:50:50.97ID:jyRtFT93 https://www.learncpp.com/cpp-tutorial/keywords-and-naming-identifiers/comment-page-2/
Second, you should avoid naming your identifiers starting with an underscore, as these names are typically reserved for OS, library, and/or compiler use.
Second, you should avoid naming your identifiers starting with an underscore, as these names are typically reserved for OS, library, and/or compiler use.
424デフォルトの名無しさん
2021/02/01(月) 14:08:01.06ID:fos4FOVO425デフォルトの名無しさん
2021/02/01(月) 14:13:00.08ID:fos4FOVO >>416
「コロナでゴロゴロ病」
「コロナでゴロゴロ病」
426デフォルトの名無しさん
2021/02/01(月) 15:47:43.70ID:Z79JHlVc >>423
そのサイトを紹介して何の証明になるの?
そのサイトを紹介して何の証明になるの?
427デフォルトの名無しさん
2021/02/01(月) 16:16:30.24ID:ZelzH3+k428デフォルトの名無しさん
2021/02/01(月) 16:22:14.79ID:ZelzH3+k C++ is the only real language for expert developers.
429デフォルトの名無しさん
2021/02/01(月) 16:55:19.50ID:fos4FOVO C/C++は好きだし比較的最強の部類だと思うけど
夢未過ぎは判断を誤るから色んな言語を適材適所に使えるようになるのが理想
夢未過ぎは判断を誤るから色んな言語を適材適所に使えるようになるのが理想
430デフォルトの名無しさん
2021/02/01(月) 17:40:26.58ID:LhepLs74 システム記述言語はアセンブラを除けばこの世にCとC++とRustしか、
431デフォルトの名無しさん
2021/02/01(月) 17:46:42.82ID:ZelzH3+k 中国人のありがたいお言葉ですぞ。
432デフォルトの名無しさん
2021/02/01(月) 18:02:36.06ID:jyRtFT93 大体、この板には中国人や韓国人はほとんど来ず、来ているのはアメリカ人
やヨーロッパやアフリカが多いらしい。
やヨーロッパやアフリカが多いらしい。
433デフォルトの名無しさん
2021/02/01(月) 18:44:36.44ID:+21BJdPm いやrustが最強でしょww
434デフォルトの名無しさん
2021/02/01(月) 18:47:23.23ID:CDWd/LQ7 Goは駄目なん?
435デフォルトの名無しさん
2021/02/01(月) 18:57:50.94ID:0s4gr52A 自作の構造体をsetに入れたいときって operator < さえ定義しとけば良いの?
eraseとかは全部のメンバが同じものを見つけて消してくれると思って良い?
eraseとかは全部のメンバが同じものを見つけて消してくれると思って良い?
436デフォルトの名無しさん
2021/02/01(月) 21:08:59.66ID:ZelzH3+k 検索するとひろみをお勧めしてくる時点で無理だった。
437デフォルトの名無しさん
2021/02/01(月) 21:34:17.50ID:ZelzH3+k しかもチップも取るんかーい!
438デフォルトの名無しさん
2021/02/01(月) 22:43:42.23ID:CtNYZU7D439デフォルトの名無しさん
2021/02/01(月) 22:46:24.33ID:FbSt8IWH 演算子オーバーロードは地雷度高い。
440デフォルトの名無しさん
2021/02/01(月) 22:53:14.56ID:CtNYZU7D まあ、setに入れるためだけなら演算子オーバーロードするより関数オブジェクト使う方がいいかね
441デフォルトの名無しさん
2021/02/01(月) 23:03:45.93ID:f9q1oLiO C++の質問じゃないとは思うんですが、上位数ビットを0で埋めたいといった場合は
「0埋めしたいビットを0、他を1にしたもので&演算する」
であってますか?
「0埋めしたいビットを0、他を1にしたもので&演算する」
であってますか?
442デフォルトの名無しさん
2021/02/01(月) 23:11:37.27ID:ZelzH3+k 合ってます。
443デフォルトの名無しさん
2021/02/01(月) 23:17:45.03ID:f9q1oLiO444デフォルトの名無しさん
2021/02/02(火) 02:08:00.00ID:DmcXRB7X へ椅子ブックが少し綺麗になってます。
445デフォルトの名無しさん
2021/02/02(火) 02:10:27.05ID:DmcXRB7X RedditのC++コミュは17万人、オンラインが500人以上。
凄いね。
凄いね。
446デフォルトの名無しさん
2021/02/02(火) 10:17:10.33ID:uFATDe77 ビット演算の中で最速なのってシフトじゃなかったっけ?
だから下手したら>>443の方がフェムト秒レベルでは微妙に早いんじゃない?
だから下手したら>>443の方がフェムト秒レベルでは微妙に早いんじゃない?
447デフォルトの名無しさん
2021/02/02(火) 10:29:21.33ID:kGc73xZq 命令語長がマスク分だけでもQWORDに対して、シフトなら1バイト程度か
448デフォルトの名無しさん
2021/02/02(火) 12:37:23.36ID:vWAdhQ36449はちみつ餃子 ◆8X2XSCHEME
2021/02/02(火) 12:49:48.88ID:+MtixY9O450デフォルトの名無しさん
2021/02/02(火) 13:08:50.07ID:aIAA0dxH Goはクソすぎるから駄目だ
何が駄目といってまず名前が駄目
何が駄目といってまず名前が駄目
451デフォルトの名無しさん
2021/02/02(火) 13:45:57.34ID:8HFbTrXI GoはPC初心者用
昔でいういわばBASIC
昔でいういわばBASIC
452デフォルトの名無しさん
2021/02/02(火) 18:03:08.15ID:FSwj4KRK バレルシフタと単純ゲート
レイテンシも糞もねえだろ
レイテンシも糞もねえだろ
453デフォルトの名無しさん
2021/02/02(火) 18:11:36.53ID:8HFbTrXI でもその縛りプレイが大好きな変人も居る
454デフォルトの名無しさん
2021/02/02(火) 22:23:15.74ID:likaPPB8 operator ==も定義しておくとなお良い
==のために<が2回呼ばれるのもアホらしいと感じるはず…
結局std::rel_opsを使って全部定義するという結論に落ち着く
==のために<が2回呼ばれるのもアホらしいと感じるはず…
結局std::rel_opsを使って全部定義するという結論に落ち着く
455デフォルトの名無しさん
2021/02/02(火) 22:25:04.30ID:likaPPB8 インテルのやつはバレルシフタじゃない気配がする…
シフト結果をテーブル化した方が速かったことg
シフト結果をテーブル化した方が速かったことg
456デフォルトの名無しさん
2021/02/02(火) 22:28:35.48ID:likaPPB8 あるいは最大限バレルシフタにしようとしているがパイプライン1段に収まっていないだけかもしれん…
457はちみつ餃子 ◆8X2XSCHEME
2021/02/03(水) 00:25:34.21ID:p0NvFN6a >>443
gcc, clang, msvc で最適化最大で試してみたら and をとるように最適化されたぞ。
主要コンパイラがそのように最適化するということは (前後の状況によるかもしれないけど)
たぶん and のほうが効率的ってことなんだろう。
gcc, clang, msvc で最適化最大で試してみたら and をとるように最適化されたぞ。
主要コンパイラがそのように最適化するということは (前後の状況によるかもしれないけど)
たぶん and のほうが効率的ってことなんだろう。
458デフォルトの名無しさん
2021/02/03(水) 00:38:50.10ID:53EFMpkm ビットシフトは64bit整数でのコンパイラ解釈が信用できないからAND演算子使うのが確実だと思うけどどうかな。
459デフォルトの名無しさん
2021/02/03(水) 00:51:08.70ID:5b6XJ+8s >>458
落ち着いてよく考えてみよう
お前がC++で作った成果物のうち、お前自身が書いたコードの割合なんてごくごく僅かに過ぎない
仮にそんなレベルで互換性が当てにならないような環境があったとして、お前が直接書いていない他の99%のコードがまともに動くと本気で思うか?
落ち着いてよく考えてみよう
お前がC++で作った成果物のうち、お前自身が書いたコードの割合なんてごくごく僅かに過ぎない
仮にそんなレベルで互換性が当てにならないような環境があったとして、お前が直接書いていない他の99%のコードがまともに動くと本気で思うか?
460はちみつ餃子 ◆8X2XSCHEME
2021/02/03(水) 00:54:51.58ID:p0NvFN6a 0xffffffffff とか書いてたら桁数を正しく書けてるか不安になる……
今の C++ だと桁区切りも入れられるけど、
どう入れたら意図がわかりやすいかようわからんし、
シフトで表現するのもありな選択だと思う。
今の C++ だと桁区切りも入れられるけど、
どう入れたら意図がわかりやすいかようわからんし、
シフトで表現するのもありな選択だと思う。
461デフォルトの名無しさん
2021/02/03(水) 01:01:02.57ID:+m9V7fCu >>458
具体例をお願いできますか?
具体例をお願いできますか?
462デフォルトの名無しさん
2021/02/03(水) 01:20:23.24ID:53EFMpkm コンパイラがちゃんと32bit整数への丸め警告を出してくれるならいいが、しれっとコンパイルされたらお手上げ。
463デフォルトの名無しさん
2021/02/03(水) 02:47:38.99ID:+m9V7fCu464デフォルトの名無しさん
2021/02/03(水) 06:01:31.58ID:QcjMAifW >>460
0x0000'ffffull
0x0000'ffffull
465デフォルトの名無しさん
2021/02/03(水) 06:29:42.77ID:y3dS6mbz unsigned long long x = (0x1ULL << 32) - 1ULL;
ならちゃんと動く(と思う)が
unsigned long long x = (0x1 << 32) - 1;
とかだとイマイチ不安が…
ならちゃんと動く(と思う)が
unsigned long long x = (0x1 << 32) - 1;
とかだとイマイチ不安が…
466デフォルトの名無しさん
2021/02/03(水) 06:38:54.06ID:Nl+WsQpo >>465
下の方はイコールの右辺にintしか出てこないのだから、intが32bitの環境なら32bitでしか計算されないだろう
下の方はイコールの右辺にintしか出てこないのだから、intが32bitの環境なら32bitでしか計算されないだろう
467デフォルトの名無しさん
2021/02/03(水) 10:23:38.02ID:q8Ed7guF 丸めと暗黙の型変換は違うものでは?
468デフォルトの名無しさん
2021/02/03(水) 11:47:09.95ID:HtH84Poo 丸めや打ち切りは浮動小数点数の概念やね
469デフォルトの名無しさん
2021/02/03(水) 13:02:19.58ID:53EFMpkm ビットシフト記述は自然すぎてソースコードに埋もれてしまう。
64ビットマスクのAND記述は見た目がどぎついので、かえって人間の注意を引くことができる。
64ビットマスクのAND記述は見た目がどぎついので、かえって人間の注意を引くことができる。
470デフォルトの名無しさん
2021/02/03(水) 14:45:43.48ID:J722wycU なにいってんだこいつ
471デフォルトの名無しさん
2021/02/03(水) 15:50:32.48ID:pE1foWCw472デフォルトの名無しさん
2021/02/03(水) 19:12:23.88ID:XaYGR0Wv そう?ポインタサイズくらいしか違いなくない?
473デフォルトの名無しさん
2021/02/03(水) 21:29:02.90ID:53EFMpkm まじめにC/C++標準型size_tを使っている人には32bitと64bitの処理切り分けが地味に辛い。
474デフォルトの名無しさん
2021/02/03(水) 22:36:28.54ID:y3dS6mbz >>465の下の方のやつは符号拡張されたりする気がするorz
475デフォルトの名無しさん
2021/02/03(水) 22:40:25.83ID:Ea4RwHR/ >>424
> obj& operator [] (int i) {return elem[i];}
> もちろんelem[]の定義はobj elem[];
objは行列クラスで、elemはobjのメンバで行列要素を格納する一次元配列、で合ってますよね?
class obj{
array<int, ?> elem;
public:
obj& operator [] (int i) {return elem[i];}
};
ということですか?
> obj& operator [] (int i) {return elem[i];}
> もちろんelem[]の定義はobj elem[];
objは行列クラスで、elemはobjのメンバで行列要素を格納する一次元配列、で合ってますよね?
class obj{
array<int, ?> elem;
public:
obj& operator [] (int i) {return elem[i];}
};
ということですか?
476デフォルトの名無しさん
2021/02/04(木) 03:22:45.38ID:R0EDVzG0477デフォルトの名無しさん
2021/02/04(木) 04:17:06.60ID:SkZt7jTc478デフォルトの名無しさん
2021/02/04(木) 11:32:06.33ID:sIhIIpMX size_t型はSTLを使う人なら避けて通れない。
479デフォルトの名無しさん
2021/02/04(木) 11:40:48.70ID:ZzRKCYY/ >>471
それ本来そこにあった問題に気付いていないだけだったと思うぞ
それ本来そこにあった問題に気付いていないだけだったと思うぞ
480デフォルトの名無しさん
2021/02/04(木) 11:44:02.03ID:ZzRKCYY/481デフォルトの名無しさん
2021/02/04(木) 12:06:17.02ID:DWE1XJjK >>480
それってarrayのarrayとかvectorのvectorとか配列の配列として行列を作るのと同じですよね?
一次元配列に要素を格納しておいて[][]でアクセスするのは不可能なんでしょうか
row majorやcolumn majorを自由にできる、等の理由でそちらの方が好ましいのですが
それってarrayのarrayとかvectorのvectorとか配列の配列として行列を作るのと同じですよね?
一次元配列に要素を格納しておいて[][]でアクセスするのは不可能なんでしょうか
row majorやcolumn majorを自由にできる、等の理由でそちらの方が好ましいのですが
482デフォルトの名無しさん
2021/02/04(木) 12:29:12.61ID:waKgX41w 一次元配列を内包しているクラスのoperator[](int y)が、下記のようなクラスを返すようにすればできる。
class Row {
vector<int>& 一次元配列への参照
int 列数
int y
int& operator[](int x){ return 一次元配列への参照[列数*y+x]; }
};
でも自分ならoperator[]は使わずもとのクラスにindex(x, y)みたいな関数を用意して対処すると思う。
class Row {
vector<int>& 一次元配列への参照
int 列数
int y
int& operator[](int x){ return 一次元配列への参照[列数*y+x]; }
};
でも自分ならoperator[]は使わずもとのクラスにindex(x, y)みたいな関数を用意して対処すると思う。
483デフォルトの名無しさん
2021/02/04(木) 13:10:42.29ID:g2cSm/y9 malloc とか new で確保したメモリ領域を使うように
vector ( または array ) をインスタンス化するにはどうすればよいですか?
vector ( または array ) をインスタンス化するにはどうすればよいですか?
484はちみつ餃子 ◆8X2XSCHEME
2021/02/04(木) 13:13:43.37ID:ttCVH4wp >>481
こういう雰囲気で他のクラスをひとつ間に入れることでなんとかなる。
https://wandbox.org/permlink/ZXI1nkkCLRJQPtAJ
だけど俺も >>482 の言う通り operator[] にこだわらずに適当なメンバ関数でやる方法を推すわ。
実態として二引数なのだし、記法のためだけに余計な定義をするの馬鹿らしいと思う。
提案としては hoge[i, j] みたいな感じで二引数のインデックスを受け取れるようにする案は出てるんだが、
現状ではこのときのカンマは普通にカンマ演算子として解釈される。
前準備として、 C++20 からはブラケット内でのカンマは非推奨にするという変更が入っている。
https://timsong-cpp.github.io/cppwp/n4861/depr.comma.subscript
こういう雰囲気で他のクラスをひとつ間に入れることでなんとかなる。
https://wandbox.org/permlink/ZXI1nkkCLRJQPtAJ
だけど俺も >>482 の言う通り operator[] にこだわらずに適当なメンバ関数でやる方法を推すわ。
実態として二引数なのだし、記法のためだけに余計な定義をするの馬鹿らしいと思う。
提案としては hoge[i, j] みたいな感じで二引数のインデックスを受け取れるようにする案は出てるんだが、
現状ではこのときのカンマは普通にカンマ演算子として解釈される。
前準備として、 C++20 からはブラケット内でのカンマは非推奨にするという変更が入っている。
https://timsong-cpp.github.io/cppwp/n4861/depr.comma.subscript
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】 アメリカ議会 「中国が台湾武力侵攻する準備を急速進展中」 [お断り★]
- 「二枚舌は許されない」中国外務省 高市総理の発言を批判… [BFU★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★8 [樽悶★]
- 中国国際航空が日本便を減便へ、春節休みも SNSでは投稿相次ぐ [七波羅探題★]
- 「二枚舌は許されない」中国外務省 高市総理の発言を批判… ★2 [BFU★]
- 【速報】公然わいせつの疑いで逮捕・送検・略式起訴のAぇ! group 草間リチャード敬太メンバー 脱退を発表 「心の病の療養」に専念 [Ailuropoda melanoleuca★]
- 【実況】博衣こよりのえちえちお子様ランチ🛸💜🥀🧪🍃
- でもさ、国会議員の歳費が上がると民間給与も連動して上がると言われてるんだよ [237216734]
- 【画像】中国軍、高市早苗の新作画像を公開wwwwwwwwww [834922174]
- 【悲報】高市有事、中国から追加の報復措置が来る模様 [834922174]
- 【男磨き】ハウスルール汁遊び禁止🈲🏡【ジョージメンズコーチ】
- 恐ろしい😈のちゅちょちゅちょ・ちぇびるのお🏡
