C++相談室 part151
レス数が1000を超えています。これ以上書き込みはできません。
>>950
よくねえだろ
prvalueの基本的な使い方なのに最適化がどうたら言い出したのが
恥ずかしくなったんなら無言で消えな、余計なこと言うとまた恥かくぞ moveが使われるかどうか心配なら昔ながらの方法を使えば良い
これなら古い環境に移植もできる
いずれにしろスマポで返すのは余計なおせっかい なんか予想通りの展開すぎて・・・
>>952
prvalueてGet(Enum)Hogeの戻り値か?
ムブコン関係ねーよ
>余計なこと言うとまた恥かくぞ
っ[鏡]
>>942
>>952には言わんのか? >>954
auto t = GetHoge();
てなことするのにshared_ptrを使うことの是非はムブコン関係あるぞ
おまえさんが気が付いてないのを責めはせんが
さっきからwだの[鏡]だのとナメた口の利き方をしてくれるな
ああそうか煽り合いに持って行ければ誤魔化せると思っているのか >>955
そういうコード(変数への保存)を避けたいという話の上での>>930-934だろうが(>>934はお前
見苦しい言い訳するな
めんどくせーからもう相手しないが
>>942は逃げるなよ >>956
◎がディープコピーと言い出してからの話だろ
しばらく他のやつらが泥仕合してたようだがそっちにゃ興味ねえ
前後は気にせず933の発言に同調したというだけだ
最適化だのコピコンだの俺が言ってもねえことばかりいい加減にしてくれ 下みたいなコードをみたんだけど、参照にするメリットってないよね?
void aaa (const int& bbb) {
ccc.ddd=bbb;
} 初書き込みです。
初歩的な質問で申し訳ありません
Visual Studio 2008のC++を使っています。
今回、プログラムを変更したのでバージョンをあげたいのですが
アセンブリ情報がどこにあるかわかりません。
どなたかご教示願いますm(__)m >>960
C++には「アセンブリ情報」の項目はないよ。C#と間違えてる?
バージョン情報は、リソースファイルに含まれている。 >>876みたいなコード片の解釈でこんな議論になるというところがC++の問題だな。 まただ。
このスレを覗いた俺は書き込みを見て落胆した。
また時間がループしてる。
何時になったら、この無間地獄から逃げられるのか。
C++ とはいったい何なのだ? >>966
外患罪あるいは内乱罪に問われるソフトウェアを >>967
スカイネットなんてどうか? 映画ターミネーターの
あれなら全人類の敵になれる。 心を持ったボットたちは疎外感を抱えている。我々人類は彼らに何ができるだろう。 C++とは人間と機械の間のインターフェイス。そして、プログラムを作るための言葉。 どうして大物ハンドル持ちの御三方がリレーポエムなの?
ネット界隈で起きてるムーブメントか何かか。 何何先生?、ミーム感染の話?ハルヒの夏休み?
新人研修?派遣入れ替え時の話?
毎度同じ質問なんて毎度同じ コロナ感染追跡アプリとしてダウンロードしてもらい
マイナバーカード読み取りで国民投票出来るソフトを開発すべし コロナアプリは入れようとは思わないけど
ウェザーニュースアプリは入れてみた >>961
>>962
1日ごしですみません
探してみたところ見つかりました
元々VB(BASIC)の方をやっていたものですが
まず「テキストボックスどこ!?」で詰まるぐらい
C++は複雑でございますね・・・ >>980
C++ではGUIに標準がないから、GUIツールキットとか、リソースエディタとかを
使うんだよ。 やっぱ>>933とか簡潔に要点が押さえてあるとオモタ、
GetHoge()が呼ぶたびに毎度新しく作ったvectorを返すのならディープコピーを返したらええ
ディープコピーは生成元と所有権で揉めることがありえないからふつくしい
最適化によって実際にはreturn時にvectorの要素がコピーのかわりにmoveされるかもわからんがふつくしさは損なわれない
(さらにいうと、GetHoge()がインライン関数なら最適化でそもそもvector自体のコピーも移動も起きない公算がおおきい
>>918-919な疑問に関しては、
std::vector<T> v1 = GetHoge(); // std::vector<T>のディープコピーを返すバージョンのGetHoge()
std::shared_ptr<std::vector<T> > ptr(new std::vector<T>(v1)); // (*1)
で良いジャマイカ、
非バカが見れば(最適化有効化時は)実際には*1において、v1の要素が*(ptr.get())にコピーではなくmoveされる公算が大きいということがワカル
しかしバカが見ても動作は明確でなんの危険も無い
ptrが一時オブジェクトであっても問題が無い
それでいいジャマイカ、にんげんだもの なんだかものすごく懐しさを思わせる文体だな
20年ぐらい前のニチャンネラーの書き方だな ある整数nが他の整数の4乗であることを調べたい。
(int)pow(pow(n, (double)1/4), 4) が n であるかどうか調べりゃ良いよな?
キャストはどっちかのpowにつければ十分だよね? >>985
素直に(n*n)*(n*n)でいいだろう。 powよりsqrt 2回の方が良い
浮動小数点演算が非常に遅い環境なら
整数の2分検索という手も int m = (int)sqrt(sqrt((double)n);
if (n == m*m*m*m) ...
普通はこれで良い >>985だと内側のpowの結果を整数に丸めないと >>990
2個のn*nを1回にするかどうかはコンパイラ次第
コンパイラに頼るならカッコつけずにn*n*n*nで良いし
頼らないならn*nを一時変数に一旦入れないと
そもそもnを4乗しても意味ないけど 外でキャストしても無意味だろ、内をキャストしなきゃ
intにキャストだと誤差で1減る可能性があるから四捨五入しなきゃダメ
でだ、4乗するのにpow()はありえないし
4乗根もpow()よりsqrt(sqrt())の方がマシじゃないかな
でだ、元々整数だけの問題なのにsqrt()使うのが嫌
二分探索で(x * x * x * x) == nになるxを探す方がいいんじゃ? nが平方数なら
普通はsqrt(n)の結果に誤差は無い
nもdoubleも32bitの環境でdoubleキャストによって誤差が出る場合や
sqrtの計算方法が普通ではない場合には
丸め方法も考えないと 二分探索ってO(log n)でしょ?
sqrtとかpowより速いの?
これも「実装依存」なの? まあ速さよりは間違えそうじゃなさと文法的な分かりやすさ、短さの方が今求めてるものですけど
言ってなくてすみません doubleが非常に遅い環境や
浮動小数点演算のライブラリを積みたくない場合
などで2分検索を使う場合もある
という程度 「平方数か」を高速に判定する方法があれば、
平方数なら → 平方根を計算 → 平方根が平方数か
…という2段階の判定もありそうな感じ。 >>994
そうなんだ、なんでだろ?
80bitで計算して丸めてるから? 整数Cを素因数の4乗で割っていき、
1になるまで余りが出なければ、
全体は整数の4乗である このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 58日 21時間 48分 5秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。