[過去ログ] C++相談室 part130 [無断転載禁止]©2ch.net (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
153: (ワッチョイ 6b3c-cQmk) 2017/04/17(月)03:21 ID:GWeDXk7n0(1) AAS
抽象から具体へのキャストって何かもやもやする
SOLID原則のDIPに反するんじゃないかって気もするし
154: (ワッチョイ eb92-D+C1) 2017/04/17(月)07:06 ID:D/VW2xRY0(1) AAS
昔風の継承モデルは最近使わなくなったなあ
テンプレートの方が融通性高い
155: (ワッチョイ 1fcc-35Q+) 2017/04/17(月)07:43 ID:H8Au7WAd0(1) AAS
は?バカじゃねぇの
156: (ワッチョイ 9fc3-hp0W) 2017/04/17(月)07:48 ID:4nIA4vL50(1) AAS
はい
157(3): (ワッチョイ 0b75-7bPG) 2017/04/17(月)08:36 ID:R62eo4r30(1/2) AAS
dynamic_castするよりはそいつが該当するinterfaceを持ってるか確認するほうがマシだと思う
struct scroll_interface{
virtual bool down(float value)=0;
virtual bool up(float value)=0;
};
struct view{
virtual scroll_interface* scrollable(){return 0;}
};
struct list_view : view{
virtual scroll_interface* scrollable(){return ptr;}
省5
158: (ワッチョイ eb7a-3MbB) 2017/04/17(月)08:50 ID:bqYXNS3A0(1) AAS
非メンバ関数にできるものはvariant使った方がいいなって感じになってきた
159: (スップ Sd3f-a7Ro) 2017/04/17(月)08:54 ID:OwDSFehNd(1/3) AAS
>>157
なんかやだ
160(1): (ワッチョイ 3b37-T+tu) 2017/04/17(月)08:55 ID:5RBrgFiu0(1) AAS
>>157
いや、それdynamic_castと寸分違わず同じだから…
gotoをdo{}while()にするのと同じレベルだと思う。
161: (スプッッ Sd3f-lyFy) 2017/04/17(月)09:07 ID:qMcNcEsbd(1) AAS
RTTIはオプションで切っておきたい
162(1): (ワッチョイ 0b75-7bPG) 2017/04/17(月)09:13 ID:R62eo4r30(2/2) AAS
>>160
継承関係になくていいというところが違うし(結構大事だと思う)、dynamic_castはダイナミックリンクするライブラリと組み合わせると面倒くさいからなるべく使いたくないんだよね。
163: (スップ Sd3f-a7Ro) 2017/04/17(月)10:32 ID:OwDSFehNd(2/3) AAS
依存関係の強さは変わらんよね
164: (ワッチョイ 1f6b-HE/W) 2017/04/17(月)12:22 ID:PEkyQsSL0(1) AAS
その「強さ」を具体的に数値化できればな
165: (ワッチョイ 2bf4-EaKP) 2017/04/17(月)14:44 ID:YxhJnxLO0(1/4) AAS
>>157
スクロールできないクラスの中にscroll_interface*を返す関数があってnullptrを返すのか
その論法では絶対にあり得ない機能への問い合わせ関数を膨大な数抱え込むここになるぞ
166: (ワッチョイ 2bf4-EaKP) 2017/04/17(月)14:46 ID:YxhJnxLO0(2/4) AAS
>>162
継承を使わないインターフェイスは確かに欲しいが
後半が何を言っているのか好意的に読んでもわからんぞ
167: (スップ Sd3f-a7Ro) 2017/04/17(月)16:34 ID:OwDSFehNd(3/3) AAS
QueryInterfaceいやだ
168: (ワッチョイ eb00-AM0K) 2017/04/17(月)16:58 ID:rD3LHvJv0(1) AAS
COM設計したやつって基地外だよな
169: (ワッチョイ 2bf4-EaKP) 2017/04/17(月)18:04 ID:YxhJnxLO0(3/4) AAS
APIが単一空間に際限なく増えることへの危機感から
何らか対策を講じるとして、割とまともな答えだと思う
170: (ワッチョイ 2bf4-EaKP) 2017/04/17(月)18:05 ID:YxhJnxLO0(4/4) AAS
GUIDの扱い方が変態的なのがちょっとイヤだけどね
171(1): (ワッチョイ eb59-0/8P) 2017/04/17(月)22:27 ID:ZfEceRxS0(1) AAS
やっぱこれからはAPIが呼び出し元のコードを生成すべき
172: (ブーイモ MMaf-YOru) 2017/04/17(月)22:40 ID:KscfyyhaM(1) AAS
呼び出し元のコードは誰が呼び出すんだ
173: 片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd3f-L+dC) 2017/04/17(月)22:43 ID:dVaQYL/0d(1) AAS
オバマ元大統領が電話で呼び出してくれるだろう。
174: (ワッチョイ 6b3c-cQmk) 2017/04/18(火)00:19 ID:3dyURfCV0(1) AAS
そうなんだ、すごいね
175: (ワッチョイ 1fcc-35Q+) 2017/04/18(火)04:24 ID:sGHQhIiJ0(1) AAS
AA省
176: (ワッチョイ db65-EaKP) 2017/04/18(火)14:33 ID:opmIphTi0(1/2) AAS
>>171
APIが関数ではなくテンプレートであるべきということか?
177(1): ich1 (アウアウオー Sabf-d3ae) 2017/04/18(火)14:56 ID:ZJShoz7Oa(1) AAS
外部リンク:goo.gl
これは嘘でしょ?本当?
178: (ワッチョイ db65-EaKP) 2017/04/18(火)15:43 ID:opmIphTi0(2/2) AAS
>>177
スレ違い「生理前の肌荒れナントカ」
179: (ワッチョイ 6bc8-HE/W) 2017/04/19(水)00:24 ID:37YtuUfA0(1/19) AAS
テンプレートに演算子を与えたいのだけど、マクロでやらないとダメよね?
maxとかminとか。
走査するところは共通で、> か < かが違うだけなのだけど。
180(1): (ササクッテロレ Sp6f-cQmk) 2017/04/19(水)00:50 ID:5KqdfKh3p(1/2) AAS
比較用のファンクタをテンプレートパラメータにすれば良いだけじゃないの
STLのmapみたいな感じで
181(2): (ワッチョイ 6bc8-HE/W) 2017/04/19(水)01:36 ID:37YtuUfA0(2/19) AAS
>>180
なるほどそれなら確かに書けるね。
しかし、ちゃんとインラインにしてくれるのかすごく心配だ。
182: (ワッチョイ efa6-HE/W) 2017/04/19(水)06:48 ID:1gRwKhTB0(1/2) AAS
よく話が通じるな
183: (ワッチョイ 1fcc-35Q+) 2017/04/19(水)07:02 ID:pPK7kNhi0(1) AAS
トーシローの考えることなど手に取るように解るだろ
184: (ワッチョイ 9fc3-hp0W) 2017/04/19(水)07:45 ID:CHQbSNlI0(1) AAS
ファンクタってなに?
185: (ワッチョイ 2b51-EaKP) 2017/04/19(水)07:58 ID:NVOSG7Tn0(1/2) AAS
メンバoperator()を持つクラスのインスタンス
186: (オッペケ Sr6f-xkGs) 2017/04/19(水)08:01 ID:2ep/ROmVr(1) AAS
というのが185の妄想
187(1): (ドコグロ MMbf-RLAq) 2017/04/19(水)08:10 ID:CJSzniGcM(1/2) AAS
>>181
なぜ試さない?
188: (ワッチョイ 2b51-EaKP) 2017/04/19(水)08:29 ID:NVOSG7Tn0(2/2) AAS
という妄想を朝から垂れ流す186
189(1): (ワッチョイ 0b6a-T+tu) 2017/04/19(水)09:06 ID:oJjBFOoS0(1) AAS
>>181
templateとファンクタはインライン展開がかなり期待できる手法。
190: (ワッチョイ 1f72-8aNn) 2017/04/19(水)10:21 ID:TnomPWtQ0(1) AAS
#include "A.h"
と
class A;
の違いって何でしょうか?
どのように使い分けるのですか?
191: (ワッチョイ 6bc8-HE/W) 2017/04/19(水)10:26 ID:37YtuUfA0(3/19) AAS
>>187,189
確かに以前違うところで思いっきりインラインされているのを見たから、
実際にはされるのだろうね。
ただ、C++のそういった方向への進化はちょっと嫌いだね。
今現在マクロで書いてるからテンプレートが改行無しのコードになってる。
使い勝手は悪いけど、確実に動くし、インラインだ。
俺の要求としては「テンプレートに演算子を書かせてくれ」これだけだ。
さてC++は何故かこれができない。
とは言え珍しいケースでもないはずだから、実際にはやり方があるはず。
そして聞いてみると、型を作る為にファンクタを作って差し込めばいいと言う。
省10
192(1): (スプッッ Sd3f-lyFy) 2017/04/19(水)10:30 ID:cmg5eKJnd(1) AAS
マクロなんてアホみたいな機能使ってる奴がいまだにいたとは
193: (スップ Sd3f-a7Ro) 2017/04/19(水)10:38 ID:xWugx3VWd(1) AAS
ああ、std::plus とかラムダ式じゃなくて + を指定したいって意味か
194: (ワッチョイ 6bc8-HE/W) 2017/04/19(水)11:18 ID:37YtuUfA0(4/19) AAS
おー、そういうのがあるんだね。
なるほどそれなら std::rel_ops::operator> を使うべきなのかな?
これが標準なら慣れるしかないけど、何だかなー。
呼び出し時に somefunc<double,std::rel_ops::operator>>
だとminなのかmaxなのか分からない。
今は関数名もsome_max, some_minとかに出来てるんだよね。
195: (ワッチョイ 6bc8-HE/W) 2017/04/19(水)11:29 ID:37YtuUfA0(5/19) AAS
ちなみに現状はこんなコード
#define FUNC(fname,op) \
template<class T> static T fname(T* ptr, int num){\
T max = *ptr;\
int idx = 1;\
while (idx<num) {\
if (max op ptr[idx]) max = ptr[idx];\
idx++;\
}\
return max;\
省4
196(1): (ワッチョイ 0b75-7bPG) 2017/04/19(水)12:34 ID:q88wQIwA0(1/7) AAS
std::max_element
お前どこかのスレでbindが遅いとか、質問に答えた相手をアホ呼ばわりしたやつじゃね?
197: (ドコグロ MMbf-RLAq) 2017/04/19(水)12:41 ID:CJSzniGcM(2/2) AAS
>>192
爺なんだろ
関わりあるならともかくないなら放置でいいよ
下手に絡むとマクロの素晴らしさとかをとうとうと語りそうだし
198: (ワッチョイ 6bc8-HE/W) 2017/04/19(水)12:46 ID:37YtuUfA0(6/19) AAS
>>196
いや、イテレータが欲しい訳じゃない。
上記の例はそれだが、実際はもっと複雑で、最初に言ったように、
走査部分は全く同じで演算子だけ異なる場合、どうするか。
で、どのレスのこと?
199(1): (ワッチョイ 6bc8-HE/W) 2017/04/19(水)12:50 ID:37YtuUfA0(7/19) AAS
ちなみにマクロは糞だと思うぞ。
単純置換くらいならいいが、それ以上は訳が分からなくなる。
ただ、演算子を置換したい為にファンクタにしてテンプレートに突っ込むのも同様に糞だと思うぞ。
見て分かりやすいものではないだろ。
200: (ワッチョイ 0b75-7bPG) 2017/04/19(水)13:00 ID:q88wQIwA0(2/7) AAS
>>199
お前は中でファンクターを渡す好きな名前のラッパー関数を定義するという発想もないの?
まさか関数呼び出しコストガーとか言わないよね?
201(2): (ワッチョイ ef14-AM0K) 2017/04/19(水)13:04 ID:Z8YDH0nj0(1) AAS
struct Maxf{
template <typename T>static const T f(const T& a, const T& b){return a>b?a:b;}
};
struct Minf{
template <typename T>static const T f(const T& a, const T& b){return a<b?a:b;}
};
template<class M,typename T >struct Func
{
static const T f(const T* p, int n)
{
省8
202(1): (ワッチョイ 6bc8-HE/W) 2017/04/19(水)13:19 ID:37YtuUfA0(8/19) AAS
>>201
ああなるほど、サンクス。そうすれば外側に名前が見えるのね。
個人的にはちょっと技巧的すぎて嫌いなコードだが、
正直なところ、コピペしてデバッグしてコピペで戻すのもうんざりしてたので、
徐々に慣らしながら使わせてもらうことにするよ。
C++での割と標準的な解決法ってこれなんだよね?
みんながやってるのなら俺も慣れるしかない。
203(1): (ワッチョイ 0b75-93S+) 2017/04/19(水)13:32 ID:q88wQIwA0(3/7) AAS
>>202
>>201 はまったく標準的ではない。
そんな書き方させる標準ライブラリが一つでもあるか?
外部リンク:ideone.com
これだけの話(わざとmin_elementは使わずに書いてる)
std::max_elementと関数名は勝手に置き換えろ
204(1): (ワッチョイ 6bc8-HE/W) 2017/04/19(水)14:06 ID:37YtuUfA0(9/19) AAS
>>203
いやだからイテレータが欲しいんじゃないんだよ。
それって話が余計に膨らんじゃうだろ。
今既に走査するコードはあって、それをテンプレートで置き換えようとしている。
呼んだら結果が返ってくる、それだけの関数なんだよ。
そのマクロを撲滅しようとしている。
イテレータだと外側コンテナに色々付け足しが必要になる。
それをやりたい訳じゃない。
最初から全て標準コンテナを使え、というのならその通りだが、それは別件だ。
今は生配列なんだよ。
省7
205(1): (ワッチョイ 0b75-93S+) 2017/04/19(水)14:19 ID:q88wQIwA0(4/7) AAS
>>204
int a[8]={4,-2,4,56,7,8,5,3};
が生配列に見えないの?
const T* a,size_t s
が生ポインタと要素数って解らなかった?
C++どころかC言語すら解ってないんじゃないの?
お前の頭には応用という言葉が無いの?
外部リンク:ideone.com
206: (ワンミングク MM3f-ZHy1) 2017/04/19(水)14:25 ID:15mBJgd3M(1/4) AAS
イテレータってお前の言ってる走査のシンタックスシュガーやぞ
207: (ワッチョイ 6bc8-HE/W) 2017/04/19(水)14:36 ID:37YtuUfA0(10/19) AAS
>>205
あーなるほど分かったわ。確かにこれの方が直感的で良いわ。
事実として俺はテンプレートに慣れてないからね。
まあとにかくありがとう。
208: (ワッチョイ 6bc8-HE/W) 2017/04/19(水)16:00 ID:37YtuUfA0(11/19) AAS
すまんが次の質問。
テンプレート内部で型を決めうちしたいのだが、この書き方ってある?
例えば内部で高精度で演算したい時、引数型が
引数double -> 内部double
引数float -> 内部double
引数short -> 内部int64
とか。引数型に対して内部型は確定的に決まる。
今は
template<typename T, typename Ti> double somefunc(T* src0, T* src1, int t){}
で引数型 T、内部型 Ti としてる。
省5
209(2): (ワッチョイ 6bc8-HE/W) 2017/04/19(水)16:07 ID:37YtuUfA0(12/19) AAS
すまん、ググったら条件分岐がヒットした。
というか2段重ねれば良いだけか?という気がしてきた。
あまり自信はないが。
210(1): (ワンミングク MM3f-ZHy1) 2017/04/19(水)16:15 ID:15mBJgd3M(2/4) AAS
type_traits使う
211: (ワッチョイ 6bc8-HE/W) 2017/04/19(水)16:30 ID:37YtuUfA0(13/19) AAS
>>210
> type_traits
見た目それようだが、何故かサイズが取れないのね。
ただどのみち俺の環境(VS2008)では使えないようだ。
とはいえ、今回の質問はどうやらラップすれば終わりのようだ。
お騒がせして申し訳ない。
212(1): (ワッチョイ 0b75-93S+) 2017/04/19(水)16:39 ID:q88wQIwA0(5/7) AAS
>>209
色々方法あるけど
*1 単純にオーバーロードを重ねる
template<typename T, typename Ti> double somefunc_impl(T* src0, T* src1, int t){}
double somefunc(float* src0, float* src1, int t){
return somefunc_impl<float,double>(src0,src1,t);
}
double somefunc(short* src0, short* src1, int t){
return somefunc_impl<short,int64 >(src0,src1,t);
}
省11
213(1): (ワッチョイ 6bc8-HE/W) 2017/04/19(水)16:54 ID:37YtuUfA0(14/19) AAS
>>212
ありがとう。まさに今その1をやったところ。
地味だがこれが一番分かりやすい。
ラップしまくるのは気になるが、C++の世界だとコンパイラが最適化してくれることを期待するんだよな?
traitは後日試してみるわ。本来はそっちの方が本筋なのだろうし。
今回は精度最高型で演算するだけだから規則は簡単。
char, short, int -> int64
float, double -> double
だね。
214: (ワッチョイ 0f92-D+C1) 2017/04/19(水)17:05 ID:zKKKUYsP0(1) AAS
>>209
俺もパッと思いつくのはenable_if使って2段にすることだな
こんな風に
外部リンク:ideone.com
もっとスマートなやりかたがあったら教えて欲しい
215(1): (ワッチョイ 6b3c-V7Gz) 2017/04/19(水)19:31 ID:suSDkWlT0(1/3) AAS
>>213
>コンパイラが最適化してくれることを期待するんだよな?
まず試せw
VCで逆アセンブル見るなり
外部リンク:gcc.godbolt.org
↑これで見るなり
厳密には知らんが、関数テンプレートは大体inlineつけなくても最適化でインライン展開の対象になる
216(1): (ワッチョイ 6bc8-HE/W) 2017/04/19(水)19:52 ID:37YtuUfA0(15/19) AAS
>>215
まあそうなんだけど、今回については
・仮に遅くなったとしてもやる
・最終的にはアセンブラに差し替える
という、主に編集上の都合なのでどの道やるんだわ。
最悪、手でコピペして展開すれば直結出来ると分かっているから、その辺は安心。
テンプレート慣れしてないから、いちいちラップするのが気持ち悪いが、
そんなもんだというのなら慣れるしかない。
ただやっぱ、見た目直感的なコードではなくなるのが残念なところ。
varにしたら自動的にテンプレートになって、
省1
217(1): (ワンミングク MM3f-ZHy1) 2017/04/19(水)21:04 ID:15mBJgd3M(3/4) AAS
>>216
>varにしたら自動的にテンプレートになって、
>文句がある場合のみ手動で特殊化が一番助かるんだが。
いやそれがtraitsなんだけど…
218(1): (ワッチョイ 6bc8-HE/W) 2017/04/19(水)21:47 ID:37YtuUfA0(16/19) AAS
>>217
いやあれ属性でやろうとしてるでしょ。
普通に型名で書いた方が楽だよね。特殊化みたいに。
変に汎用化させようとして、余計に分かりにくくなってるよ。
なんつーか、C++ってそっちの傾向あるでしょ。変に技巧に凝りすぎというか。
テンプレートにしても、編集上の努力であって、新機能追加やバグ取りにはならないし。
努力の方向を間違えたら完全に空回りてしまう。
varで書かせてくれよとマジで思うよ。
219(2): (ワンミングク MM3f-ZHy1) 2017/04/19(水)22:18 ID:15mBJgd3M(4/4) AAS
varと書けるようにするとなぜ新機能開発やバグ取りにできるの??
templateで何ができないと言ってるのかまじで意味わからん
templateをマクロと同じように使おうとしかしてないから編集上の機能に見えるだけでしょ?
ランタイムのオーバーヘッドをなくすために使うんだよ普通は
てか属性でやろうとしてるってなんだよ、現行C++にattributeなんてねーよクソカス
高精度型にキャストしたいならtraitsとdispatch用の関数書くだけ
220(1): (ワッチョイ 6b3c-V7Gz) 2017/04/19(水)22:29 ID:suSDkWlT0(2/3) AAS
>>218
言いたいことはわからんでもないけどな
他人はどうか知らんが、自分はSTLやboostのコードを分かりやすいとは全く思わん
ヘッダで公開してるから(そうせざるを得ないんだが)アレを全員目指すべきと勘違いしてる人はいるかもしれんw
言ってしまえば、テンプレートで設計の幅広げたり高速化したり、ってのはあくまで副産物的に生まれたトリックに過ぎんし
そういうライブラリはきちんとドキュメントが存在しないと使い物にならん(あれば超便利なんだが)
そもそもほぼC++しかやってないのでvarが何なのかよーわからんが。
関数型言語みたいな記述力を求めてんのかね?
221: (ワッチョイ 6bc8-HE/W) 2017/04/19(水)22:39 ID:37YtuUfA0(17/19) AAS
>>219
templateを使わずに同じ事を実現出来る環境なら、
その時間を新機能追加やバグ取りに使えるって事だよ。
実際、JavaScriptとかはそうなんだよ。
ただし、あっちには別の問題があるのだけどね。
222: (ワッチョイ 0b75-7bPG) 2017/04/19(水)22:50 ID:q88wQIwA0(6/7) AAS
でたJavascript
やっぱりstd::bindは高機能すぎるからオーバーヘッドが有るとか言ってた奴か。
223: (ワッチョイ bb1f-ZHy1) 2017/04/19(水)22:52 ID:1eYI3Ipd0(1/2) AAS
あーあいつか
あの時も意味不明なこといいまくってたな…
もうC++は諦めろ
224(2): (ワッチョイ 6b3c-V7Gz) 2017/04/19(水)22:54 ID:suSDkWlT0(3/3) AAS
>やっぱりstd::bindは高機能すぎるからオーバーヘッドが有るとか言ってた奴か
これがマジなら
>ID:37YtuUfA0
マジで実測する癖つけた方がいいよ・・・・・w
速度に関して憶測でモノ言うのは話にならん・・・・
225: (ササクッテロレ Sp6f-cQmk) 2017/04/19(水)22:56 ID:5KqdfKh3p(2/2) AAS
常軌を逸してる
触ってしまってすみませんでした
226(1): (ワッチョイ 6bc8-HE/W) 2017/04/19(水)22:57 ID:37YtuUfA0(18/19) AAS
>>220
varは何でも突っ込める。(というより型がない)
理論的には、全ての変数を「別々に」テンプレート化しているのと同じ事になる。
だから、理論的にJavaScriptにはテンプレートが必要ない。
(あるけどあれはHTML生成用の別物であって、C++のテンプレートとは違う)
例えば、maxがあったとして、
C++:
double max (double x, double y){ return (x>y)? x : y;}
JavaScript
function max(x,y){ return (x>y)? x : y;}
省15
227: (ワッチョイ 6bc8-HE/W) 2017/04/19(水)23:05 ID:37YtuUfA0(19/19) AAS
>>224
コンパイラが最適化してくれるからいい、のではなくて、
コンパイラが最適化しなくても速いコードを最初から書こうとしているって事だよ。
ただしC++ではそれが出来ないが、
そもそもコンパイラが最適化してくれるから問題ないってノリでしょ。
ここら辺はスタイルの違いだと思うよ。
228: (ワッチョイ 0b75-7bPG) 2017/04/19(水)23:07 ID:q88wQIwA0(7/7) AAS
>>224
俺も憶測で決めつけてるけどね。
でもこの書きっぷりと応用性のなさ。Javascriptときたからもうあいつにしか見えない。
229(1): (ワッチョイ eb7a-3MbB) 2017/04/19(水)23:11 ID:cDK+jlin0(1) AAS
何故気に入らないのにC++を使おうとするんだ
RustとかSwiftのような新しい言語の方がきれいに安全に書けるぞ
230: (ワンミングク MM3f-ZHy1) 2017/04/19(水)23:12 ID:9cOcPQsOM(1) AAS
template <typename T> T max(T a, T b) { return x > y ? x : y; }
だろ?馬鹿?
しかもjavascriptのvariant型なんてc++でいうとこのvoid*型だろ?
使うたびに内部ではdowncastしてるはずなのにそのオーバーヘッドコストは気にならないのか?
231: (ワッチョイ bb1f-ZHy1) 2017/04/19(水)23:14 ID:1eYI3Ipd0(2/2) AAS
>>229
RustもSwiftも強い静的型付けだから、型システムがわかってないこいつにはC++同様使えない
232(1): (ワッチョイ efa6-HE/W) 2017/04/19(水)23:28 ID:1gRwKhTB0(2/2) AAS
テンプレートだと指が勝手にユニバーサル参照にしてしまう
233: (オッペケ Sr6f-xkGs) 2017/04/19(水)23:53 ID:5Pu3YB5qr(1) AAS
>>219
>現行C++にattributeなんてねーよ
何故か規格を読まない奴ほど自信満々に嘘をつく法則
234: (オッペケ Sr23-bEgw) 2017/04/20(木)00:12 ID:tHs+CIU3r(1) AAS
>template <typename T> T max(T a, T b) { return x > y ? x : y; }
>だろ?馬鹿?
>>226の説明が理解できなかった自分の方が馬鹿だった
という事実に230が気付くことは無いだろう
235: (ワントンキン MMfa-kezb) 2017/04/20(木)00:17 ID:4toBdd3vM(1) AAS
いやお前だよ…
236: (ワッチョイ 1f8f-AhUp) 2017/04/20(木)05:55 ID:dzDslOc/0(1) AAS
js訛りのC++か
気がつくとぼっちだぜ
んなキモいことしてっと
237: (ワッチョイ 871f-HDOw) 2017/04/20(木)06:46 ID:4gdppVlz0(1) AAS
そういやC++のきれいなコードあんまり見たことない
238: (スップ Sd4a-Vs57) 2017/04/20(木)12:06 ID:nHxDShTLd(1) AAS
俺のコードはスカスカで綺麗だぜ!
239:  ̄ ̄\| ̄ ̄ ̄ ̄ ̄ ̄ ̄ (ワッチョイ 8acc-C5/3) 2017/04/20(木)16:31 ID:dSLwtaqZ0(1) AAS
AA省
240(1): (ワッチョイ de92-UbXF) 2017/04/20(木)16:39 ID:pGeg/NAi0(1) AAS
俺のコードにはファウンデーションを丹念に塗ってある
241(1): (オッペケ Sr23-bEgw) 2017/04/20(木)21:34 ID:iTkbXITvr(1) AAS
>>232
ユニバーサル参照にするとどういう制限が発生するのか分かった上でやっているのか?
242: (ワッチョイ 87f4-bQlo) 2017/04/20(木)21:45 ID:OBF/5/VT0(1) AAS
>>240
MFCとか綺麗だよねw
243: (ワッチョイ 06a6-HDOw) 2017/04/20(木)22:40 ID:16AwdhdC0(1) AAS
>>241
はて?制限・・・そんなのあったっけ?
(あわててEMC++をめくりながら)
244(1): (オッペケ Sr23-bEgw) 2017/04/21(金)14:01 ID:jq02h6/Cr(1/3) AAS
Effective Modern C++のItem 30を読まなくても幾つかは日常的に気付きそうなものだが
struct A { constexpr static int N = 1'000; };
f_pass_by_value(A::N); // OK
f_pass_by_universal_ref(A::N); // NG
245(1): (ワッチョイ a375-OSeR) 2017/04/21(金)14:33 ID:SD7KIjS10(1) AAS
>>244
それ -std=c++1z で通るのな。規格変わったん?
246: (オッペケ Sr23-bEgw) 2017/04/21(金)14:40 ID:jq02h6/Cr(2/3) AAS
>>245
変わる予定
流石にC++14の言語仕様はクソだった
N4659 D.1山椒
247: (オッペケ Sr23-bEgw) 2017/04/21(金)14:43 ID:jq02h6/Cr(3/3) AAS
だがこれはC++17でも通らない
struct A { int b : 2; };
f_pass_by_ref( A{}.b );
248: (スップ Sd4a-Vs57) 2017/04/21(金)14:47 ID:uAFMuOM4d(1) AAS
クソザコなので日常的には何も気付かない
249(2): (ワッチョイ 0b59-C4NQ) 2017/04/23(日)11:36 ID:onWybp6E0(1/3) AAS
質問
std::map<key_t, int>にkey_t型のブツの個数を格納したいのですが、どう書くのがSTL的に推奨?
仮に
typedef std::map<key_t, value_t> dic_t;
dic_t dic;
key_t key;
であるとして、
(1) std::pair<dic_t::iterator, bool> result = dic.insert(dic_t::value_type(key, 1));
if (!result.second) { result.first->second++; }
(2) dic_t::iterator it = dic.find(key);
省3
250: (ワッチョイ 0b59-C4NQ) 2017/04/23(日)11:40 ID:onWybp6E0(2/3) AAS
補足>>249の
>ブツの個数を格納したい
というのは、keyの出現も個数もわからない状態から、key出現毎に数えていきたいという意味です
251: (ワッチョイ 2756-2VNN) 2017/04/23(日)11:58 ID:VmCxZvh+0(1) AAS
std::map::size で取得
252(1): (ワッチョイ fad4-MAHZ) 2017/04/23(日)12:31 ID:XHzgUmp00(1) AAS
>>249
++dic[key];
上下前次1-新書関写板覧索設栞歴
あと 750 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.052s