※前スレ
C++相談室 part153
https://mevius.5ch.net/test/read.cgi/tech/1602339500/
テンプレここまで
探検
C++相談室 part154
■ このスレッドは過去ログ倉庫に格納されています
2021/01/08(金) 17:54:00.55ID:0DW9z0rL
304デフォルトの名無しさん
2021/01/30(土) 06:47:43.00ID:budoESfZ コンストラクタの初期化リストで
class A{
int x;
public:
A(int x) : x(x) {}
};
みたいにしたとき、ちゃんとメンバのxがコンストラクタの引数のxで初期化されますよね?
メンバの x と同名の引数の x が同一のスコープに同居しているようで紛らわしいかなと思ったのですが、こういう書き方を避ける慣習はありますか
class A{
int x;
public:
A(int x) : x(x) {}
};
みたいにしたとき、ちゃんとメンバのxがコンストラクタの引数のxで初期化されますよね?
メンバの x と同名の引数の x が同一のスコープに同居しているようで紛らわしいかなと思ったのですが、こういう書き方を避ける慣習はありますか
305デフォルトの名無しさん
2021/01/30(土) 07:04:07.72ID:ULcRPxme 自分は普通にその書き方してる
避ける人も居るっぽいけど好きなようにすればいい
避ける人も居るっぽいけど好きなようにすればいい
306デフォルトの名無しさん
2021/01/30(土) 09:09:49.20ID:PHKUCpSE iostreamマンセーバカってのは型安全ならどんな仕様でも良いと思ってるカスが多いからな。
型安全は評価する一項目に過ぎないってのに。
型安全は評価する一項目に過ぎないってのに。
307デフォルトの名無しさん
2021/01/30(土) 09:29:38.23ID:vDjChjwr iostreamは整形のための情報をわざわざ状態として持たされるのがクソ
当時は状態が邪悪だっていう考え方が一般的じゃなかったからしょうがないけど
当時は状態が邪悪だっていう考え方が一般的じゃなかったからしょうがないけど
308デフォルトの名無しさん
2021/01/30(土) 09:38:20.91ID:2pTx0la6 でも状態もってなかったら記述が煩雑になりすぎない?
HTMLのマークアップとまでは言わんまでも
HTMLのマークアップとまでは言わんまでも
309デフォルトの名無しさん
2021/01/30(土) 09:59:20.80ID:OHt9F1SU 整形設定を記憶する変数インスタンスをiostreamインスタンスと分離すべきって話でしょ。
必要に応じて差し替えできるように参照渡しするか、逆にiostreamを参照渡しするとか色々やれたはず。
必要に応じて差し替えできるように参照渡しするか、逆にiostreamを参照渡しするとか色々やれたはず。
310デフォルトの名無しさん
2021/01/30(土) 10:06:40.70ID:OHt9F1SU というか他のオブジェクト指向言語だと整形情報がFormatterクラスとかに分離されているのが普通だし。
311デフォルトの名無しさん
2021/01/30(土) 10:32:05.24ID:PJvUkb6d FORTRANのFORMAT文が好きな人をどうこうしようとは思わない
312デフォルトの名無しさん
2021/01/30(土) 10:40:52.47ID:hVJYorL3 初歩的な質問なのですが、stringクラスの内部バッファはデストラクタで破棄されるため自分では一切管理しなくていいという認識で良いのでしょうか?
313デフォルトの名無しさん
2021/01/30(土) 11:17:24.76ID:SLqQC90z アロケータによるけど、普通は管理しなくて良いのでは?
314デフォルトの名無しさん
2021/01/30(土) 12:47:13.80ID:EWZvTk3z >>308
状態持ってても無駄に煩雑(複雑ではない)
状態持ってても無駄に煩雑(複雑ではない)
315デフォルトの名無しさん
2021/01/30(土) 12:57:10.51ID:8FYOnD7D iostream 型安全なのはいいけど、char/signed char/unsigned char ぜんぶ文字扱いするのはやめて欲しかった。
316デフォルトの名無しさん
2021/01/30(土) 13:18:35.30ID:SLqQC90z 単項プラスで。
317はちみつ餃子 ◆8X2XSCHEME
2021/01/30(土) 13:18:38.04ID:4OMKN/Z4 >>309
入出力を直接的に司るバッファクラス (basic_streambuf) と
書式制御を司るストリームクラスを分離したデザインになっているし、
必要に応じて差し替えることも出来るよ。
iostream においてそれがわかりやすいか、良いデザインであるかは別として、
ちゃんと分離したデザインになってる。
入出力を直接的に司るバッファクラス (basic_streambuf) と
書式制御を司るストリームクラスを分離したデザインになっているし、
必要に応じて差し替えることも出来るよ。
iostream においてそれがわかりやすいか、良いデザインであるかは別として、
ちゃんと分離したデザインになってる。
>>304
私は馬鹿なのでメンバ変数とコンストラクタ引数を x, _x というふうに書き分けています、馬鹿が感染るかもしれないのでお勧めはしません
私は馬鹿なのでメンバ変数とコンストラクタ引数を x, _x というふうに書き分けています、馬鹿が感染るかもしれないのでお勧めはしません
319デフォルトの名無しさん
2021/01/30(土) 15:08:20.24ID:S5wIZr5N C++でのメンバ変数は、標準的には m_xと書く。
320デフォルトの名無しさん
2021/01/30(土) 16:04:40.96ID:0ahE8ZR3321デフォルトの名無しさん
2021/01/30(土) 16:41:05.48ID:SLqQC90z MicrosoftとAdobeがその書き方多いですね。
322デフォルトの名無しさん
2021/01/30(土) 17:13:12.28ID:S5wIZr5N なお、_x は、命名規約上、禁止。先頭が _ の名前はコンパイラなどの
システム予約なため。
システム予約なため。
323デフォルトの名無しさん
2021/01/30(土) 17:14:26.98ID:2r/QlSUC そうだったっけ?
324はちみつ餃子 ◆8X2XSCHEME
2021/01/30(土) 17:19:55.79ID:4OMKN/Z4 >>304
>>318-319
命名規約の方法論は色々なのでプレフィクスを付けるルールが定めてある場合もあるし、
むしろ一致させていくようにしているものもある。
私自身は、少なくともメンバに値を設定するだけの単純なコンストラクタである場合には
名前を一致させていくスタイルで書く。
C++ を使う上でのガイドラインとしてよく参照されているのはグーグルのスタイルガイドで、
データメンバの名前は最後にアンダースコアを付けるようにルールを定めている。
https://google.github.io/styleguide/cppguide.html#Variable_Names
その一方では C++ の設計者である Stroustrup は型やスコープを変数名に含めるのは好ましくない
(しかし部分的に便利な場合もあることは認めている) と書いている。
https://stroustrup.com/bs_faq2.html#Hungarian
どちらの習慣が圧倒的優勢ということはないと思う。
>>322
グローバル変数としてはアンダースコアで始まる名前は予約されているけど、
そうでない場合には問題ない。
ただし、
・ アンダースコアで始まって大文字が続く名前
・ アンダースコアが連続 (名前の先頭部分以外でも) する名前
は名前の種類やスコープにかかわらずどこでも予約されている。
>>318-319
命名規約の方法論は色々なのでプレフィクスを付けるルールが定めてある場合もあるし、
むしろ一致させていくようにしているものもある。
私自身は、少なくともメンバに値を設定するだけの単純なコンストラクタである場合には
名前を一致させていくスタイルで書く。
C++ を使う上でのガイドラインとしてよく参照されているのはグーグルのスタイルガイドで、
データメンバの名前は最後にアンダースコアを付けるようにルールを定めている。
https://google.github.io/styleguide/cppguide.html#Variable_Names
その一方では C++ の設計者である Stroustrup は型やスコープを変数名に含めるのは好ましくない
(しかし部分的に便利な場合もあることは認めている) と書いている。
https://stroustrup.com/bs_faq2.html#Hungarian
どちらの習慣が圧倒的優勢ということはないと思う。
>>322
グローバル変数としてはアンダースコアで始まる名前は予約されているけど、
そうでない場合には問題ない。
ただし、
・ アンダースコアで始まって大文字が続く名前
・ アンダースコアが連続 (名前の先頭部分以外でも) する名前
は名前の種類やスコープにかかわらずどこでも予約されている。
325デフォルトの名無しさん
2021/01/30(土) 17:30:01.20ID:2r/QlSUC 互いの信仰を侵害してはならないがチーム内では統一されている必要がある
規約の背景は明確である必要がある
規約の背景は明確である必要がある
326デフォルトの名無しさん
2021/01/30(土) 18:08:50.99ID:OHt9F1SU >>317
まず、FILE*とostreamが一対一対応していないのがダメ。
せっかくC言語でファイル、パイプ、標準IOがFILE*型としてで統合化・抽象化されていたのに、
C++でostreamとfstreamで分離される劣化が起きた。
まず、FILE*とostreamが一対一対応していないのがダメ。
せっかくC言語でファイル、パイプ、標準IOがFILE*型としてで統合化・抽象化されていたのに、
C++でostreamとfstreamで分離される劣化が起きた。
327デフォルトの名無しさん
2021/01/30(土) 18:30:25.89ID:PJvUkb6d ios_baseで統一する形に変わっただけ
それをFILE*がどうたらと駄々こねるのは
頭が堅すぎる実年齢に無関係の老害だ
それをFILE*がどうたらと駄々こねるのは
頭が堅すぎる実年齢に無関係の老害だ
328デフォルトの名無しさん
2021/01/30(土) 18:36:35.02ID:OHt9F1SU パイプ処理をostream系で書く奇特な人ってどのくらいいるの?
329デフォルトの名無しさん
2021/01/30(土) 18:41:09.24ID:OHt9F1SU pythonは定数がないから全部大文字の変数は定数のようにみなしましょう的な談合がある。
330デフォルトの名無しさん
2021/01/30(土) 19:00:34.72ID:0ahE8ZR3 定数というか型もない
>>322
束縛領域が狭いローカル変数とかには、_x を使ってもいいのではないか?と考えていますが‥‥
束縛領域が狭いローカル変数とかには、_x を使ってもいいのではないか?と考えていますが‥‥
332デフォルトの名無しさん
2021/01/30(土) 20:32:34.21ID:PJvUkb6d data_
size_
size_
333デフォルトの名無しさん
2021/01/31(日) 03:18:57.87ID:6QCY/vGM334デフォルトの名無しさん
2021/01/31(日) 06:52:18.40ID:gXTMTlGe HTTPサーバーのサンプルで、関数型言語がCを凌駕して、C実装の作者が??になってるやり取りをどこかで見たのですが、わかる方いらっしゃいませんか?
おそらくC++は簡単に勝てるはずなんですが。
おそらくC++は簡単に勝てるはずなんですが。
335デフォルトの名無しさん
2021/01/31(日) 07:27:56.74ID:fCVb5Gn/ dmrが?
336デフォルトの名無しさん
2021/01/31(日) 09:14:46.77ID:bSEeGU13 >>333
c++実装者がユーザから参照可能な形でそれやってるの見たことあるの?
c++実装者がユーザから参照可能な形でそれやってるの見たことあるの?
337デフォルトの名無しさん
2021/01/31(日) 09:22:03.74ID:fCVb5Gn/338デフォルトの名無しさん
2021/01/31(日) 10:19:42.43ID:BqL9JwJS339デフォルトの名無しさん
2021/01/31(日) 10:23:16.43ID:BqL9JwJS >>331
_で始めると激しくコンパイラ依存になる
_で始めると激しくコンパイラ依存になる
340デフォルトの名無しさん
2021/01/31(日) 10:50:22.50ID:BqL9JwJS >>334
Erlang?
Erlang?
341はちみつ餃子 ◆8X2XSCHEME
2021/01/31(日) 10:57:57.30ID:+XHxoAeu >>339
繰り返すが言語仕様上はグローバル変数ではない名前の頭がアンダースコアで始まるだけなら問題ない。
現実に出来が悪いコンパイラがたくさんあるのであれば仕方がないが、
少なくとも俺はそんなのに遭遇したことはない。
繰り返すが言語仕様上はグローバル変数ではない名前の頭がアンダースコアで始まるだけなら問題ない。
現実に出来が悪いコンパイラがたくさんあるのであれば仕方がないが、
少なくとも俺はそんなのに遭遇したことはない。
342デフォルトの名無しさん
2021/01/31(日) 11:04:21.78ID:fCVb5Gn/343デフォルトの名無しさん
2021/01/31(日) 11:29:10.73ID:2WBeknRq344デフォルトの名無しさん
2021/01/31(日) 12:10:02.04ID:gXTMTlGe345デフォルトの名無しさん
2021/01/31(日) 13:12:26.22ID:ZnRwde8F >>341
英語サイトでも、説明の仕方が誤解を招くようなものがありまして、もしかしたらそれは誤解かも知れません。
https://stackoverflow.com/questions/25090635/use-and-in-c-programs
「Here's what the C standard says (section 7.1.3):
1. All identifiers that begin with an underscore and either an uppercase letter or another underscore are always reserved for any use.
2. All identifiers that begin with an underscore are always reserved for use as identifiers with file scope in both the ordinary and tag name spaces.」
訳:
1. アンダースコアで始まって直後に英大文字が続くか、または、アンダースコアが連続して
続く識別子は、いかなる使用も予約されている。
2. アンダースコアで始まる全ての識別子は、通常または、タグ名前空間における
ファイルスコープの識別子として常に予約されている。
1. の方は、_XXX か、__xxx は予約されていると言うことですが、
2. の方は、_xxx の形式は、例え xxx の部分の先頭が小文字であっても、ファイルスコープにおける
識別子として予約されており、ローカル変数名としては使うべきではないということだと思われます。
また、C++の方では、
https://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-a-c-identifier
*Reserved in any scope, including for use as implementation macros:
10. identifiers beginning with an underscore followed immediately by an uppercase letter
11. identifiers containing adjacent underscores (or "double underscore")
*Reserved in the global namespace:
12. identifiers beginning with an underscore
この12.の書き方が(あなたに)誤解を招いた気がします。
また、11.によれば、xxx__yyy のように _ が連続するものは、識別子の中間であっても予約されている
とのことです。
英語サイトでも、説明の仕方が誤解を招くようなものがありまして、もしかしたらそれは誤解かも知れません。
https://stackoverflow.com/questions/25090635/use-and-in-c-programs
「Here's what the C standard says (section 7.1.3):
1. All identifiers that begin with an underscore and either an uppercase letter or another underscore are always reserved for any use.
2. All identifiers that begin with an underscore are always reserved for use as identifiers with file scope in both the ordinary and tag name spaces.」
訳:
1. アンダースコアで始まって直後に英大文字が続くか、または、アンダースコアが連続して
続く識別子は、いかなる使用も予約されている。
2. アンダースコアで始まる全ての識別子は、通常または、タグ名前空間における
ファイルスコープの識別子として常に予約されている。
1. の方は、_XXX か、__xxx は予約されていると言うことですが、
2. の方は、_xxx の形式は、例え xxx の部分の先頭が小文字であっても、ファイルスコープにおける
識別子として予約されており、ローカル変数名としては使うべきではないということだと思われます。
また、C++の方では、
https://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-a-c-identifier
*Reserved in any scope, including for use as implementation macros:
10. identifiers beginning with an underscore followed immediately by an uppercase letter
11. identifiers containing adjacent underscores (or "double underscore")
*Reserved in the global namespace:
12. identifiers beginning with an underscore
この12.の書き方が(あなたに)誤解を招いた気がします。
また、11.によれば、xxx__yyy のように _ が連続するものは、識別子の中間であっても予約されている
とのことです。
346デフォルトの名無しさん
2021/01/31(日) 13:18:09.37ID:ZnRwde8F >>337
それは問題ではないんだけど、
#define a(x) { int _x = 1; _x = x * 2; printf("%d",_x);}
のようなマクロが有ったとすれば、
int y = 5;
a(y); // 10 と表示される。
と
int _x = 5;
a(_x); // 2 と表示される。
それは問題ではないんだけど、
#define a(x) { int _x = 1; _x = x * 2; printf("%d",_x);}
のようなマクロが有ったとすれば、
int y = 5;
a(y); // 10 と表示される。
と
int _x = 5;
a(_x); // 2 と表示される。
347デフォルトの名無しさん
2021/01/31(日) 13:42:32.29ID:Rr91L/mp int と自作クラス A の pair を priority_queue に入れようと思ったら pair<int, A> に対する less の定義(?)が要るって言われました
int だけに基づいてソートしてくれたら結構なんですが、最も簡単な書き方はどんなですか
また、自作クラス A は array を継承しているのですが、less の定義も引き継ぐ方法はないのでしょうか
int だけに基づいてソートしてくれたら結構なんですが、最も簡単な書き方はどんなですか
また、自作クラス A は array を継承しているのですが、less の定義も引き継ぐ方法はないのでしょうか
348デフォルトの名無しさん
2021/01/31(日) 14:05:10.94ID:WjHCKOmN いろんな見解があってややこしいから、安全側に倒して「_で始まる名前は一切使うな」でいいと思ってる
コンパイラ実装するような奴以外はそれで困らんやろ
コンパイラ実装するような奴以外はそれで困らんやろ
349デフォルトの名無しさん
2021/01/31(日) 14:10:22.05ID:gXTMTlGe 【HOW】予約済みの席に座る方法【TO】
350デフォルトの名無しさん
2021/01/31(日) 14:15:41.43ID:WjHCKOmN >>347
using Aitem = std::pair<int, A>;
using Aqueue = std::priority_queue<Aitem>, std::vector<Aitem>, [](const Aitem& lhs, const Aitem& rhs){ return lhs.first < rhs.first; }>
Aqueue your_queue;
using Aitem = std::pair<int, A>;
using Aqueue = std::priority_queue<Aitem>, std::vector<Aitem>, [](const Aitem& lhs, const Aitem& rhs){ return lhs.first < rhs.first; }>
Aqueue your_queue;
351デフォルトの名無しさん
2021/01/31(日) 14:54:17.91ID:bSEeGU13 >>345
ファイルスコープとローカルスコープは違うよ。
あと、今議論中なのはアンダースコアひとつで始まるメンバ変数についてなんで、アンダースコアの連続がアウトなのは誰でも知ってるし、餃子も324で書いてる
ファイルスコープとローカルスコープは違うよ。
あと、今議論中なのはアンダースコアひとつで始まるメンバ変数についてなんで、アンダースコアの連続がアウトなのは誰でも知ってるし、餃子も324で書いてる
352デフォルトの名無しさん
2021/01/31(日) 15:06:11.72ID:gXTMTlGe 盛 り 上 が っ て ま い り ま し た ↑
353デフォルトの名無しさん
2021/01/31(日) 15:07:16.87ID:gXTMTlGe SRELLって知ってますか?
354デフォルトの名無しさん
2021/01/31(日) 15:15:54.45ID:ZnRwde8F >>351
undersocre で始まる識別子は、Cの仕様ではこうなっています:
「All identifiers that begin with an underscore are always reserved for use as identifiers with file scope in both the ordinary and tag name spaces.」
「undersocre で始まる識別子はfile scopeでは使用してはいけない」
とは言っておらず。
「undersocre で始まる識別子はfile scopeの識別子として使用される
ことが予約されている」
と言っています。
with file scope
の前置詞がなぜ in ではなく with になっているかは私には分かりかねますが、
その直後にも in が使われているので in が二重に使われるのを避けたのかも
知れません。
undersocre で始まる識別子は、Cの仕様ではこうなっています:
「All identifiers that begin with an underscore are always reserved for use as identifiers with file scope in both the ordinary and tag name spaces.」
「undersocre で始まる識別子はfile scopeでは使用してはいけない」
とは言っておらず。
「undersocre で始まる識別子はfile scopeの識別子として使用される
ことが予約されている」
と言っています。
with file scope
の前置詞がなぜ in ではなく with になっているかは私には分かりかねますが、
その直後にも in が使われているので in が二重に使われるのを避けたのかも
知れません。
355デフォルトの名無しさん
2021/01/31(日) 15:18:08.68ID:gXTMTlGe inを踏むとか言ってみたくなるじゃないか。
責任とれ。
責任とれ。
356デフォルトの名無しさん
2021/01/31(日) 15:18:17.21ID:ZnRwde8F どうやら、
「identifiers with file scope」は、「ファイルスコープを持つ識別子」
であり、with は、「持つ」の意味で使われているようです、。
「identifiers with file scope」は、「ファイルスコープを持つ識別子」
であり、with は、「持つ」の意味で使われているようです、。
357デフォルトの名無しさん
2021/01/31(日) 15:41:47.21ID:bSEeGU13 >>354
予約されてるとはつまり使うなってことだけど、いずれにせよファイルスコープの話であって、ローカル変数の話じゃないよ。
予約されてるとはつまり使うなってことだけど、いずれにせよファイルスコープの話であって、ローカル変数の話じゃないよ。
358デフォルトの名無しさん
2021/01/31(日) 16:03:58.33ID:fCVb5Gn/ >>346
#define a(x) { int z = 1; z = x * 2; printf("%d",z);}
int y = 5; a(y);
int z = 5; a(z);
これと何が違うの?
下線で始まることとは無関係だろ
#define a(x) { int z = 1; z = x * 2; printf("%d",z);}
int y = 5; a(y);
int z = 5; a(z);
これと何が違うの?
下線で始まることとは無関係だろ
359デフォルトの名無しさん
2021/01/31(日) 16:08:45.08ID:q0ry4PhJ STLコンテナの継承ってしない方が良いんですかね?
たとえばarrayに機能を追加 ([i][j] で i 行 j 列の要素を取得する等) して行列クラスを作りたいとき、
・arrayを継承する
・行列クラス内で要素を格納するメンバを array として持つ
の2パターンが考えられますが、皆さん的にはどっちが好ましいですか?
行列 is an array なので今こそ継承の使いどころだと思ったのですがいかがでしょうか
たとえばarrayに機能を追加 ([i][j] で i 行 j 列の要素を取得する等) して行列クラスを作りたいとき、
・arrayを継承する
・行列クラス内で要素を格納するメンバを array として持つ
の2パターンが考えられますが、皆さん的にはどっちが好ましいですか?
行列 is an array なので今こそ継承の使いどころだと思ったのですがいかがでしょうか
360デフォルトの名無しさん
2021/01/31(日) 16:16:47.40ID:WjHCKOmN arrayは仮想デストラクタ持ってないからポリモは出来ない
データ構造使うだけなら必要ない
やめとけ
データ構造使うだけなら必要ない
やめとけ
361デフォルトの名無しさん
2021/01/31(日) 16:20:57.91ID:NgKJGEE4 かか関数型マクロなら不用意に定義されていても
int y = (a)(x)
という書き方おすれば問題無くマクロじゃない関数a()の方が呼ばれるので問題無い!
事前に
typedef double a;
とかされていた場合は知らんが、
int y = (a)(x)
という書き方おすれば問題無くマクロじゃない関数a()の方が呼ばれるので問題無い!
事前に
typedef double a;
とかされていた場合は知らんが、
362デフォルトの名無しさん
2021/01/31(日) 16:21:36.60ID:2wqasnUt 好きにしたら?
C++なんて自己流全開で俺スゲーしてなんぼ、他人の顔色伺ってたらダメ
行列なんてプロダクションではどうせ出来合いのライブラリ使うんだし
C++なんて自己流全開で俺スゲーしてなんぼ、他人の顔色伺ってたらダメ
行列なんてプロダクションではどうせ出来合いのライブラリ使うんだし
363デフォルトの名無しさん
2021/01/31(日) 16:22:25.80ID:q0ry4PhJ364はちみつ餃子 ◆8X2XSCHEME
2021/01/31(日) 16:27:00.30ID:+XHxoAeu365デフォルトの名無しさん
2021/01/31(日) 16:27:38.50ID:X7lGC0go case by case だろうけど
Array と Matrix に関してなら
直観的に考えると後者かな
継承する意味が無い
Array と Matrix に関してなら
直観的に考えると後者かな
継承する意味が無い
366デフォルトの名無しさん
2021/01/31(日) 16:30:29.11ID:X7lGC0go [][][]だと3引数になるの?
[][][][]だと4引数になるの?
って疑問が出るので
operator[] を持つ自分自身のクラス (のオブジェクト)が正解だと思う
[][][][]だと4引数になるの?
って疑問が出るので
operator[] を持つ自分自身のクラス (のオブジェクト)が正解だと思う
367デフォルトの名無しさん
2021/01/31(日) 16:31:13.60ID:NgKJGEE4 std::array<std::vector<double> > x;
みたいな
みたいな
368デフォルトの名無しさん
2021/01/31(日) 16:32:01.22ID:NgKJGEE4 ジャグ配列になってしまう…orz
369デフォルトの名無しさん
2021/01/31(日) 16:32:06.68ID:fCVb5Gn/ 継承といえば
type_infoは仮想デストラクタ持ってるけど
派生クラス作ったやついる? 実験でなく
type_infoは仮想デストラクタ持ってるけど
派生クラス作ったやついる? 実験でなく
370デフォルトの名無しさん
2021/01/31(日) 16:34:24.04ID:ZnRwde8F371はちみつ餃子 ◆8X2XSCHEME
2021/01/31(日) 16:34:43.94ID:+XHxoAeu372デフォルトの名無しさん
2021/01/31(日) 16:36:28.41ID:ZnRwde8F373デフォルトの名無しさん
2021/01/31(日) 16:38:11.57ID:q0ry4PhJ374デフォルトの名無しさん
2021/01/31(日) 16:43:15.04ID:fCVb5Gn/375はちみつ餃子 ◆8X2XSCHEME
2021/01/31(日) 16:45:04.61ID:+XHxoAeu376デフォルトの名無しさん
2021/01/31(日) 16:51:19.01ID:ZnRwde8F >>370
[補足]
マクロ引数が二重に評価されてしまうのを防ぐため、マクロ作者が
気を利かせたつもりで次のようなマクロを書いたとする:
#define b(x,y) {int _x=x; int _y=y; f(_x,_y); g(_x,_y); }
作者の意図としては、
char *ptr1, *ptr2;
b(*ptr1++, *ptr2++);
のような場合にも正しく動作するようにしたいということで、
この場合は、*ptr1++, *ptr2++ は、それぞれ1回ずつ評価されるので、
ptr1, ptr2 は、それぞれ 1ずつ前に進むので、アプリ作者の意図を
組むことが出来る。
一方、使う側が命名規約に従わず、アプリのローカル変数で_x,_yを定義し、
int _x=1;
int _y=2;
b(_y,_x);
とすると、このマクロは誤動作し、
int x=1;
int y=2;
b(y,x);
と書いたときと結果が変わってくる。
[補足]
マクロ引数が二重に評価されてしまうのを防ぐため、マクロ作者が
気を利かせたつもりで次のようなマクロを書いたとする:
#define b(x,y) {int _x=x; int _y=y; f(_x,_y); g(_x,_y); }
作者の意図としては、
char *ptr1, *ptr2;
b(*ptr1++, *ptr2++);
のような場合にも正しく動作するようにしたいということで、
この場合は、*ptr1++, *ptr2++ は、それぞれ1回ずつ評価されるので、
ptr1, ptr2 は、それぞれ 1ずつ前に進むので、アプリ作者の意図を
組むことが出来る。
一方、使う側が命名規約に従わず、アプリのローカル変数で_x,_yを定義し、
int _x=1;
int _y=2;
b(_y,_x);
とすると、このマクロは誤動作し、
int x=1;
int y=2;
b(y,x);
と書いたときと結果が変わってくる。
377デフォルトの名無しさん
2021/01/31(日) 16:55:15.98ID:wwbd/Qx2 こういうクソしょーもない話って馬鹿でも理解できるから盛り上がるよね
378デフォルトの名無しさん
2021/01/31(日) 16:57:55.61ID:ZnRwde8F379デフォルトの名無しさん
2021/01/31(日) 17:00:34.53ID:ZnRwde8F [補足]
なお、Cの伝統だと、
#define b(x,y) {int _x=x; int _y=y; f(_x,_y); g(_x,_y); }
ではなく、
#define b(x,y) do {int _x=x; int _y=y; f(_x,_y); g(_x,_y); } while(0)
と書く。
こうしておくと、このマクロを{}ブロックを伴わないif文に書いたときに異常動作
をしない。
なお、Cの伝統だと、
#define b(x,y) {int _x=x; int _y=y; f(_x,_y); g(_x,_y); }
ではなく、
#define b(x,y) do {int _x=x; int _y=y; f(_x,_y); g(_x,_y); } while(0)
と書く。
こうしておくと、このマクロを{}ブロックを伴わないif文に書いたときに異常動作
をしない。
380はちみつ餃子 ◆8X2XSCHEME
2021/01/31(日) 17:08:36.84ID:+XHxoAeu >>378
素直に読めばグローバルスコープで予約されているものは
グローバルスコープで予約されているという意外の意味を読み取ることは出来ない。
そこからローカル変数も制約されるという主張が出てくる理由が不在なんで、
何を言うてんのやろ……? ってなるわけ。
素直に読めばグローバルスコープで予約されているものは
グローバルスコープで予約されているという意外の意味を読み取ることは出来ない。
そこからローカル変数も制約されるという主張が出てくる理由が不在なんで、
何を言うてんのやろ……? ってなるわけ。
381デフォルトの名無しさん
2021/01/31(日) 17:11:34.77ID:ziXVeJXQ382デフォルトの名無しさん
2021/01/31(日) 17:14:33.59ID:fCVb5Gn/383デフォルトの名無しさん
2021/01/31(日) 17:15:05.39ID:ZnRwde8F >>380
「All identifiers that begin with an underscore are always reserved
for use as identifiers with file scope in both the ordinary and
tag name spaces.」
「file scopeを持つ識別子として使用されるために予約されている」
だべ?
block scopeを持つ識別子として使用されたら、話がおかしいと思うが。
「この自動車は、仕事で使うために予約されています」
の場合、その自動車を私用で使えば、規則違反だよね。
「All identifiers that begin with an underscore are always reserved
for use as identifiers with file scope in both the ordinary and
tag name spaces.」
「file scopeを持つ識別子として使用されるために予約されている」
だべ?
block scopeを持つ識別子として使用されたら、話がおかしいと思うが。
「この自動車は、仕事で使うために予約されています」
の場合、その自動車を私用で使えば、規則違反だよね。
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 構造体にしろよバカども
読みにくいだろ
読みにくいだろ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【外交】元台湾総統・馬英九氏、高市首相発言に「台湾を危険にさらす」台湾海峡の問題は「両岸の中国人が自ら話し合うべき」★2 [1ゲットロボ★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★8 [ぐれ★]
- 「母の部屋に安倍氏が表紙の機関誌が」「(安倍氏が被害者なのは)不思議に思いませんでした」山上被告の妹が証言 [おっさん友の会★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★5 [BFU★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【高市売り】円安、止まらず!凄い勢いで暴落中。157円へ [219241683]
- 1,000万円のBMWに擦ってしまった札幌のガキ、捕らえられてガチで詰む [329329848]
- 俺の代わりに中国がバカウヨを倒してくれる [805596214]
- 【悲報】ヤフコメ民「中国が水産物を輸入禁止にするなら、日本国民向けに安く販売すればいい。中国依存から脱するべき」 [153736977]
- 高市が首相になってから進次郎の評価が爆上がりしてる件について
- (´ん`)「公明党、お前だったのか。自民党から国民を守ってくれていたのは...」 [603416639]
