次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part129
http://echo.2ch.net/test/read.cgi/tech/1483940967/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.100【環境依存OK】
http://echo.2ch.net/test/read.cgi/tech/1478440682/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
探検
C++相談室 part130 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ f37a-QmV0)
2017/03/31(金) 08:47:49.65ID:UkLjKqcm0202デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 13:19:37.56ID:37YtuUfA0 >>201
ああなるほど、サンクス。そうすれば外側に名前が見えるのね。
個人的にはちょっと技巧的すぎて嫌いなコードだが、
正直なところ、コピペしてデバッグしてコピペで戻すのもうんざりしてたので、
徐々に慣らしながら使わせてもらうことにするよ。
C++での割と標準的な解決法ってこれなんだよね?
みんながやってるのなら俺も慣れるしかない。
ああなるほど、サンクス。そうすれば外側に名前が見えるのね。
個人的にはちょっと技巧的すぎて嫌いなコードだが、
正直なところ、コピペしてデバッグしてコピペで戻すのもうんざりしてたので、
徐々に慣らしながら使わせてもらうことにするよ。
C++での割と標準的な解決法ってこれなんだよね?
みんながやってるのなら俺も慣れるしかない。
203デフォルトの名無しさん (ワッチョイ 0b75-93S+)
2017/04/19(水) 13:32:04.24ID:q88wQIwA0 >>202
>>201 はまったく標準的ではない。
そんな書き方させる標準ライブラリが一つでもあるか?
http://ideone.com/DLaG5f
これだけの話(わざとmin_elementは使わずに書いてる)
std::max_elementと関数名は勝手に置き換えろ
>>201 はまったく標準的ではない。
そんな書き方させる標準ライブラリが一つでもあるか?
http://ideone.com/DLaG5f
これだけの話(わざとmin_elementは使わずに書いてる)
std::max_elementと関数名は勝手に置き換えろ
204デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 14:06:14.80ID:37YtuUfA0 >>203
いやだからイテレータが欲しいんじゃないんだよ。
それって話が余計に膨らんじゃうだろ。
今既に走査するコードはあって、それをテンプレートで置き換えようとしている。
呼んだら結果が返ってくる、それだけの関数なんだよ。
そのマクロを撲滅しようとしている。
イテレータだと外側コンテナに色々付け足しが必要になる。
それをやりたい訳じゃない。
最初から全て標準コンテナを使え、というのならその通りだが、それは別件だ。
今は生配列なんだよ。
とりあえず「型」としてファンクタなり構造体をテンプレートに渡し、
中でそれを使う、というのが一般的で良いんだよな?
それとは別に、走査する部分はイテレータで統一し、
std::max_element等にそれを呼ばせるというのも一つのやり方だよ。
ただこれは今やりたい話じゃない。
つか、イテレータイテレータ言ってるのはJavaだと思っていたが、
C++もイテレータ全盛の世界なのか?
いやだからイテレータが欲しいんじゃないんだよ。
それって話が余計に膨らんじゃうだろ。
今既に走査するコードはあって、それをテンプレートで置き換えようとしている。
呼んだら結果が返ってくる、それだけの関数なんだよ。
そのマクロを撲滅しようとしている。
イテレータだと外側コンテナに色々付け足しが必要になる。
それをやりたい訳じゃない。
最初から全て標準コンテナを使え、というのならその通りだが、それは別件だ。
今は生配列なんだよ。
とりあえず「型」としてファンクタなり構造体をテンプレートに渡し、
中でそれを使う、というのが一般的で良いんだよな?
それとは別に、走査する部分はイテレータで統一し、
std::max_element等にそれを呼ばせるというのも一つのやり方だよ。
ただこれは今やりたい話じゃない。
つか、イテレータイテレータ言ってるのはJavaだと思っていたが、
C++もイテレータ全盛の世界なのか?
205デフォルトの名無しさん (ワッチョイ 0b75-93S+)
2017/04/19(水) 14:19:56.81ID:q88wQIwA0 >>204
int a[8]={4,-2,4,56,7,8,5,3};
が生配列に見えないの?
const T* a,size_t s
が生ポインタと要素数って解らなかった?
C++どころかC言語すら解ってないんじゃないの?
お前の頭には応用という言葉が無いの?
http://ideone.com/i2h96y
int a[8]={4,-2,4,56,7,8,5,3};
が生配列に見えないの?
const T* a,size_t s
が生ポインタと要素数って解らなかった?
C++どころかC言語すら解ってないんじゃないの?
お前の頭には応用という言葉が無いの?
http://ideone.com/i2h96y
206デフォルトの名無しさん (ワンミングク MM3f-ZHy1)
2017/04/19(水) 14:25:44.80ID:15mBJgd3M イテレータってお前の言ってる走査のシンタックスシュガーやぞ
207デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 14:36:42.93ID:37YtuUfA0208デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 16:00:45.80ID:37YtuUfA0 すまんが次の質問。
テンプレート内部で型を決めうちしたいのだが、この書き方ってある?
例えば内部で高精度で演算したい時、引数型が
引数double -> 内部double
引数float -> 内部double
引数short -> 内部int64
とか。引数型に対して内部型は確定的に決まる。
今は
template<typename T, typename Ti> double somefunc(T* src0, T* src1, int t){}
で引数型 T、内部型 Ti としてる。
ただ、これだといちいち呼び出し時に書かないといけない。
単発なのは我慢していたのだけど、リファクタを進めていくと、
上位関数が template<typename T> で済んでいるのに、内部関数が Ti を必要とするから
上位関数も template<typename T, typename Ti> となりだしてちょっとウザくなってきてる。
Ti を何とかして潰せれば呼び出し時にも書かなくて良くなり、全てすっきりするのだが。
テンプレート内部で型を決めうちしたいのだが、この書き方ってある?
例えば内部で高精度で演算したい時、引数型が
引数double -> 内部double
引数float -> 内部double
引数short -> 内部int64
とか。引数型に対して内部型は確定的に決まる。
今は
template<typename T, typename Ti> double somefunc(T* src0, T* src1, int t){}
で引数型 T、内部型 Ti としてる。
ただ、これだといちいち呼び出し時に書かないといけない。
単発なのは我慢していたのだけど、リファクタを進めていくと、
上位関数が template<typename T> で済んでいるのに、内部関数が Ti を必要とするから
上位関数も template<typename T, typename Ti> となりだしてちょっとウザくなってきてる。
Ti を何とかして潰せれば呼び出し時にも書かなくて良くなり、全てすっきりするのだが。
209デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 16:07:17.99ID:37YtuUfA0 すまん、ググったら条件分岐がヒットした。
というか2段重ねれば良いだけか?という気がしてきた。
あまり自信はないが。
というか2段重ねれば良いだけか?という気がしてきた。
あまり自信はないが。
210デフォルトの名無しさん (ワンミングク MM3f-ZHy1)
2017/04/19(水) 16:15:43.91ID:15mBJgd3M type_traits使う
211デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 16:30:01.80ID:37YtuUfA0 >>210
> type_traits
見た目それようだが、何故かサイズが取れないのね。
ただどのみち俺の環境(VS2008)では使えないようだ。
とはいえ、今回の質問はどうやらラップすれば終わりのようだ。
お騒がせして申し訳ない。
> type_traits
見た目それようだが、何故かサイズが取れないのね。
ただどのみち俺の環境(VS2008)では使えないようだ。
とはいえ、今回の質問はどうやらラップすれば終わりのようだ。
お騒がせして申し訳ない。
212デフォルトの名無しさん (ワッチョイ 0b75-93S+)
2017/04/19(水) 16:39:33.18ID:q88wQIwA0 >>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);
}
double somefunc(double* src0, double* src1, int t){
return somefunc_impl<double,double>(src0,src1,t);
}
*2 trait (somefunc_internal_typeを定義していない型だけ渡すとコンパイルエラー)
template<typename T>struct somefunc_internal_type{};
template<>struct somefunc_internal_type<float>{ using type = double; };
template<>struct somefunc_internal_type<double>{ using type = double; };
template<>struct somefunc_internal_type<short>{ using type = int64_t; };
template<typename T, typename Ti = somefunc_internal_type<T>::type> double somefunc(T* src0, T* src1, int t){}
規則性があるならtraitsはenable_ifとかで少なく書けるが、深入りするとC++の闇にのまれるからおすすめしない
using type = double; を typedef double type; に変えたらたぶんVS2008でも使える
色々方法あるけど
*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);
}
double somefunc(double* src0, double* src1, int t){
return somefunc_impl<double,double>(src0,src1,t);
}
*2 trait (somefunc_internal_typeを定義していない型だけ渡すとコンパイルエラー)
template<typename T>struct somefunc_internal_type{};
template<>struct somefunc_internal_type<float>{ using type = double; };
template<>struct somefunc_internal_type<double>{ using type = double; };
template<>struct somefunc_internal_type<short>{ using type = int64_t; };
template<typename T, typename Ti = somefunc_internal_type<T>::type> double somefunc(T* src0, T* src1, int t){}
規則性があるならtraitsはenable_ifとかで少なく書けるが、深入りするとC++の闇にのまれるからおすすめしない
using type = double; を typedef double type; に変えたらたぶんVS2008でも使える
213デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 16:54:59.37ID:37YtuUfA0 >>212
ありがとう。まさに今その1をやったところ。
地味だがこれが一番分かりやすい。
ラップしまくるのは気になるが、C++の世界だとコンパイラが最適化してくれることを期待するんだよな?
traitは後日試してみるわ。本来はそっちの方が本筋なのだろうし。
今回は精度最高型で演算するだけだから規則は簡単。
char, short, int -> int64
float, double -> double
だね。
ありがとう。まさに今その1をやったところ。
地味だがこれが一番分かりやすい。
ラップしまくるのは気になるが、C++の世界だとコンパイラが最適化してくれることを期待するんだよな?
traitは後日試してみるわ。本来はそっちの方が本筋なのだろうし。
今回は精度最高型で演算するだけだから規則は簡単。
char, short, int -> int64
float, double -> double
だね。
214デフォルトの名無しさん (ワッチョイ 0f92-D+C1)
2017/04/19(水) 17:05:51.26ID:zKKKUYsP0215デフォルトの名無しさん (ワッチョイ 6b3c-V7Gz)
2017/04/19(水) 19:31:59.93ID:suSDkWlT0 >>213
>コンパイラが最適化してくれることを期待するんだよな?
まず試せw
VCで逆アセンブル見るなり
https://gcc.godbolt.org/#
↑これで見るなり
厳密には知らんが、関数テンプレートは大体inlineつけなくても最適化でインライン展開の対象になる
>コンパイラが最適化してくれることを期待するんだよな?
まず試せw
VCで逆アセンブル見るなり
https://gcc.godbolt.org/#
↑これで見るなり
厳密には知らんが、関数テンプレートは大体inlineつけなくても最適化でインライン展開の対象になる
216デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 19:52:27.59ID:37YtuUfA0 >>215
まあそうなんだけど、今回については
・仮に遅くなったとしてもやる
・最終的にはアセンブラに差し替える
という、主に編集上の都合なのでどの道やるんだわ。
最悪、手でコピペして展開すれば直結出来ると分かっているから、その辺は安心。
テンプレート慣れしてないから、いちいちラップするのが気持ち悪いが、
そんなもんだというのなら慣れるしかない。
ただやっぱ、見た目直感的なコードではなくなるのが残念なところ。
varにしたら自動的にテンプレートになって、
文句がある場合のみ手動で特殊化が一番助かるんだが。
まあそうなんだけど、今回については
・仮に遅くなったとしてもやる
・最終的にはアセンブラに差し替える
という、主に編集上の都合なのでどの道やるんだわ。
最悪、手でコピペして展開すれば直結出来ると分かっているから、その辺は安心。
テンプレート慣れしてないから、いちいちラップするのが気持ち悪いが、
そんなもんだというのなら慣れるしかない。
ただやっぱ、見た目直感的なコードではなくなるのが残念なところ。
varにしたら自動的にテンプレートになって、
文句がある場合のみ手動で特殊化が一番助かるんだが。
217デフォルトの名無しさん (ワンミングク MM3f-ZHy1)
2017/04/19(水) 21:04:11.42ID:15mBJgd3M218デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 21:47:13.23ID:37YtuUfA0 >>217
いやあれ属性でやろうとしてるでしょ。
普通に型名で書いた方が楽だよね。特殊化みたいに。
変に汎用化させようとして、余計に分かりにくくなってるよ。
なんつーか、C++ってそっちの傾向あるでしょ。変に技巧に凝りすぎというか。
テンプレートにしても、編集上の努力であって、新機能追加やバグ取りにはならないし。
努力の方向を間違えたら完全に空回りてしまう。
varで書かせてくれよとマジで思うよ。
いやあれ属性でやろうとしてるでしょ。
普通に型名で書いた方が楽だよね。特殊化みたいに。
変に汎用化させようとして、余計に分かりにくくなってるよ。
なんつーか、C++ってそっちの傾向あるでしょ。変に技巧に凝りすぎというか。
テンプレートにしても、編集上の努力であって、新機能追加やバグ取りにはならないし。
努力の方向を間違えたら完全に空回りてしまう。
varで書かせてくれよとマジで思うよ。
219デフォルトの名無しさん (ワンミングク MM3f-ZHy1)
2017/04/19(水) 22:18:24.03ID:15mBJgd3M varと書けるようにするとなぜ新機能開発やバグ取りにできるの??
templateで何ができないと言ってるのかまじで意味わからん
templateをマクロと同じように使おうとしかしてないから編集上の機能に見えるだけでしょ?
ランタイムのオーバーヘッドをなくすために使うんだよ普通は
てか属性でやろうとしてるってなんだよ、現行C++にattributeなんてねーよクソカス
高精度型にキャストしたいならtraitsとdispatch用の関数書くだけ
templateで何ができないと言ってるのかまじで意味わからん
templateをマクロと同じように使おうとしかしてないから編集上の機能に見えるだけでしょ?
ランタイムのオーバーヘッドをなくすために使うんだよ普通は
てか属性でやろうとしてるってなんだよ、現行C++にattributeなんてねーよクソカス
高精度型にキャストしたいならtraitsとdispatch用の関数書くだけ
220デフォルトの名無しさん (ワッチョイ 6b3c-V7Gz)
2017/04/19(水) 22:29:39.45ID:suSDkWlT0 >>218
言いたいことはわからんでもないけどな
他人はどうか知らんが、自分はSTLやboostのコードを分かりやすいとは全く思わん
ヘッダで公開してるから(そうせざるを得ないんだが)アレを全員目指すべきと勘違いしてる人はいるかもしれんw
言ってしまえば、テンプレートで設計の幅広げたり高速化したり、ってのはあくまで副産物的に生まれたトリックに過ぎんし
そういうライブラリはきちんとドキュメントが存在しないと使い物にならん(あれば超便利なんだが)
そもそもほぼC++しかやってないのでvarが何なのかよーわからんが。
関数型言語みたいな記述力を求めてんのかね?
言いたいことはわからんでもないけどな
他人はどうか知らんが、自分はSTLやboostのコードを分かりやすいとは全く思わん
ヘッダで公開してるから(そうせざるを得ないんだが)アレを全員目指すべきと勘違いしてる人はいるかもしれんw
言ってしまえば、テンプレートで設計の幅広げたり高速化したり、ってのはあくまで副産物的に生まれたトリックに過ぎんし
そういうライブラリはきちんとドキュメントが存在しないと使い物にならん(あれば超便利なんだが)
そもそもほぼC++しかやってないのでvarが何なのかよーわからんが。
関数型言語みたいな記述力を求めてんのかね?
221デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 22:39:24.29ID:37YtuUfA0 >>219
templateを使わずに同じ事を実現出来る環境なら、
その時間を新機能追加やバグ取りに使えるって事だよ。
実際、JavaScriptとかはそうなんだよ。
ただし、あっちには別の問題があるのだけどね。
templateを使わずに同じ事を実現出来る環境なら、
その時間を新機能追加やバグ取りに使えるって事だよ。
実際、JavaScriptとかはそうなんだよ。
ただし、あっちには別の問題があるのだけどね。
222デフォルトの名無しさん (ワッチョイ 0b75-7bPG)
2017/04/19(水) 22:50:14.02ID:q88wQIwA0 でたJavascript
やっぱりstd::bindは高機能すぎるからオーバーヘッドが有るとか言ってた奴か。
やっぱりstd::bindは高機能すぎるからオーバーヘッドが有るとか言ってた奴か。
223デフォルトの名無しさん (ワッチョイ bb1f-ZHy1)
2017/04/19(水) 22:52:18.87ID:1eYI3Ipd0 あーあいつか
あの時も意味不明なこといいまくってたな…
もうC++は諦めろ
あの時も意味不明なこといいまくってたな…
もうC++は諦めろ
224デフォルトの名無しさん (ワッチョイ 6b3c-V7Gz)
2017/04/19(水) 22:54:45.80ID:suSDkWlT0 >やっぱりstd::bindは高機能すぎるからオーバーヘッドが有るとか言ってた奴か
これがマジなら
>ID:37YtuUfA0
マジで実測する癖つけた方がいいよ・・・・・w
速度に関して憶測でモノ言うのは話にならん・・・・
これがマジなら
>ID:37YtuUfA0
マジで実測する癖つけた方がいいよ・・・・・w
速度に関して憶測でモノ言うのは話にならん・・・・
225デフォルトの名無しさん (ササクッテロレ Sp6f-cQmk)
2017/04/19(水) 22:56:23.35ID:5KqdfKh3p 常軌を逸してる
触ってしまってすみませんでした
触ってしまってすみませんでした
226デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 22:57:53.67ID:37YtuUfA0 >>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;}
なんだけど、これはC++的には
template <typename Tx, typename Ty, typename Tr> Tr max(Tx x, Ty y){ return (x>y)? x : y;}
と同じ意味になる。
こんなデタラメで良いのか?と思うけど、
実際、コードの大半はデタラメで良いから、
常に完全フルチューンマニュアル走行のC++はオーバースペックなんだよね。
手抜きで良いところはもっと手抜きしたい。
テンプレートは道路整備に近いから、ライブラリを作っている人はガンガン使うべきだけど、
それぞれの単独アプリで濫用すると空回り感が酷い。
とは言え、それを理由にデタラメにやってきたからいよいよ見にくくなってリファクタしてるんだけど。
ちなみに関数型(キリッの連中は多分勘違いしている。関数型が既述能力が特に高いわけではない。
というか、C++で出来ない既述は基本的にないと思う。
ただし、書きやすいかと言われれば、全く酷いけど、C++のコミュニティってかなり厨二で、
そういうのもC++の魅力だ!と言いきっている感がある。
いや勘弁してください、ってことで。
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;}
なんだけど、これはC++的には
template <typename Tx, typename Ty, typename Tr> Tr max(Tx x, Ty y){ return (x>y)? x : y;}
と同じ意味になる。
こんなデタラメで良いのか?と思うけど、
実際、コードの大半はデタラメで良いから、
常に完全フルチューンマニュアル走行のC++はオーバースペックなんだよね。
手抜きで良いところはもっと手抜きしたい。
テンプレートは道路整備に近いから、ライブラリを作っている人はガンガン使うべきだけど、
それぞれの単独アプリで濫用すると空回り感が酷い。
とは言え、それを理由にデタラメにやってきたからいよいよ見にくくなってリファクタしてるんだけど。
ちなみに関数型(キリッの連中は多分勘違いしている。関数型が既述能力が特に高いわけではない。
というか、C++で出来ない既述は基本的にないと思う。
ただし、書きやすいかと言われれば、全く酷いけど、C++のコミュニティってかなり厨二で、
そういうのもC++の魅力だ!と言いきっている感がある。
いや勘弁してください、ってことで。
227デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 23:05:48.45ID:37YtuUfA0 >>224
コンパイラが最適化してくれるからいい、のではなくて、
コンパイラが最適化しなくても速いコードを最初から書こうとしているって事だよ。
ただしC++ではそれが出来ないが、
そもそもコンパイラが最適化してくれるから問題ないってノリでしょ。
ここら辺はスタイルの違いだと思うよ。
コンパイラが最適化してくれるからいい、のではなくて、
コンパイラが最適化しなくても速いコードを最初から書こうとしているって事だよ。
ただしC++ではそれが出来ないが、
そもそもコンパイラが最適化してくれるから問題ないってノリでしょ。
ここら辺はスタイルの違いだと思うよ。
228デフォルトの名無しさん (ワッチョイ 0b75-7bPG)
2017/04/19(水) 23:07:23.43ID:q88wQIwA0229デフォルトの名無しさん (ワッチョイ eb7a-3MbB)
2017/04/19(水) 23:11:15.73ID:cDK+jlin0 何故気に入らないのにC++を使おうとするんだ
RustとかSwiftのような新しい言語の方がきれいに安全に書けるぞ
RustとかSwiftのような新しい言語の方がきれいに安全に書けるぞ
230デフォルトの名無しさん (ワンミングク MM3f-ZHy1)
2017/04/19(水) 23:12:32.75ID:9cOcPQsOM template <typename T> T max(T a, T b) { return x > y ? x : y; }
だろ?馬鹿?
しかもjavascriptのvariant型なんてc++でいうとこのvoid*型だろ?
使うたびに内部ではdowncastしてるはずなのにそのオーバーヘッドコストは気にならないのか?
だろ?馬鹿?
しかもjavascriptのvariant型なんてc++でいうとこのvoid*型だろ?
使うたびに内部ではdowncastしてるはずなのにそのオーバーヘッドコストは気にならないのか?
231デフォルトの名無しさん (ワッチョイ bb1f-ZHy1)
2017/04/19(水) 23:14:03.78ID:1eYI3Ipd0 >>229
RustもSwiftも強い静的型付けだから、型システムがわかってないこいつにはC++同様使えない
RustもSwiftも強い静的型付けだから、型システムがわかってないこいつにはC++同様使えない
232デフォルトの名無しさん (ワッチョイ efa6-HE/W)
2017/04/19(水) 23:28:44.31ID:1gRwKhTB0 テンプレートだと指が勝手にユニバーサル参照にしてしまう
233デフォルトの名無しさん (オッペケ Sr6f-xkGs)
2017/04/19(水) 23:53:27.98ID:5Pu3YB5qr234デフォルトの名無しさん (オッペケ Sr23-bEgw)
2017/04/20(木) 00:12:38.85ID:tHs+CIU3r >template <typename T> T max(T a, T b) { return x > y ? x : y; }
>だろ?馬鹿?
>>226の説明が理解できなかった自分の方が馬鹿だった
という事実に230が気付くことは無いだろう
>だろ?馬鹿?
>>226の説明が理解できなかった自分の方が馬鹿だった
という事実に230が気付くことは無いだろう
235デフォルトの名無しさん (ワントンキン MMfa-kezb)
2017/04/20(木) 00:17:15.41ID:4toBdd3vM いやお前だよ…
236デフォルトの名無しさん (ワッチョイ 1f8f-AhUp)
2017/04/20(木) 05:55:38.33ID:dzDslOc/0 js訛りのC++か
気がつくとぼっちだぜ
んなキモいことしてっと
気がつくとぼっちだぜ
んなキモいことしてっと
237デフォルトの名無しさん (ワッチョイ 871f-HDOw)
2017/04/20(木) 06:46:57.40ID:4gdppVlz0 そういやC++のきれいなコードあんまり見たことない
238デフォルトの名無しさん (スップ Sd4a-Vs57)
2017/04/20(木) 12:06:51.73ID:nHxDShTLd 俺のコードはスカスカで綺麗だぜ!
239 ̄ ̄\| ̄ ̄ ̄ ̄ ̄ ̄ ̄ (ワッチョイ 8acc-C5/3)
2017/04/20(木) 16:31:13.15ID:dSLwtaqZ0 ,,-―--、
|:::::::::::::;;;ノ
|::::::::::( 」
ノノノ ヽ_l
,,-┴―┴- 、 ∩_
/,|┌-[]─┐| \ ( ノ
/ ヽ| | バ | '、/\ / /
/ `./| | カ | |\ /
\ ヽ| lゝ | | \__/
\ |  ̄ ̄ ̄ |
⊂|______|
|l_l i l_l |
| ┬ |
|:::::::::::::;;;ノ
|::::::::::( 」
ノノノ ヽ_l
,,-┴―┴- 、 ∩_
/,|┌-[]─┐| \ ( ノ
/ ヽ| | バ | '、/\ / /
/ `./| | カ | |\ /
\ ヽ| lゝ | | \__/
\ |  ̄ ̄ ̄ |
⊂|______|
|l_l i l_l |
| ┬ |
240デフォルトの名無しさん (ワッチョイ de92-UbXF)
2017/04/20(木) 16:39:26.78ID:pGeg/NAi0 俺のコードにはファウンデーションを丹念に塗ってある
241デフォルトの名無しさん (オッペケ Sr23-bEgw)
2017/04/20(木) 21:34:46.16ID:iTkbXITvr >>232
ユニバーサル参照にするとどういう制限が発生するのか分かった上でやっているのか?
ユニバーサル参照にするとどういう制限が発生するのか分かった上でやっているのか?
242デフォルトの名無しさん (ワッチョイ 87f4-bQlo)
2017/04/20(木) 21:45:04.01ID:OBF/5/VT0 >>240
MFCとか綺麗だよねw
MFCとか綺麗だよねw
243デフォルトの名無しさん (ワッチョイ 06a6-HDOw)
2017/04/20(木) 22:40:39.82ID:16AwdhdC0244デフォルトの名無しさん (オッペケ Sr23-bEgw)
2017/04/21(金) 14:01:58.43ID:jq02h6/Cr 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
struct A { constexpr static int N = 1'000; };
f_pass_by_value(A::N); // OK
f_pass_by_universal_ref(A::N); // NG
245デフォルトの名無しさん (ワッチョイ a375-OSeR)
2017/04/21(金) 14:33:26.68ID:SD7KIjS10 >>244
それ -std=c++1z で通るのな。規格変わったん?
それ -std=c++1z で通るのな。規格変わったん?
246デフォルトの名無しさん (オッペケ Sr23-bEgw)
2017/04/21(金) 14:40:59.59ID:jq02h6/Cr247デフォルトの名無しさん (オッペケ Sr23-bEgw)
2017/04/21(金) 14:43:15.61ID:jq02h6/Cr だがこれはC++17でも通らない
struct A { int b : 2; };
f_pass_by_ref( A{}.b );
struct A { int b : 2; };
f_pass_by_ref( A{}.b );
248デフォルトの名無しさん (スップ Sd4a-Vs57)
2017/04/21(金) 14:47:58.15ID:uAFMuOM4d クソザコなので日常的には何も気付かない
249デフォルトの名無しさん (ワッチョイ 0b59-C4NQ)
2017/04/23(日) 11:36:55.65ID:onWybp6E0 質問
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);
if (it == dic.end()) { dic[key] = 1; } else { it->second++; }
(3) その他
みたいな?
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);
if (it == dic.end()) { dic[key] = 1; } else { it->second++; }
(3) その他
みたいな?
250デフォルトの名無しさん (ワッチョイ 0b59-C4NQ)
2017/04/23(日) 11:40:30.73ID:onWybp6E0251デフォルトの名無しさん (ワッチョイ 2756-2VNN)
2017/04/23(日) 11:58:50.37ID:VmCxZvh+0 std::map::size で取得
252デフォルトの名無しさん (ワッチョイ fad4-MAHZ)
2017/04/23(日) 12:31:44.54ID:XHzgUmp00 >>249
++dic[key];
++dic[key];
253デフォルトの名無しさん (オッペケ Sr23-bEgw)
2017/04/23(日) 13:01:20.45ID:E5WPNsUIr 質問者の日本語がクソだと251のようなレスがついてしまっても仕方ない
254デフォルトの名無しさん (ワッチョイ 0b59-C4NQ)
2017/04/23(日) 13:59:45.57ID:onWybp6E0 >>252
ゆ、許された…!
ゆ、許された…!
255デフォルトの名無しさん (ワッチョイ 0b00-amNx)
2017/04/23(日) 21:33:17.66ID:+WngXvwH0 よくわかんないけどmax_elementでゲッツした数字をインクレメントしてそいつをキーにすればいいなじゃないか?
256デフォルトの名無しさん (ワッチョイ eac3-Fg7L)
2017/04/23(日) 22:33:59.07ID:W0RIoSIf0 からのターン
257デフォルトの名無しさん (ワッチョイ 7fd4-fTYt)
2017/04/25(火) 01:55:12.08ID:2owVuizj0 fopen()を使う場合は、
shared_ptr<FILE> fp( fopen( "ファイルパス", "r" ), fclose );
と書けるんですが、
fopen_sのように、戻り値でFILE*を取得できない場合は、shared_ptrにできないんでしょうか?
shared_ptr<FILE> fp( fopen( "ファイルパス", "r" ), fclose );
と書けるんですが、
fopen_sのように、戻り値でFILE*を取得できない場合は、shared_ptrにできないんでしょうか?
258デフォルトの名無しさん (ワッチョイ 0b00-amNx)
2017/04/25(火) 02:09:15.69ID:L5bW9/iP0 ステップ1:shared_ptr<FILE> fp( [] { FILE* fp; fopen_s( &fp, "ファイルパス", "r" ); return fp; }(), fclose() );
ステップ2:おわり
マックはかんたんなんだ。
ステップ2:おわり
マックはかんたんなんだ。
259257 (ワッチョイ 7fd4-fTYt)
2017/04/25(火) 07:41:45.06ID:2owVuizj0260デフォルトの名無しさん (ワッチョイ de92-UbXF)
2017/04/25(火) 08:33:19.57ID:OEZA+HZE0 クラス化したほうがいいよ
261デフォルトの名無しさん (ワッチョイ 8acc-C5/3)
2017/04/25(火) 09:08:54.62ID:qHdDYIsy0 >>258
最初にNULL入れておかんと未定義になるかもでよ
最初にNULL入れておかんと未定義になるかもでよ
262デフォルトの名無しさん (ガックシ 06c6-kpPm)
2017/04/25(火) 14:04:32.36ID:o5+7I7e76 超初心者です。
Ptr<Hoge> abc::createHoge()
abc::Hoge::do()
すると、
静的でないメンバー参照は特定のオブジェクトを基準とする相対参照である必要があります
と言われました。
Hogeのdoを使うにはどうすればいいですか?
Ptr<Hoge> abc::createHoge()
abc::Hoge::do()
すると、
静的でないメンバー参照は特定のオブジェクトを基準とする相対参照である必要があります
と言われました。
Hogeのdoを使うにはどうすればいいですか?
263デフォルトの名無しさん (ブーイモ MMef-FQBx)
2017/04/25(火) 14:18:34.30ID:P05pQrZGM264デフォルトの名無しさん (ガックシ 06c6-kpPm)
2017/04/25(火) 14:28:56.92ID:o5+7I7e76 できました!ありがとうございます
265デフォルトの名無しさん (スップ Sd4a-Et+B)
2017/04/25(火) 14:33:18.17ID:Z7zV+yycd いえいえどういたしまして
266デフォルトの名無しさん (オッペケ Sr23-bEgw)
2017/04/25(火) 22:33:09.32ID:ggixqTU6r >>261
他人をおとしいれるのがそんな楽しいのか?
他人をおとしいれるのがそんな楽しいのか?
267デフォルトの名無しさん (ワンミングク MMfa-OSeR)
2017/04/25(火) 23:25:19.17ID:xMNxUhiOM >>266
そんな事で陥れられるの?生きていくの大変そうだね。
そんな事で陥れられるの?生きていくの大変そうだね。
268デフォルトの名無しさん (ワッチョイ aa36-a+Jf)
2017/04/25(火) 23:34:24.96ID:9Zr4ftW/0 >>266
単なる勘違いとか無知とかかもしれないのに、なんでそんなに悪意に満ちた解釈をするのだろう。
それに、その書き込みで誰かが陥れられるというなら、攻撃するより先にその誰かを助けてあげる書き込みをする方がいいんでないか?
単なる勘違いとか無知とかかもしれないのに、なんでそんなに悪意に満ちた解釈をするのだろう。
それに、その書き込みで誰かが陥れられるというなら、攻撃するより先にその誰かを助けてあげる書き込みをする方がいいんでないか?
269デフォルトの名無しさん (ワッチョイ 0b59-C4NQ)
2017/04/25(火) 23:34:51.11ID:oTWBT7hM0 std::shared_ptr<T>::get()
270デフォルトの名無しさん (ワッチョイ 8acc-C5/3)
2017/04/26(水) 00:03:07.94ID:/Py/BDPD0 ステップ1:shared_ptr<FILE> fp( [] { FILE* fp=0←ココ; fopen_s( &fp, "ファイルパス", "r" ); return fp; }(), fclose() );
ステップ2:おわり
ステップ2:おわり
271デフォルトの名無しさん (ワッチョイ 0b00-amNx)
2017/04/26(水) 01:30:30.17ID:zA6HVqFs0 止めて!私のことで争わないで
272ich1 (アウアウウー Sacf-CGRX)
2017/04/26(水) 07:22:16.30ID:KcpaNie5a273デフォルトの名無しさん (オッペケ Sr23-bEgw)
2017/04/26(水) 08:02:32.64ID:jkGhVm4nr274デフォルトの名無しさん (ワッチョイ 7fd4-fTYt)
2017/04/26(水) 17:54:18.88ID:BTdjOnYo0 http://andriasang.com/com8ig/mt_framework/images/21dxs/full.jpg
http://game.watch.impress.co.jp/img/gmw/docs/608/483/pan_02.jpg
http://game.watch.impress.co.jp/img/gmw/docs/608/483/pan_03.jpg
こういうGUIって、どうやって作るんでしょうか?
Win32APIで頑張れば作れるんでしょうか?
それとも、ライブラリが売られたりしているんでしょうか??
http://game.watch.impress.co.jp/img/gmw/docs/608/483/pan_02.jpg
http://game.watch.impress.co.jp/img/gmw/docs/608/483/pan_03.jpg
こういうGUIって、どうやって作るんでしょうか?
Win32APIで頑張れば作れるんでしょうか?
それとも、ライブラリが売られたりしているんでしょうか??
275デフォルトの名無しさん (ワッチョイ 8acc-C5/3)
2017/04/26(水) 18:00:10.68ID:/Py/BDPD0 TVTestのソースが参考になる
276デフォルトの名無しさん (ワッチョイ 0b7a-g4bp)
2017/04/26(水) 20:24:27.91ID:5Saru3KQ0 もちろん作れる
自分でレンダリングしなきゃいけないしテクスチャも描かないといけないけど
自分でレンダリングしなきゃいけないしテクスチャも描かないといけないけど
277デフォルトの名無しさん (ササクッテロル Sp1f-wV0R)
2017/04/28(金) 01:35:45.00ID:0T/EiQwUp こういうの作るならQtとか使いたくなる
278デフォルトの名無しさん (ワッチョイ 7b75-Eih5)
2017/04/28(金) 09:33:31.10ID:UVvcEOOo0279デフォルトの名無しさん (ワッチョイ 0bf7-hLAX)
2017/04/28(金) 09:48:07.09ID:mPeDNIgc0 横だけど >>274 のGUIって Qt? GTK+?
Linuxに引っ越ししようと思っているんだが、GUIツールにどれを選択しようか悩み中。
昨今のマイクロソフトはファック過ぎる、二度と使う事は無いと思っていたC++に戻る事になりそうだ。
Linuxに引っ越ししようと思っているんだが、GUIツールにどれを選択しようか悩み中。
昨今のマイクロソフトはファック過ぎる、二度と使う事は無いと思っていたC++に戻る事になりそうだ。
280デフォルトの名無しさん (スップ Sd7f-8ZdP)
2017/04/28(金) 12:15:44.81ID:4D2iUcPod こういうGUIって、C#で簡単に組めたりするのかな?
281デフォルトの名無しさん (ワッチョイ 0bf7-hLAX)
2017/04/28(金) 12:46:51.26ID:mPeDNIgc0282デフォルトの名無しさん (アウアウエー Sa7f-PXQB)
2017/04/28(金) 15:07:30.49ID:MOddalxma283デフォルトの名無しさん (オッペケ Sr1f-zNGF)
2017/04/28(金) 18:26:35.16ID:swDsSHUMr284デフォルトの名無しさん (ワッチョイ 7b75-Eih5)
2017/04/28(金) 22:50:15.26ID:UVvcEOOo0 >>283
アレが堂々と嘘ついてるように読めるなら、お前の日本語と俺の日本語違うんだろうね。
アレが堂々と嘘ついてるように読めるなら、お前の日本語と俺の日本語違うんだろうね。
285デフォルトの名無しさん (ワッチョイ 5fcc-yfg2)
2017/04/28(金) 23:01:16.62ID:roW/lMqL0 >>283
コイツ多分学会信者
コイツ多分学会信者
286デフォルトの名無しさん (ワッチョイ db28-1Y5j)
2017/04/29(土) 02:12:01.00ID:XzsrE9yB0 >>279
コンシューマ向けのゲームエンジンだし自前なんじゃ?
コンシューマ向けのゲームエンジンだし自前なんじゃ?
287デフォルトの名無しさん (アウアウエー Sa7f-PXQB)
2017/04/29(土) 09:23:14.57ID:nyANDfpKa 学会?
創価の方も、大学的なのも縁が無いが。。。
創価の方も、大学的なのも縁が無いが。。。
288デフォルトの名無しさん (ワッチョイ db7a-xuhN)
2017/04/29(土) 22:43:17.83ID:QeCXmDWM0 ヘッダファイルを作らずに他ファイルからの利用は前方宣言だけですますのって作法的に問題はない?
289デフォルトの名無しさん (ワッチョイ 6fa6-Ahd3)
2017/04/29(土) 22:55:12.24ID:3c3Uk9T30 関数だったら数による
290デフォルトの名無しさん (ワッチョイ 6bda-L1Lv)
2017/04/29(土) 23:03:29.29ID:S/2IADGO0 >>288
その前方宣言をヘッダファイルに書いといて欲しいな。
その前方宣言をヘッダファイルに書いといて欲しいな。
291デフォルトの名無しさん (ワッチョイ db00-HpWq)
2017/04/29(土) 23:08:33.30ID:hqOpRyPj0 そいつが実装の内部で利用するもので参照先が1ファイルぐらいだったら別にいいんじゃないかな
複数あったら流石にヘッダに書いた方がいいよ
複数あったら流石にヘッダに書いた方がいいよ
292デフォルトの名無しさん (ワッチョイ 7b75-Eih5)
2017/04/29(土) 23:15:36.74ID:xdExBL2r0 引数とか変えたときリンク時(extern ”C”だったら実行時)までエラーが解らないのめんどくさくない?
293デフォルトの名無しさん (ワッチョイ 6f14-EmiY)
2017/04/29(土) 23:16:41.78ID:Ng1HwepU0 でもメンテ時に混乱しそう
294デフォルトの名無しさん (ワッチョイ db59-b9Hp)
2017/04/30(日) 08:25:35.26ID:wQZYXO/b0295274 (ワッチョイ 0bd4-mDay)
2017/04/30(日) 09:35:48.73ID:DBp9z9wf0 みなさん、ご回答ありがとうございました。
GUIライブラリって調べてみたら山ほどあるんですね。
>>274のツールもGUIライブラリを使ったのかもしれませんね。
まぁ、カプコンならゼロから作っている可能性もあるかもしれませんがw
調べてGUIライブラリの中ではimguiが最も便利そうだったので、
使ってみることにします。
ありがとうございました。
GUIライブラリって調べてみたら山ほどあるんですね。
>>274のツールもGUIライブラリを使ったのかもしれませんね。
まぁ、カプコンならゼロから作っている可能性もあるかもしれませんがw
調べてGUIライブラリの中ではimguiが最も便利そうだったので、
使ってみることにします。
ありがとうございました。
296デフォルトの名無しさん (ワッチョイ 7b75-Eih5)
2017/04/30(日) 12:29:31.69ID:kmaYjpOe0297デフォルトの名無しさん (ワッチョイ 7b75-Eih5)
2017/04/30(日) 12:42:40.89ID:kmaYjpOe0 返り値の型を変えたときもそうだけど、変更したとき未定義動作になりやすいからヘッダファイルは作った方が良いよ
298デフォルトの名無しさん (オッペケ Sr1f-zNGF)
2017/04/30(日) 14:56:05.47ID:Lu1XcywOr 『extern ”C”だったら実行時)までエラーが解らない』
どうしてこう他人を陥れたがるのか不思議で仕方ない
どうしてこう他人を陥れたがるのか不思議で仕方ない
299デフォルトの名無しさん (ワッチョイ 5f25-XZJj)
2017/04/30(日) 15:34:31.43ID:6FmE5H1T0300デフォルトの名無しさん (ササクッテロレ Sp1f-X/f6)
2017/04/30(日) 18:30:55.32ID:iF9ITzdSp ぼくの考えとちがう
って意味だよ
って意味だよ
301デフォルトの名無しさん (ワッチョイ 5b3c-VhBr)
2017/04/30(日) 19:24:02.13ID:SNt5gcRU0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 今年の漢字 [ぐれ★]
- 【おこめ券】物価高対策の“おこめ券”全米販は1枚477円で販売へ 鈴木農水大臣「国民の皆様に活用いただきやすいよう工夫いただいた」★2 [ぐれ★]
- 【麻雀】プロ雀士の岡田紗佳さんが勝訴、点数計算めぐる発言は「違法とは言えず」 大宮簡裁 [征夷大将軍★]
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ★3 [冬月記者★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★5 [蚤の市★]
- 今年の漢字は「熊」に決定! 相次ぐクマ被害 去年は「金」 [冬月記者★]
- 虫歯の味ってわかるよね
- 参政党議員「クジラの肉を食べないのは流通や販路に問題があるからだよね?」 [592058334]
- (´;ω;`)血尿が出た
- __トランプ、G7に代わる「Core 5」構想、米 中 露 印 日をまとめる巨大枠組み、世界秩序の再編につながる可能性 [827565401]
- お絵描きAIくん、風が強い!! 可愛い女の子も作れる
- VTuber叩きが大流行してる理由、1枚の画像で解説される…!! [858219337]
