C++相談室 part117 [転載禁止]©5ch.io
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2015/05/10(日) 01:08:05.30ID:mDK/R5EUただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。
前スレ
C++相談室 part116
http://peace.2ch.net/test/read.cgi/tech/1424782918/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.95【環境依存OK】
http://peace.2ch.net/test/read.cgi/tech/1423872914/
次期規格C++1zはこちら
C++14/C++1z 20
http://peace.2ch.net/test/read.cgi/tech/1410382924/
■長いソースを貼るときはここへ。■
http://codepad.org/
http://ideone.com/
0002デフォルトの名無しさん
2015/05/10(日) 01:09:21.99ID:mDK/R5EU環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
0003デフォルトの名無しさん
2015/05/10(日) 01:10:25.74ID:mDK/R5EU0004デフォルトの名無しさん
2015/05/10(日) 06:48:19.63ID:5MtNbzlR0005デフォルトの名無しさん
2015/05/10(日) 12:02:04.93ID:M5B2Klw40006デフォルトの名無しさん
2015/05/10(日) 15:46:08.18ID:R0t9wz1G0007デフォルトの名無しさん
2015/05/10(日) 16:29:05.14ID:2+d7/Ruuそんなに悔しかったのかよ w
0008デフォルトの名無しさん
2015/05/10(日) 18:35:27.90ID:R0t9wz1Gへー、おまえ悔しかったのか
おまえ自分が悔しいときの日本語の使い方がネイティブと違うな
0009デフォルトの名無しさん
2015/05/10(日) 19:38:17.31ID:EXAqh8EAすごいことに台風が来ます。
台風を楽しみましょう。
でも、ちょっとは注意しましょう。
0010デフォルトの名無しさん
2015/05/10(日) 19:44:49.06ID:nvCygbIQ0011デフォルトの名無しさん
2015/05/10(日) 20:34:10.19ID:B3f5+uPEこれ見て本人が悔しがってると思うとか、どこの国の人なんだろう... w
0012デフォルトの名無しさん
2015/05/10(日) 22:20:23.55ID:R0t9wz1G0013デフォルトの名無しさん
2015/05/10(日) 23:05:11.13ID:pprxUkHe0014デフォルトの名無しさん
2015/05/13(水) 21:53:42.78ID:wpNFBBEC0015片山博文MZ社外取補 ◆T6xkBnTXz7B0
2015/05/13(水) 21:55:10.58ID:cKVTGKhm0016デフォルトの名無しさん
2015/05/13(水) 22:23:47.71ID:wpNFBBEC0017片山博文MZ社外取補 ◆T6xkBnTXz7B0
2015/05/13(水) 22:30:06.64ID:cKVTGKhm早く本題に入ってくれ
0018片山博文MZ社外取補 ◆T6xkBnTXz7B0
2015/05/13(水) 22:41:44.18ID:cKVTGKhm0019デフォルトの名無しさん
2015/05/13(水) 23:51:59.04ID:ge68r1dDここみていろいろ遊んでるときに気づいたことがあったので質問です
(このページの主題は質問とは無関係です)
#include <functional>
#include <boost/asio.hpp>
#include <boost/bind.hpp>
int main() {
boost::asio::io_service io;
auto fb = boost::bind(&boost::asio::io_service::run, &io);
auto fs = std::bind(&boost::asio::io_service::run, &io); // こっちだけエラーがでる
}
このようなコードを書くと、std::bindのほうだけ
prog.cc:8:15: error: no matching function for call to 'bind'
auto fs = std::bind(&boost::asio::io_service::run, &io);
^~~~~~~~~
/usr/local/libcxx-3.6/include/c++/v1/functional:2184:1: note: candidate template ignored: couldn't infer template argument '_Fp'
bind(_Fp&& __f, _BoundArgs&&... __bound_args)
^
/usr/local/libcxx-3.6/include/c++/v1/functional:2193:1: note: candidate template ignored: couldn't infer template argument '_Rp'
bind(_Fp&& __f, _BoundArgs&&... __bound_args)
^
1 error generated.
といったエラーが出ます
boost::bindとstd::bindでなぜこのような違いがでてくるんでしょうか?
0020デフォルトの名無しさん
2015/05/14(木) 09:43:44.06ID:feLJNGyltemplate class std::vector<std::unique_ptr<int>>;
ではunique_ptrのコピーコンストラクタが使えない系のコンパイルエラーが出てしまいます
エラーを出さずに明示的に実体化させる方法が知りたいです
0021デフォルトの名無しさん
2015/05/14(木) 11:21:27.46ID:2vPR+87dメンバ関数使用の有無によらず実体化しようとするだろうから、無理かな。
ところで、その明示的実体化でどういう効果を狙ってるのか、気になるんで
よかったら教えてもらえない?コンパイル時間とか実行効率とかの話?
0022デフォルトの名無しさん
2015/05/14(木) 12:21:40.85ID:feLJNGylありがとうございます
0023デフォルトの名無しさん
2015/05/14(木) 12:22:30.64ID:72Krvoecよくわからんけど何かかぶってない?
_1とか_2がBoostとstdでかぶっててエラーになる現象があるから。
0024デフォルトの名無しさん
2015/05/14(木) 17:46:19.08ID:pdSmJ/DC0025デフォルトの名無しさん
2015/05/14(木) 23:36:03.59ID:1cp8I+0y0026デフォルトの名無しさん
2015/05/15(金) 00:35:49.12ID:AycHoo+eusing std::placeholdersとかはやってないから多分かぶることはないと思うんですが、
詳しく調べてない(そもそも詳しい調べ方さっぱりわからない)のでよくわからないです
0027デフォルトの名無しさん
2015/05/15(金) 21:39:30.85ID:hBLf1mma&boost::asio::io_service::runの&を消すとどうなる?
0028デフォルトの名無しさん
2015/05/15(金) 22:27:30.43ID:zZMU22PT引数の数からオーバーロード候補を選んでくれるんやな。
0029デフォルトの名無しさん
2015/05/15(金) 23:06:13.12ID:AycHoo+eerror: call to non-static member function without an object argument
っていうエラーが出ます(boost, stdいずれも
0030デフォルトの名無しさん
2015/05/15(金) 23:51:15.52ID:zZMU22PTまだウダウダやってんのk?runにはオーバーロードが二つあるんだよ。
std::bind((std::size_t(boost::asio::io_service::*)())&boost::asio::io_service::run, &io);
0031デフォルトの名無しさん
2015/05/16(土) 01:58:40.73ID:jUULRVoQa.cpp:
template<class T> void foo(T x) { printf("func_a: x=%d\n", x); }
void bar(int x) { foo(x); }
b.cpp
template<class T> void foo(T x) { printf("func_b: x=%d\n", x); }
void bar(int x) { foo(x); }
みたいなケースでテンプレート関数fooをファイルスコープにしたいのですが
やっぱnamespace使うしか無いですかね…
0032デフォルトの名無しさん
2015/05/16(土) 01:59:00.02ID:tglcZs5s引数の個数に応じたオーバーロードが2つあって、
std::bindはその解決ができないけどboost::bindはできるってことでしょうか?
ありがとうございます
003331
2015/05/16(土) 02:00:09.11ID:jUULRVoQ0034デフォルトの名無しさん
2015/05/16(土) 07:59:16.15ID:Tl0WsJOWhttp://ideone.com/L65302
0035デフォルトの名無しさん
2015/05/16(土) 08:43:18.68ID:FC5432uwどんなレガシーコードだよ
0036デフォルトの名無しさん
2015/05/16(土) 09:08:25.28ID:RtDXuCInファイルスコープにしたいなら無名名前空間を使えばいいでしょ。何か問題なの?
0037デフォルトの名無しさん
2015/05/16(土) 10:01:17.43ID:JcAP1h47"std::bind オーバーロード"でググるとよろし
>>35
bind使ってるのは、
>>19のboost.orgのサンプルコードにbindが使われているからじゃろうて
ラムダ式使ったほうが、簡単だけど
auto fs = (&io)[]{ io.run(); };
0038デフォルトの名無しさん
2015/05/16(土) 10:34:17.06ID:l/o33AHz0039デフォルトの名無しさん
2015/05/16(土) 10:36:53.61ID:Z9l/gUlrenable_ifで指定した型の種類を優先して
全ての種類の型がダメなら
実行する関数はどうやりますか?
0040デフォルトの名無しさん
2015/05/16(土) 13:12:11.92ID:D0MUvnf3すべての条件がダメなときに有効になる関数を書けばいいのでは。
条件が複雑になるならクラステンプレートのstatic関数で実装して
クラステンプレートを部分特殊化するとか。
0041デフォルトの名無しさん
2015/05/16(土) 16:47:48.86ID:tglcZs5s明示的に関数をキャストして特定しないといけないんですね、なるほど…
boostさんすごい
0042デフォルトの名無しさん
2015/05/17(日) 07:58:37.11ID:nHIEAaiT言語仕様でそもそも出来ないものを
臭いものにフタをする場当たり的なboostの設計は害悪
0043デフォルトの名無しさん
2015/05/17(日) 09:29:44.75ID:OP9PfkoQ0044デフォルトの名無しさん
2015/05/17(日) 15:52:56.91ID:T3ZW3uAx0045デフォルトの名無しさん
2015/05/17(日) 18:59:54.82ID:Vv8GOhgeそれがわざわざライブラリにするくらい使うかだの全体との整合性だのは考えないもの
0046デフォルトの名無しさん
2015/05/18(月) 11:07:05.94ID:iRc1W1Qipublic:
// メンバ変数、関数など
};
MyClass func(const MyClass &mc){
auto mc_ret = mc;
// ここで、いろんな処理
return mc_ret;
}
void main(){
MyClass mc;
// ここで mc にいろいろ値などセットする
MyClass mc = func(mc); // そのmcをfuncに渡す
}
みたいにfunc()を定義すると、mc_retが毎回作成されるので効率悪いのでしょうか?
funcの定義を
void func(MyClass &mc){
// ここで、いろんな処理
}
とするほうが高速になりますか?
Visual Studio 2013です。
0047デフォルトの名無しさん
2015/05/18(月) 11:11:00.80ID:iRc1W1QiMyClass mc = func(mc);
のように、戻り値を返す関数形でfunc()を定義したいんです。
0048デフォルトの名無しさん
2015/05/18(月) 13:29:47.75ID:s8WFTGHhMyClass func(MyClass mc) { ... }
でいいんじゃないか?
0049デフォルトの名無しさん
2015/05/18(月) 13:33:24.53ID:s8WFTGHh// mcを色々処理
return mc;
}
ってことね
funcの呼び出し元の実引数が右辺値ならmcへの値渡しはムーブになると思うので軽い
0050デフォルトの名無しさん
2015/05/18(月) 14:14:04.27ID:iRc1W1Qiレスありがとうございます。
> MyClass func(MyClass mc) { // mcは値渡し
> // mcを色々処理
> return mc;
> }
>ってことね
そうではなくて、
説明不足でしたが、以下のような状況を想定していました。
void main(){
MyClass mc;
// ここで mc にいろいろ値などセットする
MyClass mc = func(mc); // そのmcをfuncに渡す
// 戻ってきた mc をこの後、さらにいろいろ処理
...
...
}
このような状況で、アドバイスをよろしくお願いいたします。
0051デフォルトの名無しさん
2015/05/18(月) 14:47:41.32ID:7BvZDlvH0052デフォルトの名無しさん
2015/05/18(月) 15:36:29.43ID:hcu+yNsD参照でいいんじゃね?
0053デフォルトの名無しさん
2015/05/18(月) 15:39:38.77ID:7BvZDlvHauto mc_ret = mc;
中で↑するぐらいなら値渡しでいいだろ?
0054デフォルトの名無しさん
2015/05/19(火) 01:44:54.64ID:4XwXKHrpわざわざこの代入をする必要があるのかどうかという疑問はある
0055デフォルトの名無しさん
2015/05/19(火) 02:03:45.06ID:olC2rzju悪い
>とするほうが高速になりますか?
なる
本筋とはずれるけどmcを2回定義して怒られると思う、そのコード
0056デフォルトの名無しさん
2015/05/19(火) 07:11:45.70ID:cAl9a52g式ツリーを持たせたいんじゃね
0057デフォルトの名無しさん
2015/05/19(火) 11:28:38.81ID:qRFBYv8T出来れば模範解答を教えてください。
0058デフォルトの名無しさん
2015/05/19(火) 11:35:34.73ID:nQ0racKOおそらく>>48-49が解答
0059デフォルトの名無しさん
2015/05/19(火) 17:52:25.56ID:a+aajTczdelcltype(auto) f();
のどっちが正しいと思いますか?
初めのはdecltype(auto)自体が型という考え方です
二番目のはautoという推論方式をdecltypeという推論形式に
キャストしたという考え方です
0060デフォルトの名無しさん
2015/05/19(火) 20:32:03.90ID:qWpq1uxr>キャストしたという考え方です
いえ全然違います
どちらも同じなので片方だけを正しいとすることはできません
0061デフォルトの名無しさん
2015/05/23(土) 00:31:20.74ID:CcTrUtiu例えば
a[]={9, 5, 7, 1, 3, 11}
を
{1, 3, 5, 7, 9, 11}
に並べ替えて、更に元の順番
{3, 4, 1, 2, 0, 5}
も適当な配列に記憶したい。
できるだけ速いアルゴリズムでソートしたい。
0062デフォルトの名無しさん
2015/05/23(土) 00:37:33.18ID:pR56aZiN0063デフォルトの名無しさん
2015/05/23(土) 00:42:57.52ID:+HPos4ruインデックスと値をセットにした構造体を作ってその構造体の値の比較と入れ替えでソートを実装する
ポインタを使う方法として
配列のアドレスが連続してることを仮定してポインタの配列を作る
比較はポインタ先の値で比較、ポインタの配列のソートを行う
元いたインデックスは(ポインタの値)-(頭のアドレス)で算出
0064デフォルトの名無しさん
2015/05/23(土) 01:21:06.11ID:KdzUXHQ9http://mglab.blogspot.jp/2012/10/c2.html
0065デフォルトの名無しさん
2015/05/23(土) 01:41:09.64ID:4IsgGA8Thttp://ideone.com/cIlL0O
0066デフォルトの名無しさん
2015/05/23(土) 04:06:00.01ID:w/2IzZvC0067デフォルトの名無しさん
2015/05/24(日) 01:22:20.61ID:VdUAEjY5longlong配列の下半分longに配列index、上半分にデータ値を合成格納
qsortでlonglongのままソート
各long値はマスクと右bitシフトで取得
0068デフォルトの名無しさん
2015/05/24(日) 01:28:02.46ID:utMlj4pJ0069デフォルトの名無しさん
2015/05/24(日) 02:46:18.58ID:neLU6sWs0070デフォルトの名無しさん
2015/05/24(日) 06:34:02.74ID:ylcsIUCh0071デフォルトの名無しさん
2015/05/24(日) 06:50:20.06ID:tybAC3nL0072デフォルトの名無しさん
2015/05/24(日) 09:27:44.19ID:qM/+9wQUブリッジパターンは構造を整理して主に拡張性を高めるためにクラスの一部を別のクラスに切り出す
切り出したクラスは隠蔽されている必要はない
0073デフォルトの名無しさん
2015/05/24(日) 16:36:57.41ID:rnyeMIqo0074デフォルトの名無しさん
2015/05/24(日) 16:46:32.24ID:NKUCLBiW0075デフォルトの名無しさん
2015/05/24(日) 19:56:12.68ID:83dput5b0076デフォルトの名無しさん
2015/05/24(日) 20:18:05.93ID:kYZMgSQu0077デフォルトの名無しさん
2015/05/24(日) 21:16:25.87ID:8riMzWGyただオーバーロードできない演算子なだけ
0078デフォルトの名無しさん
2015/05/24(日) 23:45:59.91ID:peEGidfs今授業でプログラミングを受けてるんですがそこで出た宿題が分かりません。ここで聞いてもいいですか?
0079デフォルトの名無しさん
2015/05/24(日) 23:46:58.51ID:N2dPAs5v0080デフォルトの名無しさん
2015/05/26(火) 17:44:01.72ID:xRipshwS最適化オプション-O3を付ける前提で頼む
0081デフォルトの名無しさん
2015/05/26(火) 18:20:52.76ID:TltR/tDHその箇所が最適化するに値するならば、括り出せるなら括り出せ
そうでなければ読みやすい方を選べ
0082デフォルトの名無しさん
2015/05/26(火) 18:34:27.24ID:xRipshwSボトルネックになってる(一番沢山回る)forの中にある
括っても括らなくても体感変わらなかったんだよな
0083デフォルトの名無しさん
2015/05/26(火) 18:53:35.30ID:/rbKs22Dコンパイラ名も書かずに自分の使ってるコンパイラのオプションをいきなり書かれても
0084デフォルトの名無しさん
2015/05/26(火) 19:21:48.98ID:Wubd1VRv0085デフォルトの名無しさん
2015/05/26(火) 22:10:49.61ID:oKlXT6AY基本、読みやすくシンプルだと考えられる方にしておく。
パフォーマンスが気になるなら、まず実測。
0086デフォルトの名無しさん
2015/05/26(火) 23:25:54.02ID:PhNusCn9という質問ではなかったのか?
速くなったり外に出した方が読みやすくなるなら質問してないだろ
0087デフォルトの名無しさん
2015/05/26(火) 23:39:06.46ID:W+wx6WBJ速度が同じで読みやすいコードと読みにくいコードがあったら前者がいいに決まってる
>>81や>>85と同じこと言ってるだけだが
0088デフォルトの名無しさん
2015/05/27(水) 00:48:10.82ID:efoBkCvDそのそも体感程度が大事なレベルならループの中にifがあろうがどうでもいい
0089デフォルトの名無しさん
2015/05/27(水) 13:10:55.65ID:awqWe71Lみたいじな状況が一番困るw
0090デフォルトの名無しさん
2015/05/27(水) 13:25:01.03ID:HNSUzXKJバージョンによって色々違うのは無視かよ w
0091デフォルトの名無しさん
2015/05/27(水) 13:47:28.33ID:iec71oBsヒトは自分の入れ込んだ方に無意識にバイアスかけるからね
だからこそ実測が重要
0092デフォルトの名無しさん
2015/05/27(水) 13:52:00.12ID:2yaRNWB+話は全く違うけど、ジェネリック医薬品って治験が不要なんだよな
だから恐い
それに似てるかも
二重盲検法はジェネリック医薬品にも義務付けるといいな
ということで速度に関しても二重盲検法が必要だな
0093デフォルトの名無しさん
2015/05/27(水) 14:07:25.21ID:efS2f4FU成分一緒なのになんで治験が必要なんだよ
0094デフォルトの名無しさん
2015/05/27(水) 14:27:19.69ID:lVf4UdZG時間に関してはchrono使えばいいけど、「体感速度」を知りたいんだろ?
0096デフォルトの名無しさん
2015/05/27(水) 20:22:35.00ID:/bdRBMF4実測値を見てもなお体感がどうのこうの言ってるようなアナログ人間に対する対処法はない
0097デフォルトの名無しさん
2015/05/27(水) 21:13:31.25ID:Cp39/RNE検査に通した薬だけまともで
通った後は適当で品質にムラがある
勝手に製造工程を変えて
いつの間にか危険な成分が微量混入してる
など
その会社が信頼できるかどうかってのもある
0098デフォルトの名無しさん
2015/05/27(水) 23:25:52.30ID:qfInqOGF0099デフォルトの名無しさん
2015/05/27(水) 23:58:09.18ID:G+sQybRdそれはちょっと違うだろ。
検査したことにして出荷。
HIVの被害報告があったにもかかわらず握り潰し。
これは検査したことにならない。
0100デフォルトの名無しさん
2015/05/28(木) 09:46:46.03ID:aMLKyZHw問題があったのは基準を作る過程のほうで
0101デフォルトの名無しさん
2015/05/28(木) 16:07:56.51ID:Ut1Jd9wY体感は早くなる、みたいな
0102デフォルトの名無しさん
2015/05/28(木) 20:28:34.80ID:+z3HE+1N0103デフォルトの名無しさん
2015/05/28(木) 20:37:47.63ID:CtCSkEBs0104デフォルトの名無しさん
2015/05/28(木) 20:49:08.17ID:aMLKyZHwPC-9801のFORMATコマンドでなら、プログレスバーの精神的効果は大きかったが
0105デフォルトの名無しさん
2015/05/28(木) 22:01:21.58ID:ZMWTS8nvわかんねぇよ
0106デフォルトの名無しさん
2015/05/28(木) 22:14:53.93ID:pwrXSWWR分解して一つずつ考えるとわかるようになるよ。
0107デフォルトの名無しさん
2015/05/28(木) 23:05:29.58ID:CtCSkEBs0108デフォルトの名無しさん
2015/05/28(木) 23:19:28.79ID:+atrdthn・バーの増えるペースがばらばら
・バーが100%に行ったと思ったらまた0%に戻りやがった
0109デフォルトの名無しさん
2015/05/28(木) 23:32:43.25ID:RoxPXtFV単に[][]のようにするやり方やarrayクラス,vectorクラスを用いるやり方がありますが
どの方法が一般的でしょうか
0110デフォルトの名無しさん
2015/05/28(木) 23:39:20.23ID:JOXP+yGi0111デフォルトの名無しさん
2015/05/29(金) 01:04:50.18ID:xgUlcQoUenumをenum classみたいにスコープを持たせる方法はありますか?
0112デフォルトの名無しさん
2015/05/29(金) 01:12:06.16ID:mKqwnZNf0113デフォルトの名無しさん
2015/05/29(金) 01:22:09.32ID:ru3QOXEM0114デフォルトの名無しさん
2015/05/29(金) 03:32:41.80ID:xgUlcQoUありがとうございます
名前空間に突っ込んでとりあえずしのぎました
0115デフォルトの名無しさん
2015/05/31(日) 11:15:14.18ID:OIN9Nn99クラスの定義と宣言を分けて書く場合
どちらの前に掛けばよろしいですか?
我々は宣言の前にしかかいてないどすけど
0116デフォルトの名無しさん
2015/05/31(日) 11:15:43.44ID:OIN9Nn99関数の定義と宣言を分けて書く場合
どちらの前に掛けばよろしいですか?
我々は宣言の前にしかかいてないどすけど
0117デフォルトの名無しさん
2015/05/31(日) 11:43:44.83ID:SZ/HavyK0118デフォルトの名無しさん
2015/05/31(日) 13:12:51.15ID:aaI4+yOw0119デフォルトの名無しさん
2015/05/31(日) 13:54:40.18ID:1lTJ4ips見た目は重要だよ
そこを理解しないと成長はない
0120デフォルトの名無しさん
2015/05/31(日) 13:58:40.94ID:9ldLUKuRこれは二重盲検法によるしか他にない
0121デフォルトの名無しさん
2015/05/31(日) 14:04:55.73ID:OIN9Nn99書かなくていいんだにょ
そとならどこに書くのか聞いているのだにょ
0122デフォルトの名無しさん
2015/05/31(日) 14:09:01.85ID:OIN9Nn99エフェクティブC++にはインラインの最適化は
大抵のコンパイラはしないとかいてあるにょ
0123デフォルトの名無しさん
2015/05/31(日) 14:10:09.33ID:SZ/HavyKテンプレートなら書かなくていいと書いただろう
0124デフォルトの名無しさん
2015/05/31(日) 14:15:53.61ID:OIN9Nn99とエフェクチブに書いてあるにょ
0125デフォルトの名無しさん
2015/05/31(日) 14:29:41.03ID:brHWK6fJ君はさっきから誰と会話してるんだ
糖質なのか
0126デフォルトの名無しさん
2015/05/31(日) 21:30:56.61ID:aHKj8Hug目の前のコンパイラが「した」ら、全力で喚いても空疎な都市伝説だ
0127デフォルトの名無しさん
2015/05/31(日) 21:36:44.51ID:ywCtFlc+レジスターと同じ位置になりつつあるような。
0128デフォルトの名無しさん
2015/05/31(日) 23:08:10.91ID:/p4405A5(values)[0]で良いの?もっと誤解の余地の無い書き方があったりする?
0129デフォルトの名無しさん
2015/05/31(日) 23:17:35.16ID:3aA7gIkH0130デフォルトの名無しさん
2015/05/31(日) 23:18:26.31ID:UJODE2jh(values)[0]
values.at(0)
values.data()[0]
好きなのを選べ
0131デフォルトの名無しさん
2015/05/31(日) 23:19:25.64ID:UJODE2jhvalues[0] でどうぞ
0132デフォルトの名無しさん
2015/05/31(日) 23:19:50.14ID:p3LxTYA2int_vector values[2];
0133デフォルトの名無しさん
2015/05/31(日) 23:24:53.87ID:ywCtFlc+vec[0].size();
とかか。
0134デフォルトの名無しさん
2015/05/31(日) 23:31:18.69ID:/p4405A5ちょっvalues[0]だとvector.operator[](0)の意味になってしまうみたいなんですが@VS2010
0135デフォルトの名無しさん
2015/05/31(日) 23:32:19.25ID:/p4405A5誤: vector.operator[](0)
正: values.operator[](0)
0136デフォルトの名無しさん
2015/05/31(日) 23:33:45.15ID:/p4405A50137デフォルトの名無しさん
2015/05/31(日) 23:37:48.53ID:zG1uK5fDそんなことあり得ないから見直せ
0138デフォルトの名無しさん
2015/06/01(月) 05:30:13.06ID:tfESOXWQもしライブラリーがバージョンアップしてクライアントのコードを再コンパイルしてほしくないときとか
ファイルサイズを小さくしたいときには方法がなくなる
0139デフォルトの名無しさん
2015/06/01(月) 06:03:18.34ID:0D/a6Ypkライブラリのバージョンアップうんぬんの話はやめたほうがいい
デフォルト引数の問題もあるしな
せめてCOMにするとか
ファイルサイズを小さくはコンパイルオプションで指定できたりするだろ
0140デフォルトの名無しさん
2015/06/01(月) 06:16:57.51ID:2kRRaIOr0141デフォルトの名無しさん
2015/06/01(月) 06:20:58.83ID:6q6QceQb0142デフォルトの名無しさん
2015/06/01(月) 22:00:46.46ID:XaM+yT8Otemplate<typename T>
struct baka {
auto f();
};
template<typename T>
inline auto baka<T>::f() {
}
0143デフォルトの名無しさん
2015/06/01(月) 22:34:29.55ID:CikCK20O何でこう言う場合にstructをこんな風に使うのか違和感有るのだが、おみゃ〜らそう思わない?
structはstructらしく使ってやれよ。
0144デフォルトの名無しさん
2015/06/01(月) 22:47:39.87ID:Jkg/EUtZ0145デフォルトの名無しさん
2015/06/02(火) 20:08:16.05ID:3B1g3coLやっぱり能力では勝てないらしいな、お前チョンかよ
0146デフォルトの名無しさん
2015/06/02(火) 20:16:04.94ID:w3C6933l乳臭い教条主義者だ
0147デフォルトの名無しさん
2015/06/02(火) 20:27:39.68ID:L4AHebUZ0148デフォルトの名無しさん
2015/06/02(火) 21:44:09.21ID:/ZxOVfRFお前の考える「structらしさ」が普遍的なものだと
いつから錯覚していた?
0149デフォルトの名無しさん
2015/06/04(木) 06:15:53.73ID:wgsK5iWT0150デフォルトの名無しさん
2015/06/04(木) 07:20:55.19ID:YIi7L05j0151デフォルトの名無しさん
2015/06/04(木) 07:55:00.68ID:nEC7XTfr0152Office & Gamers ◆G144Hzgh2.0e
2015/06/04(木) 08:42:28.57ID:KXOiaqA70153デフォルトの名無しさん
2015/06/04(木) 20:42:48.48ID:0hMux0Wj異論は認める
0154デフォルトの名無しさん
2015/06/05(金) 08:18:45.87ID:+LcgUZZsうまくできません。
たばささんや微妙なチラシの裏さん以外で
詳しく説明しているサイトとかないでしょうか?
0155デフォルトの名無しさん
2015/06/05(金) 08:47:39.17ID:ALlGmVmR老婆心ながら、BCC55は古すぎる上にバグも放置してるので、
骨董趣味や道楽でないなら、vcかgccかclang使った方がいい
0156デフォルトの名無しさん
2015/06/05(金) 12:24:02.94ID:+LcgUZZsBCCとluaでぐぐってもなかなか出てこないと思ったら、
やはり、古すぎたんですね・・・
とりあえず、コンパイラを乗り換えてみます。
現状、趣味レベルでちまちまやっている程度なので、
フリー&DXlライブラリが使えるのが前提です。
素直にMicrosoft Visual C++ 2010 Expressに乗り換えた方がよいですか?
あと、やろうとしていることはC++でグラフィックなどの処理をして
外部ファイルにスクリプトを置こうとしています。
それで、luaを選んだのですが、
他のお勧め等ありますか?(扱いやすい、ネットに資料が多いなど)
よろしくお願いします。
0157デフォルトの名無しさん
2015/06/05(金) 12:45:54.56ID:WHej8Fm1> 素直にMicrosoft Visual C++ 2010 Expressに乗り換えた方がよいですか?
なんでわざわざ五年前のバージョンにする?
趣味なら 2013 Community にしとけば製品版と同等のものがただで使えるよ
0158デフォルトの名無しさん
2015/06/05(金) 13:21:53.41ID:s0fTOumnズブズブの素人なら手とり足とり情報が得られる2010もいいと思うけどそうでもなさそうだし
0159デフォルトの名無しさん
2015/06/05(金) 14:41:18.35ID:ALlGmVmR俺もVCの最新版で良いと思う
ただ話を聞く限りCocos-2djs(JavaScript)を
自分で拡張すれば解決しそうかなと思った
学習目的ならDXライブラリもいいと思うけど
0160デフォルトの名無しさん
2015/06/05(金) 17:07:02.56ID:XWMVeRSqアレはアレで結構便利だったりする
0161Office & Gamers ◆G144Hzgh2.0e
2015/06/05(金) 18:24:29.39ID:0rFWZSHLLUAならEGSL使ってみたら?w
0162デフォルトの名無しさん
2015/06/05(金) 22:53:06.52ID:zxpRKu14ただそれに慣れちゃうと、BCC 使えなくなった時に困っちゃうけどな
0163デフォルトの名無しさん
2015/06/06(土) 00:04:06.59ID:M49TyJvhおいQZ思い付きの知識で知ったかぶりしなくてもいいぞ糞コードオナニスト
お前ム板にはいらないから初心者すぎて
0164デフォルトの名無しさん
2015/06/06(土) 00:54:29.61ID:DXSt7rl7遅いし、ソース見たら、単に頭から舐めてってるだけw
だったらforで回してifで判定breakでよくね?
0165デフォルトの名無しさん
2015/06/06(土) 01:14:14.55ID:htxI56Umもっと凝った話考えなさい
0166デフォルトの名無しさん
2015/06/06(土) 01:49:05.91ID:DXSt7rl70167デフォルトの名無しさん
2015/06/06(土) 01:52:36.03ID:xG9JuOZVやーい釣られてやんの(´・ω・`)
0168デフォルトの名無しさん
2015/06/06(土) 02:03:24.83ID:htxI56Umかおまっかではずかしくてすれにかきこめないわー
0169デフォルトの名無しさん
2015/06/06(土) 02:49:49.32ID:I1GKmVH60170Office & Gamers ◆G144Hzgh2.0e
2015/06/06(土) 07:17:55.14ID:KNDA5L3m0171デフォルトの名無しさん
2015/06/06(土) 08:31:58.78ID:pxbafvNu誰だ、お前?
なんでもかんでも噛みつくんじゃねーよ、ボケ
0172デフォルトの名無しさん
2015/06/06(土) 11:41:34.00ID:M49TyJvh糞コードでまるわかりだから
0173デフォルトの名無しさん
2015/06/06(土) 14:02:39.15ID:BYjl+Dps0174デフォルトの名無しさん
2015/06/06(土) 14:04:43.55ID:DXSt7rl70175デフォルトの名無しさん
2015/06/06(土) 20:12:59.40ID:L6nmMZYK0176154
2015/06/06(土) 23:26:15.66ID:CA44w+IfMicrosoft Visual C++ 2010 Expressにしました。
しばらくいじくり倒してみるつもりです
ありがとうございました。
0177デフォルトの名無しさん
2015/06/07(日) 00:14:41.16ID:LQ5JyIyr2010を使う人をよく見かけるのは何故なんだぜ
それにCommunityで普通に日本語表示出来てるけどインスコに失敗してるんじゃね
0178デフォルトの名無しさん
2015/06/07(日) 00:51:36.39ID:BoulMLQ92013の日本語版をダウンロードするにはコツがいるからな
http://peace.2ch.net/test/read.cgi/tech/1423697825/471
0179デフォルトの名無しさん
2015/06/07(日) 01:23:43.86ID:hr3tQ2QJお前のアフォすぎる質問には誰も答えてやれない
0180デフォルトの名無しさん
2015/06/07(日) 02:41:33.01ID:84d1r1J4void inval()
{
for (char c; cin >> c; )
cout << "the value of '" << c << "' is" << int{c} << '\n';
}
というコードがありますint{c}はおかしいですよね?
関数スタイルキャストならint(c)のはずですが
本が間違っているんでしょうか?ビャーネ・ストロヴストルップが書いたのに残念
0181デフォルトの名無しさん
2015/06/07(日) 02:51:07.63ID:STg1TmP/人の事を残念とか言う前に基本的なこと勉強したら?
残念なのは自分自身だって分かるから
0182デフォルトの名無しさん
2015/06/07(日) 02:52:17.94ID:j9o61IWP0183デフォルトの名無しさん
2015/06/07(日) 03:03:00.45ID:tXAtulCB利用規約に不安があるとかかね
ttp://www.buildinsider.net/hub/insidersbreak/2014112101
個人的には msys2使えばいいや と思ってしまうけど
>>180
bracketed initializerなのでは? …と書こうとしたら速攻でレスついてたw
0184デフォルトの名無しさん
2015/06/07(日) 03:04:45.47ID:j9o61IWP0185デフォルトの名無しさん
2015/06/07(日) 03:23:54.25ID:hr3tQ2QJ0186デフォルトの名無しさん
2015/06/07(日) 03:33:18.57ID:BED/WPPF彼は単にC++の規格を定めただけ
別にC++を手足のように自由に操れるわけでないからな
0187デフォルトの名無しさん
2015/06/07(日) 03:44:46.53ID:84d1r1J40188デフォルトの名無しさん
2015/06/07(日) 06:05:57.06ID:KXsmmvIH所々紛れている。マジ迷惑
0189デフォルトの名無しさん
2015/06/07(日) 06:10:00.31ID:5YDX2Prx0190デフォルトの名無しさん
2015/06/07(日) 06:16:22.73ID:5YDX2Prx0191デフォルトの名無しさん
2015/06/07(日) 06:20:09.47ID:5YDX2Prx0192デフォルトの名無しさん
2015/06/07(日) 06:36:58.07ID:TeZl9gIM>bracketed initializer
そんなものはC++には無い
>ゼロ初期化
んなこたーない
>昔は構造体の初期化めんどいから ={0}
昔すぎるだろ規格策定前だぞ
0193デフォルトの名無しさん
2015/06/07(日) 12:24:40.56ID:khofDikv釣り針何個銜えてんだか…
0194デフォルトの名無しさん
2015/06/07(日) 12:26:58.95ID:p498mNnqその妄想を楽しむ変態のための本だよ。
いやなら読むな。
それとint{c}を妄想とかぬかしてるんなら死ねいっぺん。
0195デフォルトの名無しさん
2015/06/07(日) 12:40:13.95ID:STg1TmP/A a{};
は
A a = A();
と同じことの別表現でデフォルト初期化ってだけだろ、その結果PODはゼロ初期化される
0196デフォルトの名無しさん
2015/06/07(日) 13:15:56.44ID:hr3tQ2QJ0197デフォルトの名無しさん
2015/06/07(日) 13:20:25.85ID:T1M3nbRS全然同じじゃないぞ
それとクラスをPODにすり替えちゃダメ
0198デフォルトの名無しさん
2015/06/07(日) 13:24:34.81ID:STg1TmP/どう違うの?
それとクラスをPODにすり替って何言ってるのか分からない
0199デフォルトの名無しさん
2015/06/07(日) 13:30:14.82ID:khofDikv0200デフォルトの名無しさん
2015/06/07(日) 13:35:03.25ID:hr3tQ2QJ0201デフォルトの名無しさん
2015/06/07(日) 13:35:17.72ID:STg1TmP/書き方悪かったかも知れないけど俺が言ってるのはこれだけだよ
#include <iostream>
using namespace std;
struct AA
{
int v;
AA() : v(1) {}
};
struct A
{
int v1; // PODメンバ
AA v2; // 非PODメンバ
};
int main()
{
A a1; // AのPODメンバは初期化されない
A a2 = A(); // デフォルト初期化でAのPODメンバは0初期化される
A a3{}; // 上と同じ
cout << a1.v1 << endl;
cout << a2.v1 << endl;
cout << a3.v1 << endl;
}
0202デフォルトの名無しさん
2015/06/07(日) 13:54:37.28ID:5YDX2Prx0203デフォルトの名無しさん
2015/06/07(日) 13:57:10.66ID:5YDX2Prx知らなかった
0204デフォルトの名無しさん
2015/06/07(日) 14:04:14.45ID:CaaEdIwG下はコピーが行われるでしょ
http://ideone.com/mj5HNh
0205デフォルトの名無しさん
2015/06/07(日) 14:04:47.41ID:CaaEdIwG0206デフォルトの名無しさん
2015/06/07(日) 15:52:59.31ID:Co/z1hlCstructureという単語が一カ所残っているのは誤記ですか?
0207デフォルトの名無しさん
2015/06/07(日) 15:58:48.50ID:uZ5MlZ270208デフォルトの名無しさん
2015/06/07(日) 16:36:11.65ID:mQnOWg31もともとISO/IEC 14882:1998では「structで定義されたものは全て構造体」だった。
用語を不適切な定義にしてしまったので廃止して「POD」に一本化しただけ
0209デフォルトの名無しさん
2015/06/07(日) 17:18:24.59ID:22HQriIr鯖缶が上司にチクって、ボーナスの査定を下げられそうです。
どうしたらよいでしょうか?
0210デフォルトの名無しさん
2015/06/07(日) 17:22:54.94ID:FHoyYiwSなんだこれw
0211デフォルトの名無しさん
2015/06/07(日) 17:32:24.92ID:chj3jLUMなんじゃこりゃ w
ググってみたら、Tバックの進化形でIバック(c-string)って言うらしい
0212デフォルトの名無しさん
2015/06/07(日) 18:00:51.85ID:BED/WPPF使ったときねーよ
使い道が分からない
unionは素晴らしいアイデアだとは思うが、structってどんなとき使うのか?
0213デフォルトの名無しさん
2015/06/07(日) 18:04:49.20ID:uZ5MlZ27判断できないけど…それで合ってる?(´・ω・`)
0214デフォルトの名無しさん
2015/06/07(日) 18:07:24.34ID:BED/WPPFstructなんてpublic以外どうちがうのだ?
0215デフォルトの名無しさん
2015/06/07(日) 18:11:50.93ID:uZ5MlZ27つまり、脳内プログラマだね?(´・ω・`)
0216デフォルトの名無しさん
2015/06/07(日) 18:42:46.35ID:3axT0xFW0217デフォルトの名無しさん
2015/06/07(日) 18:43:15.04ID:n+8DumoWCと互換性を取りたい場合に必要。
と、簡易的な記述でファンクタ定義する時によく使う。
これは、全てpublicって事の、具体的な利点ね。
C++11以降なら、ラムダが使えるけど、まだまだ普及してるとは言いがたい。
0218デフォルトの名無しさん
2015/06/07(日) 19:32:54.69ID:BED/WPPF全くプログラミングをしたことがないです。
class Foo
{
//イロイロ
public:
//イロイロ
protected:
//イロイロ
};
と
structFoo
{
//イロイロ
protected:
//イロイロ
private:
//イロイロ
};
はどう違いますか?
0219デフォルトの名無しさん
2015/06/07(日) 19:45:15.16ID:khofDikv上=コンパイル可能/下=コンパイルエラー
0220デフォルトの名無しさん
2015/06/07(日) 20:26:47.44ID:BED/WPPF0221デフォルトの名無しさん
2015/06/07(日) 20:28:17.15ID:xCcw73lL0222デフォルトの名無しさん
2015/06/07(日) 21:01:04.77ID:STg1TmP/classにするのはバカというもの
0223デフォルトの名無しさん
2015/06/07(日) 21:05:02.96ID:mQnOWg31virtualデストラクターを持つクラスをstructで書かれたら白昼の殺意ですよ。
0224デフォルトの名無しさん
2015/06/07(日) 21:06:38.48ID:STg1TmP/0225デフォルトの名無しさん
2015/06/07(日) 21:08:35.68ID:o/S/phAPこれが広まったもんだからPimplイディオムなんか出てきやがった
0226デフォルトの名無しさん
2015/06/07(日) 21:14:20.03ID:BED/WPPF0227デフォルトの名無しさん
2015/06/07(日) 21:15:56.49ID:JMn1UBdA最初の書き込みで釣りだって分かるだろうに
0228デフォルトの名無しさん
2015/06/07(日) 21:32:09.95ID:pVeX9VDC>>213は別人
0229デフォルトの名無しさん
2015/06/07(日) 21:32:58.36ID:uZ5MlZ27こりゃ絶対にプログラミングのプの字もしてない、プログラマに憧れ
てるだけの中学二年生という確信に変わったよ?(´・ω・`)
0230デフォルトの名無しさん
2015/06/07(日) 21:35:48.47ID:QyduMdOGbulletでそんなのがあったなw
0231デフォルトの名無しさん
2015/06/07(日) 22:50:34.22ID:hr3tQ2QJム板から消えろよ
0232デフォルトの名無しさん
2015/06/08(月) 17:57:54.82ID:dWqRejTWC++もそろそろ贅肉を削ぎ落とす時期に来てると思う
0233デフォルトの名無しさん
2015/06/08(月) 18:46:36.39ID:tBnOztNz0234デフォルトの名無しさん
2015/06/08(月) 19:00:48.94ID:ZLZCLNE00235デフォルトの名無しさん
2015/06/08(月) 19:39:24.66ID:R+3hraPW一度失敗したテンプレートの様にならなければよいけど
0236デフォルトの名無しさん
2015/06/08(月) 19:40:21.78ID:6B1qdYYr0237デフォルトの名無しさん
2015/06/08(月) 19:43:23.01ID:+srQZVduみんな馬鹿にな〜れ☆
0238デフォルトの名無しさん
2015/06/08(月) 19:59:55.24ID:BYDNcOl50239デフォルトの名無しさん
2015/06/08(月) 21:58:54.13ID:fElrENSdQZだけ何故か効かなかった
0240デフォルトの名無しさん
2015/06/08(月) 22:04:05.18ID:M37yntq00241デフォルトの名無しさん
2015/06/09(火) 05:42:10.50ID:pKjzH8Oa贅肉落とし、俺もそう思う
ゼロオーバーヘッドに全く従っていない例外あたり大なた振るって欲しい
0242デフォルトの名無しさん
2015/06/09(火) 07:09:50.32ID:6L0GmvTVただ標準ライブラリの殆どがnoexceptでないから
嫌なら使うな状態なだけ
0243デフォルトの名無しさん
2015/06/09(火) 07:35:05.37ID:qEGt13BM0244デフォルトの名無しさん
2015/06/09(火) 08:18:39.00ID:3PdUfKat例外のオーバーヘッドって、何見て言ってんの?
実行時間?使用メモリ?プログラムサイズ?
まさか実測せずに言ってるんじゃないよね?
0245デフォルトの名無しさん
2015/06/09(火) 12:45:04.16ID:xfiXeUeQ0246デフォルトの名無しさん
2015/06/09(火) 19:56:02.44ID:kuSlMpf7機械語
0247デフォルトの名無しさん
2015/06/09(火) 22:13:49.03ID:8RlyjR440248247
2015/06/09(火) 22:14:42.44ID:8RlyjR440249デフォルトの名無しさん
2015/06/09(火) 22:25:29.00ID:zb9c9H/aif(...)
sort<ASC>(...);
else
sort<DSC>(...);
感じを見かけるけど、これって
sort((...)?ASC:DSC...);
じゃ駄目なの?
メリットが全くわからん。特に複数で開発してる場合
全員がModernC++Designを熟読してるとは限らないし。
0250デフォルトの名無しさん
2015/06/10(水) 01:39:20.08ID:12MV2dD5http://zakkas783.tumblr.com/post/3870295160/c
見たことは無いがsetjump()/longjump()と同じしくみで実装された軽量なやつがあるっぽい
0251デフォルトの名無しさん
2015/06/10(水) 01:51:10.50ID:+qvMu2kYぼかぁreverse_iteratorが好きだなあ(異端)
0252デフォルトの名無しさん
2015/06/10(水) 01:57:22.18ID:7znYU1gJ0253デフォルトの名無しさん
2015/06/10(水) 09:48:41.78ID:6q5iIrJO条件演算子使うと見にくいことが多いし
0254デフォルトの名無しさん
2015/06/10(水) 10:02:52.16ID:u4dkkrWyそこだけ切られてもだれにもわからんと思うけど、少なくとも
Modern〜の熟読が要るようなコードには思えない。
テンプレート引数によって大きくアルゴリズムが変わるような
ことがあるなら最適化しやすくなるというメリットはあるかもしれないし、
実測もせずにそういうつもりで書いてるだけの濫用かもしれない。
0255デフォルトの名無しさん
2015/06/10(水) 10:22:25.70ID:T2GCSAWw条件演算子の式にブレークポイントを仕掛けたいとき
いちいち逆アセンブリ見なきゃいけないから面倒臭い。
0256デフォルトの名無しさん
2015/06/10(水) 10:44:31.83ID:7znYU1gJ実測?
なにをいってるのかしらんw
0257デフォルトの名無しさん
2015/06/10(水) 10:47:31.17ID:+qvMu2kYことごとく三項演算子を排除するコードがたまにあって、すごく嫌い。
0258デフォルトの名無しさん
2015/06/10(水) 10:53:17.24ID:vGBRRQny0259デフォルトの名無しさん
2015/06/10(水) 11:23:04.53ID:7znYU1gJ{
if(ASC) sortAsc(...);
else if(DSC) sortDsc(...);
}
0260デフォルトの名無しさん
2015/06/10(水) 13:02:49.11ID:beTkHSe30261デフォルトの名無しさん
2015/06/10(水) 14:45:56.32ID:+qvMu2kY関数オブジェクトじゃなさそうだし。
0262デフォルトの名無しさん
2015/06/10(水) 19:16:56.43ID:TuDQefqeASCが型だと、いつから>>260は錯覚していた?
0263デフォルトの名無しさん
2015/06/10(水) 19:29:12.42ID:96RlC2BQ異なる箇所は特殊化してそれぞれ展開するのがテンプートの流儀。
sortの中で実行時の比較をしなくてよくなる。
0264デフォルトの名無しさん
2015/06/10(水) 19:45:14.51ID:tmzsh7HNauto fack(T t)
{
if(is_xxx<T>::value)
☆1;
else
☆2;
}
この場合☆1と☆2で関数を分けないとコンパイルが通らないケースが存在する
特殊化で分けておけばこの問題は起こらない
0265デフォルトの名無しさん
2015/06/10(水) 20:03:13.78ID:FbxdAClXオペレーター レスザン オーバーロード
"書きすさべ ちいさし手遣い"・・・だと・・・・!?
0266デフォルトの名無しさん
2015/06/10(水) 22:28:57.79ID:7znYU1gJけど、そのsortを使う側はいちいちif,elseしなきゃいけないじゃん
if(...)
sort<ASC>(...);
else
sort<DSC>(...);
0267デフォルトの名無しさん
2015/06/10(水) 22:37:33.43ID:a95Aoj+10268デフォルトの名無しさん
2015/06/10(水) 22:37:35.21ID:BkPVzAE70269デフォルトの名無しさん
2015/06/10(水) 22:49:09.81ID:ZEd69p52sjljの方が重いのだが。
0270デフォルトの名無しさん
2015/06/11(木) 00:43:43.04ID:bpCl5S990271デフォルトの名無しさん
2015/06/11(木) 00:48:10.10ID:q/LkR2I60272デフォルトの名無しさん
2015/06/11(木) 00:54:19.11ID:ESr81XRP0273デフォルトの名無しさん
2015/06/11(木) 01:37:29.82ID:DfiUpDPN質問の意図が良くわからないんだけど、そのif文も中に入れたソート関数を提供してくれってこと?
ラッパー作ればいいだけなんじゃ…
0274デフォルトの名無しさん
2015/06/11(木) 02:18:29.16ID:UJe8acGw0275デフォルトの名無しさん
2015/06/11(木) 02:39:00.33ID:+CTai5Iv0276デフォルトの名無しさん
2015/06/11(木) 03:52:03.01ID:daO6fC9uこの言語が高速でよかった
0277デフォルトの名無しさん
2015/06/11(木) 04:01:20.90ID:MySFlDEHもっと見るべきところがあるだろ
0278デフォルトの名無しさん
2015/06/11(木) 08:43:34.26ID:5ATPWi5/0279デフォルトの名無しさん
2015/06/11(木) 08:44:34.79ID:tPMat1Skしてないけど、すると何かいいことあるの?
オナニー?
0280デフォルトの名無しさん
2015/06/11(木) 08:51:56.46ID:KETbMg1Tsortのテンプレート引数ってイテレータの型だよね?
0281デフォルトの名無しさん
2015/06/11(木) 09:23:58.56ID:PuDMuD0l0282デフォルトの名無しさん
2015/06/11(木) 09:26:54.12ID:+CTai5Iv0283デフォルトの名無しさん
2015/06/11(木) 11:31:38.39ID:o2v80gK8何もおかしなことはない
0284デフォルトの名無しさん
2015/06/11(木) 13:49:32.58ID:q/LkR2I6std::sortとは誰も言っていないw
0285デフォルトの名無しさん
2015/06/11(木) 13:54:51.91ID:4gLlgTqt実行時の値が、使えないって?
コンパイル時に決定してることなんてある?
0286デフォルトの名無しさん
2015/06/11(木) 13:57:20.72ID:FmOUSr/Q0287デフォルトの名無しさん
2015/06/11(木) 14:09:28.92ID:IsG2Qw3q0288デフォルトの名無しさん
2015/06/11(木) 17:24:15.51ID:Ufbw3rnf前にTemplateMetaProgrammingスレでも同じこと言ってるのがいたけど、同一人物?
0289デフォルトの名無しさん
2015/06/11(木) 17:28:52.86ID:vXzw9Z8e0290デフォルトの名無しさん
2015/06/11(木) 17:29:20.80ID:atmX+Ip60291デフォルトの名無しさん
2015/06/11(木) 17:29:45.91ID:4Nwg+HdI0292デフォルトの名無しさん
2015/06/11(木) 17:34:19.30ID:q/LkR2I60293デフォルトの名無しさん
2015/06/11(木) 17:35:51.78ID:ZqtYY7Sn0294デフォルトの名無しさん
2015/06/11(木) 17:36:20.78ID:q/LkR2I60295デフォルトの名無しさん
2015/06/11(木) 17:40:20.70ID:Vua1nX6w0296デフォルトの名無しさん
2015/06/11(木) 19:00:53.60ID:daO6fC9u実装の実態を知っておくとコーディングに役立つこともある…かもしれない
0297デフォルトの名無しさん
2015/06/11(木) 19:23:10.18ID:IsG2Qw3q0298デフォルトの名無しさん
2015/06/11(木) 19:38:43.86ID:q/LkR2I6www
0299デフォルトの名無しさん
2015/06/11(木) 20:41:21.33ID:Y7axMzJ0assertが一切出てこないって何なん?
0300デフォルトの名無しさん
2015/06/11(木) 20:43:16.81ID:ESr81XRP0301デフォルトの名無しさん
2015/06/11(木) 21:57:11.83ID:PuDMuD0l地味に恥ずかしいレスだな
030210人に1人はカルトか外国人
2015/06/11(木) 22:00:45.73ID:nlOBgROl・沢山の人が偏った意見を一貫して支持する
偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法
・不利な質問をさせなくしたり、不利な質問には答えない、スルーする
誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法
偏った思想や考え方に染まっていたり、常識が通じない人間は、頭が悪いフリをしているカルト工作員の可能性が高い
靖国参拝、皇族、国旗国歌、神社神道を嫌うカルト
10人に一人はカルトか外国人
「ガスライティング」で検索を!
0303デフォルトの名無しさん
2015/06/11(木) 22:14:20.46ID:Toa4qraudoubleの変数はおよそ15桁くらい正しい(数値誤差が入らない)と思います。
四則演算をはじめとする各種演算に伴って数値誤差は増大するのでしょうか。
コンパイラによるとしたら、g++ 4.8.2ではどうでしょうか。
また結果をprintf()で出力する際に数値的に有効な桁をできるだけ多く欲しいのですが、どのようにフォーマットを指定するのが良いでしょうか。
double型の変数aについて
printf("%15lf", a);
としても6桁しか表示されませんでした。
0304デフォルトの名無しさん
2015/06/11(木) 22:31:35.70ID:iS0g8Kna日本語でおk
0305デフォルトの名無しさん
2015/06/11(木) 22:32:19.71ID:XgvKq4Ruある程度使ってる人が増えないと
Cudaみたいにある日突然仕様変わって
古いコード動かなくなることあるからなあ
0306デフォルトの名無しさん
2015/06/11(木) 22:38:46.50ID:ESr81XRP0307デフォルトの名無しさん
2015/06/11(木) 22:44:50.42ID:PuDMuD0l>四則演算をはじめとする各種演算に伴って数値誤差は増大するのでしょうか。
気をつけない限り増大する。
a.doubleで表現できないのがある(十進0.1が有名)
b.その仮数15桁以上の値の丸め誤差。
分数型を使うなどで回避可。
>6桁しか表示されませんでした。
科学的表記法が欲しいという意味なら%.15e
0308デフォルトの名無しさん
2015/06/11(木) 22:48:02.99ID:vb8D/rbx0309デフォルトの名無しさん
2015/06/11(木) 22:55:24.03ID:PuDMuD0l自分もよくわからないので説明しなかった
桁落ちは浮動小数点数で有効数字が減るというのがよくわからん
0310デフォルトの名無しさん
2015/06/11(木) 23:07:01.54ID:MySFlDEHありがとうございます。
桁落ちは回避の工夫をしてます。
が、他の要因で有効桁が15桁より下がる覚悟は一応持つことにします。
>科学的表記法が欲しいという意味なら
小数としての表示で良いのですが、有効な桁数をできるだけ多く表示したいということです。
とりあえず思考停止で10桁くらいは安全だと考えると、整数部と小数部の桁数の合計が10桁になるようにしたいのですが、そのフォーマット指定のやり方が分かりません。
例えば
printf("%.10lf", a);
は小数部を10桁表示するという意味ですよね?(私はこれを勘違いしているかもしれません。)
整数部と小数部がそれぞれ何桁か不明なときに整数部と小数部を合計10桁出力したいときはどうしたらよいのでしょうか。
0311303
2015/06/11(木) 23:07:58.89ID:MySFlDEHIDが変わった上に被りましたが303です。
0312デフォルトの名無しさん
2015/06/11(木) 23:19:03.99ID:o6JsBkeK普通の日本語に思えるがな。
>>305
プラットフォームによるんじゃね
0313デフォルトの名無しさん
2015/06/11(木) 23:42:21.05ID:phbL6DGJ詳しく教えてほしい
0314デフォルトの名無しさん
2015/06/12(金) 00:36:43.43ID:KLuO69bsis-aが成り立つなら継承
has-aなら委譲
has-aでもtemplate methodパターンを適用する必要があるならprotected継承なんかを使ったりする。
メモリレイアウトを一切変えずに、機能追加のみしたい場合には、一切仮想関数を使わずにpublic継承を使ったりする
0315デフォルトの名無しさん
2015/06/12(金) 02:33:05.48ID:mLuCQ1ezいちいち細かく移譲する機能を定義する必要があるが、参照先を変えることで移譲元は変え放題の移譲
どっちdo you like?
0316デフォルトの名無しさん
2015/06/12(金) 08:38:15.95ID:y2zTlRDt0317デフォルトの名無しさん
2015/06/12(金) 08:41:19.38ID:y2zTlRDt少しはprintf()のマニュアルページを読めよ。
そもそも%lfはその成り立ちから考えれば%fにするべきだ。
0318デフォルトの名無しさん
2015/06/12(金) 08:43:31.29ID:RrO0RO1b誤差論を勉強すべし。
もとデータの有効桁数以上計算しても、意味なし。
0319デフォルトの名無しさん
2015/06/12(金) 18:21:48.43ID:OWLZUxPt%lfはその成り立ちを考えればこそ、
最初%fにしてしまった誤りを1999年にようやく訂正できたと思うのだけれど
0320デフォルトの名無しさん
2015/06/12(金) 20:29:38.22ID:ju6p67Z1?
では、%lf が正解として、そのときに %f はどのような働きを持つ書式指定子になるのか?このとき %lf との違いは何?
0321デフォルトの名無しさん
2015/06/12(金) 21:47:41.39ID:KUZjLqlU何でこんなに多いんだ
0322デフォルトの名無しさん
2015/06/12(金) 21:49:35.99ID:TThNPGKa0323デフォルトの名無しさん
2015/06/12(金) 21:57:07.02ID:mLuCQ1ezマジで作り直しが必要だと思うんだが、ここまでくるともう無理かも
0324デフォルトの名無しさん
2015/06/12(金) 21:58:33.10ID:TThNPGKa0325デフォルトの名無しさん
2015/06/12(金) 22:01:31.50ID:e/45jWns0326デフォルトの名無しさん
2015/06/12(金) 23:16:10.78ID:ddIghUSgようわからんがprintf()の引数に書かれたfloatは勝手にdoubleに型変換されるから%fだけで済んだんだったはず
そのかわりscanf()の%fはfloat
0327デフォルトの名無しさん
2015/06/12(金) 23:22:53.69ID:4s8u5Pxcなどという設計をするはずがない
0328デフォルトの名無しさん
2015/06/13(土) 01:57:15.07ID:2SY64+lq0329デフォルトの名無しさん
2015/06/13(土) 02:07:22.47ID:xv1nvRDb0330デフォルトの名無しさん
2015/06/13(土) 02:20:43.19ID:ydZkeZWj0331デフォルトの名無しさん
2015/06/13(土) 02:23:21.99ID:xv1nvRDbこれ
0332デフォルトの名無しさん
2015/06/13(土) 02:32:52.89ID:ydZkeZWj0333デフォルトの名無しさん
2015/06/13(土) 04:37:45.77ID:UPwWPDEU0334デフォルトの名無しさん
2015/06/13(土) 04:39:52.79ID:MLTzsV590335デフォルトの名無しさん
2015/06/13(土) 08:34:21.77ID:DqWXtUjuいくらお前がバカでもこれはおかしいと気付けよ
という悪い見本
0336デフォルトの名無しさん
2015/06/13(土) 09:25:12.18ID:jqTzSEplそういう型を作る構想でもあったんじゃね
0337デフォルトの名無しさん
2015/06/13(土) 09:40:26.14ID:FQeTzdtaはずがないってわめいてもそうなってるんだからしょうがない
そもそも printf( ) のせいじゃないから、わめくならCの仕様に文句つけろよ
>>336
俺って最近影薄い?
... double
0338デフォルトの名無しさん
2015/06/13(土) 11:05:04.66ID:UaufLIamするのが漏れの中で一時期流行ったがすぐに廃れた
些細なクラスまでもことごとくstd::ostreamに依存してしまうのがスゲー嫌になった
人間はクラス固有のstringzingメソッドの追加とstd::string::c_str()で渡り合うくらいの所でやめておくべきだったと思うよ
0339338
2015/06/13(土) 11:07:21.37ID:UaufLIam誤: クラスのstringzing的なメソッド
正: クラスのシリアライズメソッド
0340338
2015/06/13(土) 11:10:02.77ID:UaufLIam誤: strigzing
正: stringizing
よく間違う、
0341デフォルトの名無しさん
2015/06/13(土) 13:12:21.92ID:ZPUmC8i9最初期のCに、実際あって、doubleの別名だった。
0342デフォルトの名無しさん
2015/06/13(土) 20:07:25.12ID:jKGoCo7LいまどきCとか,何かの罰ゲームだと思ってしまう
0343デフォルトの名無しさん
2015/06/13(土) 20:33:52.62ID:6grWS76kイテレーターがポインターだったら
++iteratorが使えないだろ
イテレーターに基底ポリモーフィズム使いたいときどうすんの
ただしくは
add(iterator)のようなインライン関数でラッピングするのがよいだろう
0344デフォルトの名無しさん
2015/06/13(土) 20:42:56.17ID:jKGoCo7L>イテレーターがポインターだったら++iteratorが使えないだろ
?
0345デフォルトの名無しさん
2015/06/13(土) 20:45:49.91ID:7Wz3Bgi+>++iteratorが使えないだろ
ちょっと何言ってるのか
kwsk
0346デフォルトの名無しさん
2015/06/13(土) 20:46:13.99ID:6grWS76kここまでいえばさすがにわかるでしょwww
0347デフォルトの名無しさん
2015/06/13(土) 20:46:43.91ID:jqTzSEpl↓この時点で、もう廃止されていたんだな
http://cm.bell-labs.co/who/dmr/cman.pdf
0348デフォルトの名無しさん
2015/06/13(土) 20:49:03.41ID:xv1nvRDb0349デフォルトの名無しさん
2015/06/13(土) 20:50:09.59ID:jqTzSEplいや、その説明で益々わからなくなった
iteratorに指されている実体に対して、
なぜ特定のメンバ関数operator++が呼び出せないのか、
そして呼び出せないことがなぜiteratorの欠陥なのか、
頭悪い俺らにもわかるようにかみ砕いて説明してくれ
0350デフォルトの名無しさん
2015/06/13(土) 20:51:30.21ID:ZJMFwp+Bオレオレ用語使わないでくれる?
0351デフォルトの名無しさん
2015/06/13(土) 20:58:02.47ID:6grWS76kbegin()の戻り値がイテレーターのポインターだった場合どうするのか
考えてみよう
猿でもわかると思うが
0352デフォルトの名無しさん
2015/06/13(土) 20:59:38.32ID:xv1nvRDbイテレーターのポインタじゃ意味が全く違うじゃねーか!
0353デフォルトの名無しさん
2015/06/13(土) 21:02:58.62ID:jKGoCo7L問題なく ++(*iterator) できているんだが
http://codepad.org/CsftRCf0
0354デフォルトの名無しさん
2015/06/13(土) 21:03:06.24ID:ZJMFwp+Bそんな現実にない仮定を持ち出されても困るんだが
普通にポインタの参照剥がしてイテレーター使えばいいんじゃないかな
0355デフォルトの名無しさん
2015/06/13(土) 21:07:54.58ID:7HvlRcHrイタレータ何て滅多に使わん
0356デフォルトの名無しさん
2015/06/13(土) 21:09:22.11ID:6grWS76k++(*iterator)をアルゴリズムの中でつかえば
++iteratorがアルゴリズムの中で使えなくなり
その逆も成り立つ
>>354
現実にありまくり
0357デフォルトの名無しさん
2015/06/13(土) 21:11:38.23ID:ZJMFwp+B例を出してくれ
少なくともC++標準ライブラリにあるコンテナは
イテレーターのポインタなんて返さないんだが
0358デフォルトの名無しさん
2015/06/13(土) 21:14:45.85ID:xv1nvRDb++pとしても何も問題ないし
++pと++(*p)は両立できるぞ
0359デフォルトの名無しさん
2015/06/13(土) 21:20:05.04ID:6grWS76k俺の書いたプログラムには出てくるのだから
その確率は高いだろ
>>358
f(c.begin())としたときc.begin()がポインターであるときと
そうではないときを比べてみよう
0360デフォルトの名無しさん
2015/06/13(土) 21:22:30.74ID:jKGoCo7L0361デフォルトの名無しさん
2015/06/13(土) 21:23:08.86ID:6grWS76k0362デフォルトの名無しさん
2015/06/13(土) 21:24:17.76ID:jKGoCo7L0363デフォルトの名無しさん
2015/06/13(土) 21:29:12.75ID:tUm8uX2Mderived d1[N];
を
do_thingy ( (base*)&d1[0], (base*)&d1[N])
したいということね。
…できないと何か問題あるんだっけ。。
0364デフォルトの名無しさん
2015/06/13(土) 21:31:02.27ID:ZJMFwp+B時間損した
0365デフォルトの名無しさん
2015/06/13(土) 21:33:17.96ID:xv1nvRDbテンプレートでいいんじゃね
イテレーターで解決しようとするから問題がややこしくなる
0366デフォルトの名無しさん
2015/06/13(土) 21:34:39.10ID:6grWS76kアルゴリズムの中でイテレーターを使うときに一番困るんだよな
0367デフォルトの名無しさん
2015/06/13(土) 21:54:57.65ID:UaufLIamていうかどういうシチュなのかいまいちわからん…
コンテナと切り離さずに使うイテレータならイテレータをそのまま関数に渡せばいいし
コンテナと切り離された、イテレータ全般というブツに対して何がしかをやりたいということなら、
そのような「非テンプレート」関数は論理的に存在し得ない希ガス…
(イテレータのメンバ関数(たとえばoperator++()とか)は異なるコンテナのイテレータ同士ではシンボルレベルで別の関数なのでビルド時に何を呼ぶのか決まらない)
だからイテレータへのポインタとかナンセンス
derivedなコンテナのbase、というのもlist風とかな特殊な状況でないと存在し得ない(baseとderivedで要素サイズが変わるため、
コンテナとポリモーフィズムはよほどトリッキーなことをしないと両立しないから、こっちの線で読んでも論理的にほぼ不可能なことをやろうとしている希ガス…
というわけでどういうコードを想定しているのやろうか…
0368デフォルトの名無しさん
2015/06/13(土) 22:07:58.55ID:ZJMFwp+Bトリッキーなこと考えちゃったんだろうね
0369デフォルトの名無しさん
2015/06/13(土) 22:09:14.00ID:UaufLIamstd::vector::iteratorあたりならちょっと賢いコンパイラならそれ自体ビルド結果がポインタと同等な希ガス…
つまり速度重視ならポインタと同等なイテレータを書くか、要素型のポインタを直接使えば良いのであって、
やっぱイテレータへのポインタとかナンセンスなんや
0370デフォルトの名無しさん
2015/06/13(土) 22:17:35.67ID:jqTzSEpl**は普通に使うよね
0371デフォルトの名無しさん
2015/06/13(土) 22:28:13.48ID:XtBiSGNi0372デフォルトの名無しさん
2015/06/13(土) 22:30:54.18ID:ndcd2KXDイテレータの問題じゃなくてそのコンテナの問題だけど
0373デフォルトの名無しさん
2015/06/13(土) 22:31:58.66ID:xv1nvRDb0374デフォルトの名無しさん
2015/06/13(土) 22:32:57.64ID:6grWS76k基底コンテナのポインターに代入された派生コンテナを考えてみよう
このとき基底コンテナのポインターからどのように派生コンテナのイテレーターをえるのか
あるアルゴリズムの引数として基底クラスのコンテナを渡しアルゴリズムの内部で
イテレーターを得てつかうとする
そのほかにもこの方法は有用な使い方がある例えばイテレーターとして
beginイテレーターとendイテレーターのペアをイテレータと考える
そしてhasNextとnextというおなじみのインライン関数をを自分で定義して使う
0375デフォルトの名無しさん
2015/06/13(土) 22:36:11.27ID:ZJMFwp+Bオレオレコンテナ作ってるようわぁ…
コードは地獄だろうな…
0376デフォルトの名無しさん
2015/06/13(土) 22:38:10.91ID:ndcd2KXD標準のは使い物にならんから
0377デフォルトの名無しさん
2015/06/13(土) 23:12:13.91ID:19wKs4Az作るのって難しいの?
0378デフォルトの名無しさん
2015/06/13(土) 23:13:51.68ID:kddE1Hn/0379デフォルトの名無しさん
2015/06/13(土) 23:14:02.53ID:UaufLIamよっしゃパパがんばって汎用コンテナの再発明しちゃうぞー←ワカラン…
0380デフォルトの名無しさん
2015/06/13(土) 23:46:22.48ID:jqTzSEpl0381デフォルトの名無しさん
2015/06/14(日) 00:17:28.37ID:ytfJcMgUカスタムアロケーターでは解決できないのかね
0382379
2015/06/14(日) 00:38:14.97ID:VB29lk6s分野によってはmalloc()の使用すら悪設計と看做される
シンプルな造りにすべきときは極限までシンプルに作るべき、だとは思う
0383デフォルトの名無しさん
2015/06/14(日) 01:02:17.11ID:NCWDIoFd0384デフォルトの名無しさん
2015/06/14(日) 01:11:43.37ID:AF4mjcpjシンプル過ぎることに輪をかけた悪
0385デフォルトの名無しさん
2015/06/14(日) 01:13:00.67ID:ocyd5wvLそう言う分野でC++はありなのか?
0386デフォルトの名無しさん
2015/06/14(日) 01:25:15.44ID:WgPnxzZM>分野によってはmalloc()の使用すら悪設計と看做される
プールからの割当ならカスタムアロケータで十分だろ
というか一般にnew実装でmalloc使ってる事多いのに意味不明
0387デフォルトの名無しさん
2015/06/14(日) 01:33:46.50ID:WgPnxzZM例外/rtti入ってるstlなぞ組み込みでは使わんぞ
メモリプールを使うなら上述の通り
stlで駄目な子はiostreamぐらいだろうに
0388379
2015/06/14(日) 02:13:56.77ID:VB29lk6sメモリはあらかじめ大きさを設計した固定長の配列を使うのですよ
全コードにそれを通底させれば(C++流では無いやり方でだが)メモリリークの悪夢からは完全におさらばできるし、
デバッガできわめて追いやすい(万が一現実にクラッシュしたとして、メモリダンプからでも簡単に追える
そんな感じで作るなら、アロケータ以外についてSTLに相乗りするのはコードが不透明になるだけでメリットがあんまり無い
malloc()が悪、とにかく動的メモリ確保全般悪、というのは少なくともニコニコ動画の初期のWebサービスを書いてたプログラマの話としてあった(彼らはC++で書いてた
ようわからんが宇宙機のプログラムなんかも原則動的メモリ確保禁止なんじゃね?
ハードエラーを起こしたメモリ領域を回避するプログラムを後からアップロードしたりした事例があるし…
0389デフォルトの名無しさん
2015/06/14(日) 02:23:26.51ID:GSBQ/QXQちなみにSTLにiostreamなんてものは無いぞ
0390デフォルトの名無しさん
2015/06/14(日) 02:24:34.46ID:onP+ujzn0391デフォルトの名無しさん
2015/06/14(日) 02:44:19.18ID:TW+i3CDs固定長の配列からメモリをやりくりしても返すの忘れたらメモリ足りなくて詰むがな
0392デフォルトの名無しさん
2015/06/14(日) 02:57:28.00ID:VB29lk6s返す必要は無いしやりくりすらしない。単に上書きするだけ〜
{ 書き込む主体 } × { 書き込み内容 } と{ 書き込み先アドレス(メモリ) }を1対1で紐付けるという発想の転換、
{ 書き込む主体 }すなわちスレッド(タスク)の数が固定ならこれで書ける
極限まで推し進めれば例外としてはキューだけが残るが、キューに入れたが出し忘れるとかはさすがにコードを見ればわかるのでは…
0393デフォルトの名無しさん
2015/06/14(日) 03:00:00.33ID:ntWSdT35返すのを忘れるなんてあり得ないくらいに単純に作るに決まってんだろ
想像しろ
グローバル変数g1,g2,g3が有ったとする
mainの中でこれらを駆使して演算するコードを書く
あとは変数をg[3]に書き直せば出来上がりだ
0394デフォルトの名無しさん
2015/06/14(日) 03:09:20.91ID:WgPnxzZM>メモリはあらかじめ大きさを設計した固定長の配列を使うのですよ
だからそれをプールからの割当という
>>389
確かにそこは語弊が合ったな
「標準ライブラリで駄目なのは」だ
0395デフォルトの名無しさん
2015/06/14(日) 03:10:21.80ID:TW+i3CDs結局配列の大きさ以上のことはできないのか
メモリケチケチな環境でしか使えんだろうな
>>393
それ3つを配列にしたところで何もうれしくないだろ
0396デフォルトの名無しさん
2015/06/14(日) 03:16:15.32ID:VB29lk6sグローバル変数int g_hoge[3][1000];と書くのはプールからの割当なのやろうか…
OSのプロセス起動メカニズムからするとプールからの割当なのかもしれんが、OSは十分デバッグ済み(バグ無し)と看做すなら今の話の筋ではないし、
そもそもOS無しというケースもあるし、(その場合、ブートストラップコードがMAPファイルに従って(つまりガチで固定アドレスの領域であるところの)BSSをゼロクリアする。
0397デフォルトの名無しさん
2015/06/14(日) 03:17:21.08ID:WgPnxzZMあのなあ…プールから割当する場合は、足りなくなったら一番古いのを開放するんだよ
固定長はそういうデータ構造でえしか使わない、というか使えない
ゲームなどの場合は速度的にプール使うが、確保回数減らすだけで固定長じゃない
組み込みと違ってシステムコールのコストを削る目的だからな
0398デフォルトの名無しさん
2015/06/14(日) 03:19:10.90ID:WgPnxzZMそこのどこに自作コンテナな要素があるのだ
つかそれもうC++じゃなくてCだろ
0399デフォルトの名無しさん
2015/06/14(日) 03:27:27.12ID:WgPnxzZMvolatile指定で特定アドレスにIO書き込むんだ!とかの話だったの?
てっきりコンテナの話だと思ってたんだが…
0400デフォルトの名無しさん
2015/06/14(日) 03:28:32.10ID:poWW0AcO0401デフォルトの名無しさん
2015/06/14(日) 04:26:41.70ID:WgPnxzZMまあもう良いか
0402デフォルトの名無しさん
2015/06/14(日) 05:04:41.91ID:VB29lk6sまあもう良いか
0403デフォルトの名無しさん
2015/06/14(日) 05:19:30.89ID:l9uYakksまあ、配列よく使うけど
0404デフォルトの名無しさん
2015/06/14(日) 08:36:30.36ID:xTZsKt+a遅い
デカイ
カスタムアロケータでは充分なカスタムができないし冗長
デバッグとリリースで極端な速度差がある
0405デフォルトの名無しさん
2015/06/14(日) 11:05:46.12ID:BYpp5lV7>デカイ
制約の強い状況で部品の自作は当たり前だと思うけどね。
市場に販売される車輪では要件を満たさないので車輪を自作することは、再発名とは言わない。
だが「標準のは使い物にならんから」と言うのは再発明の疑いが濃厚
0406デフォルトの名無しさん
2015/06/14(日) 12:22:03.44ID:NCWDIoFd型ごとにテンプレート展開されるからやたらデカくなるじゃん
あれをコンパクトにする手法とかイディオムってある?
0407デフォルトの名無しさん
2015/06/14(日) 12:29:48.84ID:WgPnxzZM・マルチスレッドなんてリッチなOSで配列直接割当とか意味不明
・そもそもキューは呼び出し側も書き込みする=まず破綻してる
・その上で競合どう解決すんの?
>極限まで推し進めれば例外としてはキューだけが残るが
>キューに入れたが出し忘れるとかはさすがにコードを見ればわかるのでは…
キューをコードだけ見て消費がわかるとか意味不明
明らかにプログラミングしたこと無いだろ
そんな奴がなんで人に喧嘩売れるんだか
本当理解不能
0408デフォルトの名無しさん
2015/06/14(日) 12:37:00.30ID:WgPnxzZM訂正
・そもそもキューは読み出し側も書き込みする
カーネル側のメモリは潤沢に使えると言うならまあ通るが
それだと元のシンプルさなんて全然無い上に
ユーザーランドのプログラムだけ低レベルとか相当に変な制限だ
という事で、マルチスレッドでcasも使えないqueueを
セマフォ+大量のスレッドスタック(タスク)退避領域など
結構な量の余分なメモリ領域無しにどう解決すんのか聞いてみたいね
0409デフォルトの名無しさん
2015/06/14(日) 12:45:04.25ID:WgPnxzZM別にqueue構造にcasが使えないわけじゃないからね
0410デフォルトの名無しさん
2015/06/14(日) 13:01:51.04ID:VB29lk6sスレッドごとの記憶をスレッドローカルにすればスレッドごとの競合は考えなくとも良いし、これは配列で実現できる
実は>396にて
int g_hoge[3][1000];
という2次元配列の例にしたのは、2つめの添え字をスレッド別にする、という想定があったから
(そこまで突っ込んで説明する段階で無かったからその場では説明しなかったが、2つめの添え字をスレッド番号にすれば良い
キューの読み書きは読む側と書く側で当然排他制御する
これはSTLのコンテナを使おうがなんだろうが、マルチスレッド想定では避けられないから漏れの主張とは独立だから漏れのへの批判としては筋違い
やっぱ>407の人のはいまいち発想の転換力が不足しとりますなあ(>392付近の流れあたりから思ってたけどね)…
0411デフォルトの名無しさん
2015/06/14(日) 13:07:22.92ID:WgPnxzZM>スレッドごとの記憶をスレッドローカルにすれば
>スレッドごとの競合は考えなくとも良いし、これは配列で実現できる
>キューの読み書きは読む側と書く側で当然排他制御する
>これはSTLのコンテナを使おうがなんだろうが、マルチスレッド想定では避けられないから漏れの主張とは独立だから漏れのへの批判としては筋違い
「配列で実現できる」は配列にする理由にならない
発想の転換力って何?君てんかん持ちなの?
0412デフォルトの名無しさん
2015/06/14(日) 13:09:18.21ID:+OSalyPVthread_localは使わなくていいの?
0413デフォルトの名無しさん
2015/06/14(日) 13:14:12.33ID:WgPnxzZMスレッドローカル(笑)まで面倒見てくれる所じゃ
そう言うプログラムじゃIO即値の処理すらインライン関数化してるし
並列処理ならデータ構造いるよね
固定配列いちいち使う理由ってマジで何?
この期に及んでコストとでも言うつもり?
0414デフォルトの名無しさん
2015/06/14(日) 13:15:32.85ID:VB29lk6s実現可能性については納得していただいたということでおk
(>410が通じないほどマルチスレッドに疎かったらどうしようかと思った;
>388以降の流れは実現可能性の議論のつもりなので…
>>412
少なくとも現行のx86やx64では特には不要。配列内のスレッドごとのアクセス領域の境界がキャッシュライン境界と一致してようがしまいが安全にスレッドローカルにできる、
(スレッドAのアクセスの巻き添えを食ってスレッドB用の領域がぶち壊れるという心配は無い
0415デフォルトの名無しさん
2015/06/14(日) 13:18:23.28ID:WgPnxzZMあのさ言い訳してる所悪いけど、
それ「そんな環境無い」って認めてるようなもんだよね
酒でも飲んで適当言って失敗したって一言言えばそれでいいのに
言い訳するせいでどんどん墓穴掘ってないか
0416デフォルトの名無しさん
2015/06/14(日) 13:18:58.39ID:VB29lk6sもっとも、スレッドごとのアクセス領域の境界がキャッシュライン境界と一致させたほうがキャッシュのREFILL回数が減るのでパフォーマンスが上がるから、
両境界は合わせた方がモアベターなのは確か
0417デフォルトの名無しさん
2015/06/14(日) 13:20:23.36ID:+OSalyPVthread_localはスレッド変数とでも言うべきもので、使い勝手を考えた物だと思うんだけど
0418デフォルトの名無しさん
2015/06/14(日) 13:20:43.30ID:VB29lk6s論点後出しで食い下がりモードですな…
0419デフォルトの名無しさん
2015/06/14(日) 13:24:43.68ID:WgPnxzZMキャッシュミスの話とかもう意味不明すぎるだろ…
だから何が目的で固定にするんだよ
知ってる単語並べてるだけじゃないか
0420デフォルトの名無しさん
2015/06/14(日) 13:25:23.67ID:WgPnxzZMいや本当それまさにブーメランってやつだから
痛々しすぎるよ君
0421デフォルトの名無しさん
2015/06/14(日) 13:26:33.03ID:+OSalyPV本当にプログラムの話をしているのではなく、「自分を守る」ためだけに我論を突き通そうとする奴
誰もそんな奴受け入れないから
壁に向かってしゃべってろって感じ
0422デフォルトの名無しさん
2015/06/14(日) 13:34:59.45ID:RXXsbARc三行以下で書いてくれ
0423デフォルトの名無しさん
2015/06/14(日) 13:41:04.32ID:VB29lk6sそれはひょっとして人格に対する批判であって、内容に対する批判になっていないのでは…
かつ、その批判にしたって成立しないのでは…
1. コストの話を最初に持ち出したのは>>376であって漏れジャナイ
(その後実行時コスト偏重に話を誘導したのは確かに漏れではあるがこれは話の発展ということで容赦願いたいね…)
2. thread_localでできて配列ではできない例がない限り、>>410に対しては>>414で完全な答えになってると思うが
使い勝手のことなんて>>410に書いてないし、漏れは>>388以降実現可能性にフォーカスを当てているつもり
>>419
キャッシュのrefillはマルチコアCPUで一般にキャッシュ不整合を起こすのですよ
(するとスレッドAの書き込みでスレッドBの領域が打ち壊れる危険性が生じる
インテルの現行のはハードウェアで全コア安全にrefillしてくれるから安全、というだけ
マルチコアまで話が発展してなかったから脱線だったかもしらんが、内容そのものについては批判される言われはない希ガス
0424デフォルトの名無しさん
2015/06/14(日) 13:42:19.80ID:+OSalyPV内容を批判するとすぐに屁理屈で返してきて一貫性がないってのを批判してるんですよ
0426デフォルトの名無しさん
2015/06/14(日) 13:46:20.80ID:l9uYakks0428デフォルトの名無しさん
2015/06/14(日) 13:48:15.47ID:+OSalyPVIDであぼ〜んしとくから
0429デフォルトの名無しさん
2015/06/14(日) 13:52:04.70ID:WgPnxzZM君が言いたいのは元々malloc不要論だろうに
なぜか飛躍して、配列固定で自分で話進めて
それじゃ何もできないと知ってOS側でスレッド管理、排他処理から始まって
ついにスレッドローカル(普通は動的割当)の導入まで来たもんだ
君の言う実現可能性って「固定配列触れば実現」って程度なの、わかるかな?
0430429
2015/06/14(日) 14:01:23.69ID:VB29lk6s>君が言いたいのは元々malloc不要論だろうに
おkその通り
>なぜか飛躍して、配列固定で自分で話進めて
おk、まあこれもそう
>それじゃ何もできないと知って
どこにそんなレスが…?固定配列で実現できる、というスタンスは一貫してるし説明もしたし、
>OS側でスレッド管理、排他処理から始まって
OS側でスレッド管理というのは最初からの想定として良い(漏れ(ら)はそこのメカニズムまで変える話はしていない
排他制御については>>407が言い出したことだが、これも同様で、漏れ(ら)はそこのメカニズムまで変える話はしていない
>ついにスレッドローカル(普通は動的割当)の導入まで来たもんだ
スレッドローカルな記憶を配列で静的割当でやっても可能ということは示したし、(つまりスレッドローカル記憶と、割当メカニズムは独立の話
普通はどうするか、というのは>>388以降の実現可能性の議論とはあんま関係無い感じなのでは…
0431デフォルトの名無しさん
2015/06/14(日) 14:01:48.15ID:yKIIahzlスレッドローカルストレージは
作るとき便利だけどデバッグしにくい
0432デフォルトの名無しさん
2015/06/14(日) 14:19:28.79ID:WgPnxzZM>排他制御については>>407が言い出したことだが、
>OS側でスレッド管理というのは最初からの想定として良い(漏れ(ら)はそこのメカニズムまで変える話はしていない
スレッドはまあいいよ、前提だから
>排他制御については>>407が言い出したことだが、これも同様で、漏れ(ら)はそこのメカニズムまで変える話はしていない
いやその言い訳は無理でしょ、君がキュー可能と言い出したんだし
というかOS側セマフォ使うなんて完全にリソースの動的割り当てだし
スレッドローカルもこちらからは動的、カーネル側が静的実装かは関係ないよ
自分で実装したらただのグローバル
取り繕っても、話を進める度に不利な状況を自分で作り出してるんだよ
いい加減大した意味がないと認めたら?
0433デフォルトの名無しさん
2015/06/14(日) 15:36:41.52ID:VB29lk6s>君がキュー可能と言い出したんだし
なんか誤解があるようだが、キューというのは単なるFIFO、すまりSTLでいうところのstd::queueであって、
漏れの>>388以降の議論とは独立に(もともと存在する)メカニズム。
FIFOを固定配列でも実現可能なのは自明。ただ>>391の言うとおり、メモリをやりくりする必要性があり、リークし得るというのは当てはまるから、
>>392でリークを起こす危険性に言及し、回答もした
>というかOS側セマフォ使うなんて完全にリソースの動的割り当てだし
最初から言ってるのはアプリ側の動的メモリ確保の排除であってOSの中を変えるとは言ってないし、
>>396で
>OSのプロセス起動メカニズムからするとプールからの割当なのかもしれんが、OSは十分デバッグ済み(バグ無し)と看做すなら今の話の筋ではないし、
という前提を表明しているから、いまさら「OSの内部で動的確保している(かもしれない)から藻前の論理は成立しない」というのは
食って掛かってる以外の何者でも無いって言うか、
話が追えていない人に墓穴の存在を言われてもなあ…
0434デフォルトの名無しさん
2015/06/14(日) 15:46:46.05ID:VB29lk6s>というかOS側セマフォ使うなんて完全にリソースの動的割り当てだし
>スレッドローカルもこちらからは動的、カーネル側が静的実装かは関係ないよ
>自分で実装したらただのグローバル
これは正直意味わからんkwsk、
>自分で実装したらただのグローバル
これはその通り。だが,、スレッド番号を配列の添え字にするという>>410のやり方で、
スレッドローカルな記憶として機能を果たす(実現可能ではある)ことは>>411には合意いただいたはずだが
つまりグローバルかどうかはあんま論点じゃないっていうか、
0435デフォルトの名無しさん
2015/06/14(日) 16:06:11.74ID:WgPnxzZM>ただ>>391の言うとおり、メモリをやりくりする必要性があり、リークし得るというのは当てはまるから、
>>>392でリークを起こす危険性に言及し、回答もした
いやまさか
>リークを起こす危険性に言及し、回答もした
=バグ無くなる云々などの元の提起が破綻してる事を認めてる
とは思わなかったぞ…それで何でまだ実現可能って主張してるの?
そもそも普通のキュー認めたら使用領域が動的に上下してる時点で
動的データ構造使ってるし、元のコンテナ使う話に対して全く反論できてない
これはもういちいち説明しなくていいよね?
俺が予想してたのは、チャンネル待ってデータ受け渡しとか
代替機構の反論だったんだけどなあ…
>という前提を表明しているから、いまさら「OSの内部で動的確保している(かもしれない)から藻前の論理は成立しない」というのは
そんな話はしていないよ
他の動的なリソースの取得開放はなぜ問題にしないと言ってるだけで
0436デフォルトの名無しさん
2015/06/14(日) 16:16:46.65ID:WgPnxzZM>スレッドローカルな記憶として機能を果たす(実現可能ではある)ことは>>411には合意いただいたはずだが
>つまりグローバルかどうかはあんま論点じゃないっていうか、
いやいや、スレッドローカルと言った時点で、OS実装からの改善なんでしょ?
コストを気にするような話もしてたが、そんなオーバーヘッド気にするなら、
最初からコンテキストスイッチによるキャッシュミス自体抑制する
アドレスだけが重要で、静的な固定配列は無関係
それもわかってるというなら、本当何が言いたいのか意味不明だよ君は
いい加減固定配列の有用性主張する意味ないと認めろって
0437デフォルトの名無しさん
2015/06/14(日) 16:19:05.08ID:WgPnxzZM0438デフォルトの名無しさん
2015/06/14(日) 16:52:50.71ID:1gH69gu/0439デフォルトの名無しさん
2015/06/14(日) 19:58:01.47ID:MKNDd+A1あちこちにライブラリ上がってるけど
0440デフォルトの名無しさん
2015/06/14(日) 19:58:40.56ID:b318KeG+0441デフォルトの名無しさん
2015/06/14(日) 20:04:07.48ID:MKNDd+A1もっともマルチスレッドのデザパタにはThread Poolパターンってのがあるから
それを見ればいくらでも知識があれば作れるけどな
0442デフォルトの名無しさん
2015/06/14(日) 20:05:33.70ID:MKNDd+A1Worker Threadパターンだった
ま、同じ事っすね
0443デフォルトの名無しさん
2015/06/14(日) 21:57:10.98ID:HbVleRJY>>382 の辺りだろ
malloc( ) 使わない理由はリークとかじゃなくて実行時間が読めないことが主な理由だけどね
0444デフォルトの名無しさん
2015/06/14(日) 22:09:14.06ID:Zy4rSU8xscanfに渡すのは変数へのポインタ
printfに渡すのは値
値を渡す時にfloatはdoubleに変換されて渡されるというのがCの仕様
0445デフォルトの名無しさん
2015/06/14(日) 22:11:38.53ID:W5WL6w7T0446デフォルトの名無しさん
2015/06/14(日) 23:00:23.99ID:1AQPF2fE0447デフォルトの名無しさん
2015/06/14(日) 23:09:40.56ID:HbVleRJYて言うか、プロトタイプ宣言がない時な
0448デフォルトの名無しさん
2015/06/14(日) 23:28:37.74ID:T5YGuTqy可変引数渡しによってdoubleでしか受け取れないprintfは
%lfで書いときゃ問題ない
0449デフォルトの名無しさん
2015/06/14(日) 23:35:17.91ID:W5WL6w7TC89 のライブラリは %lf をみて発狂しないの?
0450デフォルトの名無しさん
2015/06/15(月) 00:33:04.73ID:YsuCJToF今はfloatはfloatのままだよ。
昔はfloatの演算器がなかったからdoubleに変換する必要があった。
0451デフォルトの名無しさん
2015/06/15(月) 01:15:33.89ID:5Knayh64んなこたーない。可変長引数に与えた float は double に変換される。今も昔も。
0452デフォルトの名無しさん
2015/06/15(月) 05:55:49.68ID:J0LSdIE5変えるにはきちんと改訂手続きを踏まないとね
0453デフォルトの名無しさん
2015/06/15(月) 07:48:43.11ID:Hdxb2Sdn既存の資産が膨大だから混乱を避けるため変わらないんだ
改訂手続きなんてくそ食らえ改訂手続き自体を消してやる
0454デフォルトの名無しさん
2015/06/15(月) 08:13:48.18ID:TVVjQqmk手続きなんて要らないよ
0455デフォルトの名無しさん
2015/06/15(月) 08:45:59.09ID:eyGVuwU6関数内部で自動変数にランバダ式を代入するのは
両方とも同じ条件でインライン化されて速度かわりませんよね
0456デフォルトの名無しさん
2015/06/15(月) 09:12:48.00ID:VOtJpgLS0457デフォルトの名無しさん
2015/06/15(月) 10:52:03.97ID:eyGVuwU6wikipediaにかいてあるし
0458デフォルトの名無しさん
2015/06/15(月) 10:58:31.19ID:eyGVuwU6template<typename T>auto a(T f){return f();}
auto b(){auto f=[](){1+1;};return f();}
int main() {
a([](){return 1+1;});
b();
return 0;
}
0459デフォルトの名無しさん
2015/06/15(月) 11:19:49.74ID:x90+VGunそれテンプレートじゃん
馬鹿なの?
0460デフォルトの名無しさん
2015/06/15(月) 11:42:09.76ID:x90+VGunauto a(std::function<void(void)> f)で-O3でも展開無し(当たり前)
0461デフォルトの名無しさん
2015/06/15(月) 11:53:05.26ID:eyGVuwU6ありがとうございました
0462デフォルトの名無しさん
2015/06/15(月) 11:53:49.36ID:x90+VGun0463デフォルトの名無しさん
2015/06/15(月) 18:54:20.93ID:FZwBA5EA0464デフォルトの名無しさん
2015/06/15(月) 21:38:41.18ID:H6WfKB6i0465デフォルトの名無しさん
2015/06/15(月) 22:02:45.73ID:BrXxCZG00466デフォルトの名無しさん
2015/06/15(月) 22:06:06.19ID:E5lvOcDM関数テンプレートの話してるに決まってるだろ
インライン展開は保証されないが期待はできる
std::functionみたいな特殊なもの持ち出して展開されないとか無いわ
0467デフォルトの名無しさん
2015/06/15(月) 22:49:21.92ID:x90+VGun無茶言うなw
お前の無様すぎる言い訳のが無いわw
0468デフォルトの名無しさん
2015/06/15(月) 22:52:27.40ID:H6WfKB6i0469デフォルトの名無しさん
2015/06/15(月) 23:01:09.17ID:x90+VGun0470デフォルトの名無しさん
2015/06/15(月) 23:04:10.15ID:DssR2sqn同じ?
0471デフォルトの名無しさん
2015/06/15(月) 23:15:22.43ID:x90+VGun「関数の引数」って一般化した物を提示してるのに
関数テンプレート出してるから馬鹿で間違いないだろ
0472デフォルトの名無しさん
2015/06/15(月) 23:25:33.75ID:5Knayh64それだけのことなのになんでどっちが馬鹿とか言い出すのかね。
0473デフォルトの名無しさん
2015/06/15(月) 23:27:34.69ID:x90+VGun僕ちゃんの周りではラムダは関数テンプレートしか使わないんだぞ!
お前の浅はかさなんて知らねえからな?
ラムダは関数ポインタ扱いで使えるし、特殊でも何でも無い
まだ対応微妙な14以降のコード出す方がよっぽど特殊だろ
とっととくたばれよ
0474デフォルトの名無しさん
2015/06/16(火) 00:23:25.86ID:7c92TlFO0475デフォルトの名無しさん
2015/06/16(火) 00:47:25.15ID:QVJ00m+Dローカル変数の値をキャプチャしたラムダ式をグローバル変数に代入して他の関数で使う、とか言う場合を考えると
ラムダ式がどういうコードになるのが正解かわからん…
本来キャプチャされるローカル変数の値が変わる度に異なる関数が次々生まれるのがラムダ式なイメージ
0476デフォルトの名無しさん
2015/06/16(火) 00:54:17.06ID:QVJ00m+Dstruct lambda {
int a, b;
lambda(int a_, int b_) : a(a_), b(b_) { }
int operator(int x, int y) { return a * x + b * y }
};
が、
lambda λ_1(1, 2);
lambda λ_1(3, 4);
で
lambda g_λ = λ_1;
int z = g_λ(5, 6);
みたいな?
0477デフォルトの名無しさん
2015/06/16(火) 00:55:00.62ID:L5TA7aG8ラムダは関数オブジェクトの糖衣構文なんだから
自分で関数オブジェクトを作ったことがあるならラムダがどんな構造になるかなんてすぐ分かる
0478デフォルトの名無しさん
2015/06/16(火) 04:39:28.00ID:2r+H5OFU>int operator(int x, int y) { return a * x + b * y }
const抜けてるぞ。
int operator(int x, int y) const {…}
0479デフォルトの名無しさん
2015/06/16(火) 04:51:06.36ID:lLEFDpN40480デフォルトの名無しさん
2015/06/16(火) 05:50:42.55ID:mYK5pDR30481デフォルトの名無しさん
2015/06/17(水) 00:13:32.64ID:gu9cN2gV密度は↓このくらいで
http://mixi-inc.github.io/AndroidTraining/appendix/A.02.basic-java.html
0482デフォルトの名無しさん
2015/06/17(水) 00:37:20.89ID:vkecuc2nhttps://ezoeryou.github.io/cpp-book/C++11-Syntax-and-Feature.xhtml
0483デフォルトの名無しさん
2015/06/17(水) 00:55:30.89ID:gu9cN2gVthx
0484デフォルトの名無しさん
2015/06/17(水) 01:20:25.67ID:0PWcUq1eclass Foo{
//省略
};
ってどのように使うのでしょうか?
0485デフォルトの名無しさん
2015/06/17(水) 01:21:33.18ID:RA9bcg/G0486デフォルトの名無しさん
2015/06/18(木) 17:43:04.52ID:DV39n0l/using namespace std;
template<typename T>
struct X{
auto f(){return 1;};
};
template<>
auto X<float>::f(){return 2;}
int main() {
X<int> x;
X<float> y;
cout<<x.f()<<y.f()<<endl;
return 0;
}
こちらのコードではクラステンプレートXを特殊化しているのに
なぜfはメンバー関数テンプレートと呼ばれるのですか?
クラステンプレートの特殊化と何が違うのですか?
0487デフォルトの名無しさん
2015/06/18(木) 18:26:20.02ID:NvI2h5CK誰がそう呼んでいるのか知らないけどfはテンプレートではない
何故呼ばれるのかと言ったら、ソイツが無知だからじゃね
0488デフォルトの名無しさん
2015/06/18(木) 18:52:32.75ID:DV39n0l/長い名前だけど使っている人いるんですかね
0489デフォルトの名無しさん
2015/06/18(木) 19:16:02.50ID:sdOCle5m0490デフォルトの名無しさん
2015/06/18(木) 21:24:54.26ID:nMAYQ0om特殊化でのautoの使い方が気になったので調べたが問題ないようだ
0491デフォルトの名無しさん
2015/06/19(金) 01:37:40.17ID:1zCNvxAR超絶影薄かったのに
staticさんが嫉妬しそうw
0492デフォルトの名無しさん
2015/06/19(金) 01:39:08.72ID:KyhneXaM0493デフォルトの名無しさん
2015/06/19(金) 01:58:10.24ID:ptPL9g7Sこんな良い感じの予約語なかなか後付けできないじゃん。
0494デフォルトの名無しさん
2015/06/19(金) 02:07:19.61ID:bC41ipaW0495デフォルトの名無しさん
2015/06/19(金) 12:36:33.51ID:NSNd0Gwmやりたいことはこんな感じです
class A {
public:
A(const B& b) { inst = b };
const B& inst;
};
0496デフォルトの名無しさん
2015/06/19(金) 12:39:45.85ID:KyhneXaMclass A {
public:
A(const B& b):inst(b) { }
const B& inst;
};
0497デフォルトの名無しさん
2015/06/19(金) 13:25:23.71ID:wLB8DELV0498デフォルトの名無しさん
2015/06/19(金) 13:48:14.08ID:e+GzY/Ucconstで何か不満が?
0499デフォルトの名無しさん
2015/06/19(金) 20:22:03.29ID:9HLt/WoYデフォで暗黙const
明示的にmutable
0500デフォルトの名無しさん
2015/06/20(土) 00:09:36.13ID:gzoCELj1つかつかったときねー
0501デフォルトの名無しさん
2015/06/20(土) 00:25:42.13ID:aEgncsrl凄まじいまでの把握能力とそれを駆使できる頭があるか、痛い目にあったことがないかだな。
0502デフォルトの名無しさん
2015/06/20(土) 00:28:33.87ID:qQ/qlsDiむしろどこに使うんだ
0503デフォルトの名無しさん
2015/06/20(土) 00:32:53.37ID:fYXXUti6定数は#defineつかわずに、static constにしたりとか
0504デフォルトの名無しさん
2015/06/20(土) 00:35:38.93ID:tDc6RR320505デフォルトの名無しさん
2015/06/20(土) 00:36:27.79ID:T5Odsm1P0506デフォルトの名無しさん
2015/06/20(土) 00:37:51.32ID:qQ/qlsDi全部constなしにしたらよくね?
あと「読みとり専用」「スレッドセーフ」と紛らわしいからconstを定数の意味で使うなよ
constexprを使うべきじゃないの
0507デフォルトの名無しさん
2015/06/20(土) 00:41:28.33ID:aEgncsrlconstないC++とか黒魔術どころか禁術になるとおもうわ……
0508デフォルトの名無しさん
2015/06/20(土) 00:45:27.45ID:+RNOOPsgおまえのアタマだけでやってくれ
0509デフォルトの名無しさん
2015/06/20(土) 01:39:28.20ID:pT8rjVDV// コイツを定数と思って使ってる奴は早くいなくなってほしい
0510デフォルトの名無しさん
2015/06/20(土) 01:40:56.32ID:ne/bSAAV0511デフォルトの名無しさん
2015/06/20(土) 01:46:41.44ID:T5Odsm1P0512デフォルトの名無しさん
2015/06/20(土) 01:48:07.35ID:4UsBBAlQ0513デフォルトの名無しさん
2015/06/20(土) 01:54:00.15ID:pT8rjVDV0514デフォルトの名無しさん
2015/06/20(土) 02:04:28.26ID:+RNOOPsg君のような息子のサイズにピッタリ一致させるためさ
0515デフォルトの名無しさん
2015/06/20(土) 03:12:00.09ID:bt3Cwyj8っていうのは確かに思わなくはない
0516デフォルトの名無しさん
2015/06/20(土) 05:42:25.23ID:AvDeDmf20517デフォルトの名無しさん
2015/06/20(土) 05:50:36.50ID:ne/bSAAV0518デフォルトの名無しさん
2015/06/20(土) 05:57:59.45ID:plt3dVUx0519デフォルトの名無しさん
2015/06/20(土) 07:36:03.84ID:YLktWXtlC++にスレッドセーフを示すキーワードなんて無いのに何と紛らわしいんだ?
>>518
二つ上って >>516 か?それだけ使ってるって事じゃないのか。
使いまくるからもっと指定しやすい形に出来ないか(privateとかみたいにここからここまでconstみたいな?)というポジティブな意見に見えるわ
0520デフォルトの名無しさん
2015/06/20(土) 07:52:56.69ID:ZerbeNuGshort型を使ったソースを直すのが面倒な時にそのまま使えて便利だから
0521デフォルトの名無しさん
2015/06/20(土) 09:10:54.91ID:IRI2lmd1関数の引数宣言ではconst付けろ。そうしないとconst変数をその関数に渡せないじゃん。
←最初はこう思う
しばらくすると static const や constexpr 以外のconstに存在意義を見出せなくなるかも。
0522デフォルトの名無しさん
2015/06/20(土) 09:15:17.90ID:ne/bSAAVおまえは一体何を言ってるんだ?
0523デフォルトの名無しさん
2015/06/20(土) 09:21:52.31ID:PKKtbZWyvoid funcB(const type& arg); // const
const type inst;
funcB(inst); // OK
funcA(inst); // error
0524デフォルトの名無しさん
2015/06/20(土) 09:22:58.54ID:En0LaAzsC++の標準ライブラリはconstを単なる不変でなく
スレッドセーフの意で使っているのは有名な話。
未だに03しか使ってないんだったら知らんが
0525デフォルトの名無しさん
2015/06/20(土) 09:24:52.01ID:IRI2lmd1なにか理解できない点でも?
0526デフォルトの名無しさん
2015/06/20(土) 09:27:43.34ID:ne/bSAAV0527デフォルトの名無しさん
2015/06/20(土) 09:39:48.30ID:IRI2lmd1なるほどなるほど。
0528デフォルトの名無しさん
2015/06/20(土) 09:42:22.29ID:ne/bSAAV言い訳はみっともないよ
0529デフォルトの名無しさん
2015/06/20(土) 09:48:36.36ID:IRI2lmd1C++の技術的におもしろい話題ができないやつは来なくていいよ。
0530デフォルトの名無しさん
2015/06/20(土) 10:37:38.93ID:HjWjZvmN不変の関数呼び出し=そのオブジェクトに対する読み込み操作 だけ行うのであればスレッドセーフであるというのはSGIの時代のSTLから変わらんよ
0531デフォルトの名無しさん
2015/06/20(土) 11:03:18.64ID:TpIghoYwだからC++11でそうではなくなっているのだが。
0532デフォルトの名無しさん
2015/06/20(土) 11:09:08.70ID:TpIghoYwこの解釈については排他制御が必要になったと
ハーブサッターやスコットメイヤーがふれ回っている。
0533デフォルトの名無しさん
2015/06/20(土) 11:23:21.95ID:IRI2lmd10534デフォルトの名無しさん
2015/06/20(土) 11:35:43.67ID:holBTYBG{
std::vector<int> c(a);
std::thread d([b](){ ++b; });
for(int i = 0; i < a; ++i) c[i] = 0;
d.join();
}
0535デフォルトの名無しさん
2015/06/20(土) 11:35:43.92ID:pABxzJBl参照じゃなきゃという前提がおかしい
0536デフォルトの名無しさん
2015/06/20(土) 11:39:16.97ID:pABxzJBl>[b](){ ++b; }
コンパイルエラーじゃね?
[b]() mutable { ++b; }
[&b]() { ++b; }
0537デフォルトの名無しさん
2015/06/20(土) 11:41:03.08ID:ne/bSAAV0538デフォルトの名無しさん
2015/06/20(土) 12:23:39.25ID:HjWjZvmN何言ってんのかわからないから
ttp://yohhoy.hatenablog.jp/entry/2013/12/15/204116
これ読んで間違ってると思う所挙げてくれ
0539デフォルトの名無しさん
2015/06/20(土) 13:16:06.09ID:TpIghoYw『C++11における重要な(そして地味な)スレッドサポートとして、C++標準ライブラリ提供クラスのデータ競合に関する基本ルールが明確化されました。』
これが誤り。
明確化それたのではなく『このように変更されました』が正しい。
0540デフォルトの名無しさん
2015/06/20(土) 13:18:47.22ID:IRI2lmd1おまえさっきからひとりでレベルの低いこと言ってるが
他人が話題にしていることが何だかわかっていないだろ。
だれもコピー渡しの事なんか眼中にないんだよ。
0541デフォルトの名無しさん
2015/06/20(土) 13:56:46.61ID:gzoCELj1どこもかしこも同じことばっかり・・・
ただ単に機能を紹介してるだけで、どう実用的にしようするかは全く書いていない
そんなの本みりゃかいてあるじゃん
それを得意げにwwwにあげなくても・・・
0542デフォルトの名無しさん
2015/06/20(土) 15:19:04.38ID:2OynkrJD突っ込まれて恥ずかしいのはわかるから、もうでてくるなよ...
0543デフォルトの名無しさん
2015/06/20(土) 15:28:28.80ID:holBTYBGだね
サーセン
0544デフォルトの名無しさん
2015/06/20(土) 15:33:32.28ID:HjWjZvmNだからどう変更があったんだ
0545デフォルトの名無しさん
2015/06/20(土) 16:53:31.26ID:3gVaqkMhC#最大の失敗はconst引数とかconstメンバ関数がないことだと思う
0546デフォルトの名無しさん
2015/06/20(土) 17:05:24.91ID:q1W9QYhz0547デフォルトの名無しさん
2015/06/20(土) 17:12:26.20ID:pT8rjVDVC#はデータ構造をイミュータブルに設計するのが基本なので
そもそもconstをあまり必要としない。
しかしC上がりのC#プログラマはなんでもかんでもミュータブルに設計しちゃうので
あまり恩恵に与れない。
0548デフォルトの名無しさん
2015/06/20(土) 17:17:29.57ID:IRI2lmd1なんだかよくわかんねーけどさ、もともとの俺の発言はこうだ。
>関数の引数宣言ではconst付けろ。そうしないとconst変数をその関数に渡せないじゃん。
これのどこに問題があるんだ?
func(T& x);
この関数に const T x; を渡そうとしても渡せない。
funcがxを変更しないなら忘れずにconstを付けるべきだ、と言ってる。
なんか理解できない事でもあるのか?
0549デフォルトの名無しさん
2015/06/20(土) 17:38:26.37ID:t6zALFPs0550デフォルトの名無しさん
2015/06/20(土) 17:52:16.02ID:x3hvss4r> なんか理解できない事でもあるのか?
こんなことにしつこく粘着するお前の神経
0551片山博文MZ ◆T6xkBnTXz7B0
2015/06/20(土) 17:52:29.38ID:RdU0NHX60552デフォルトの名無しさん
2015/06/20(土) 18:05:42.87ID:q1W9QYhzなんかのAPIにstd::stringの c_str()渡したいとかある。
0553デフォルトの名無しさん
2015/06/20(土) 18:19:52.91ID:aEgncsrl確かに単なる定数としてならconstは無くてもいい、constexprの方がいいと思う。
でもインターフェイスとしてのconstは絶対必要だと思う。
ひとくくりに「constいらない」って言われたらそりゃ否定するよ。
0554デフォルトの名無しさん
2015/06/20(土) 18:25:47.87ID:37rStOxv俺はメタプログラマーだから
コードはコンピューターに書かせる
0555片山博文MZ ◆T6xkBnTXz7B0
2015/06/20(土) 18:28:48.12ID:RdU0NHX6メタプログラミングに何使ってるの? Haskell? OCaml?
0556デフォルトの名無しさん
2015/06/20(土) 18:28:58.23ID:f7mGspD+0557デフォルトの名無しさん
2015/06/20(土) 18:34:51.64ID:YRpaqalDインターフェースとしてのconstなんて
f(X *px /*pxは読みとりのみ*/)
でよくない?
C#とかJavaScriptはそれで特に困ってないし
CでもUnixのexecvとかそんな感じでは
0558デフォルトの名無しさん
2015/06/20(土) 18:38:31.66ID:37rStOxv書かないということだ
後はコンパイラーが自動生成してくれる
0559デフォルトの名無しさん
2015/06/20(土) 18:56:55.48ID:aEgncsrlexecvは分からないけど、それらの言語はポインタがないとか、ガベージコレクタあるとかで安全だからでは。
0560デフォルトの名無しさん
2015/06/20(土) 19:06:44.35ID:AGMwCtTpGotW
0561デフォルトの名無しさん
2015/06/20(土) 20:09:50.98ID:gzoCELj12つ数字の和を計算する場合、その2つの数はマジックナンバーしか受け付けない
今時性的なプログラミングはNGだろ
0562デフォルトの名無しさん
2015/06/20(土) 20:21:36.07ID:GbAOoZY+実行して計算すればいいことを「コンパイル時にここまでできた!」
と糞コード書いて自己満足しているだけ
0563デフォルトの名無しさん
2015/06/20(土) 20:26:11.10ID:k98nJLvmそんなことってあるか?
0564デフォルトの名無しさん
2015/06/20(土) 20:28:13.00ID:n4iVUeXj0565デフォルトの名無しさん
2015/06/20(土) 20:32:09.65ID:m4bEx8340566デフォルトの名無しさん
2015/06/20(土) 20:34:41.02ID:jyvv71oT0567デフォルトの名無しさん
2015/06/20(土) 20:40:03.73ID:DFleiKMb本人は他人に何かしてやったつもり(ドャッ!)なのか
どうしようもない奴らだな。
テンプレートでコンパイル時ソートでもしてろ
0568デフォルトの名無しさん
2015/06/20(土) 21:02:02.86ID:q1W9QYhz型に関する多くのことはコンパイル時に決定している。これは有用。
値に関しては賛否両論あるかもしれん。
0569デフォルトの名無しさん
2015/06/20(土) 21:02:39.16ID:holBTYBG#define よりも賢くできるようにする研究を素直に喜べないのか
0570片山博文MZ ◆T6xkBnTXz7B0
2015/06/20(土) 21:06:57.54ID:RdU0NHX6Java to C++ converter
https://code.google.com/a/eclipselabs.org/p/j2c/
0571デフォルトの名無しさん
2015/06/20(土) 21:07:39.32ID:2FwA5nNNいまだに使用してるなんて前提で
レーゾーンデートルを力説されても…
0572デフォルトの名無しさん
2015/06/20(土) 21:36:30.88ID:gzoCELj1{
char buf[1024];//A
for(int i=0;i< 10000;++i){
char buf[1024];//B
}
}
testが呼ばれたとき
Aの箇所だとbufは1回しかスタックにつまれない
Bの箇所だとbufは10000回もスタックにつまれる
ってあってますか?
0573デフォルトの名無しさん
2015/06/20(土) 21:50:48.82ID:IhPqekqV0574デフォルトの名無しさん
2015/06/20(土) 21:56:55.68ID:holBTYBGあばよ
今生の別れだ
0575デフォルトの名無しさん
2015/06/20(土) 21:57:51.96ID:holBTYBG汗嫁
話はそれからだ
0576デフォルトの名無しさん
2015/06/20(土) 22:03:07.93ID:PEDlQMiL質問に来てないみたいな気がするよね?(´・ω・`)
0577デフォルトの名無しさん
2015/06/20(土) 22:04:32.95ID:j/9gGB53{
A buf[10];// 1
for(int i=0;i< 1000;++i){
A buf[10]; // 2
}
}
1の場所でAのコンストラクターは10回呼ばれる
2の場所はループの度にコンストラクターが10回呼ばれる
スタックなどというプログラミング言語の下の実装は
どこにも標準化されていのでコンパイラー実装次第
0578デフォルトの名無しさん
2015/06/20(土) 22:12:35.35ID:holBTYBG辛うじてstack unwindingが出てくるくらいか?
0580デフォルトの名無しさん
2015/06/20(土) 22:20:32.57ID:80ZR1dJo関数生成されないんじゃないのか
0581デフォルトの名無しさん
2015/06/20(土) 22:29:44.83ID:TpIghoYw外部リンケージを持つ関数は
ODR使用の可能性が否定できないから
生成はされるのでは。
0582デフォルトの名無しさん
2015/06/20(土) 22:39:25.70ID:80ZR1dJoそうだな。
0583デフォルトの名無しさん
2015/06/20(土) 23:29:27.41ID:B32smHlf>>577のでAのコンストラクタ・デストラクタとも
- インラインで外部リンケージな呼び出しを含まない
- まるきり定義無し
のどちらかだとすると
副作用が有り得ない=testが在っても無くてもアルゴリズムは等価、
としてtestごと消え得るのでは…
0584デフォルトの名無しさん
2015/06/20(土) 23:34:51.53ID:+RNOOPsgconst_cast<T>(x) で渡せるだろトーシロウ
0585デフォルトの名無しさん
2015/06/20(土) 23:46:02.28ID:B32smHlfループの内側のbuf[10]は、「まずは」(最適化は後で考えるとして)、ループ1回回るたびに
要素10個それぞれコンストラクタが呼ばれて構築され、さらにデストラクタが呼ばれて破棄される、と解釈される
ということは、ループk回目でbuf[0..9]が使った領域は、ループk+1回目の開始時時点では破棄済みで誰も使っていないから
またbuf[0..9]のインスタンスが構築できるから、ループ回数だけスタックを消費していくような実装には
なかなかお目にかかれないはず…
0586デフォルトの名無しさん
2015/06/21(日) 00:27:03.41ID:QrPate9Zconst_cast<T&>(x) の間違いじゃない?
0587デフォルトの名無しさん
2015/06/21(日) 00:32:29.47ID:9rSSXz+5/Zaオプション付けると右辺値扱いされてコンパイルエラーになると予想。
0588デフォルトの名無しさん
2015/06/21(日) 00:38:42.97ID:QrPate9Z>const_cast<T>(x) で渡せるだろ
全く理由になっていない。
なんで渡す側がそんな醜いキャストなんかしなきゃならん。
責任はfuncの作者にある。忘れずにconstを付けるべきだ。
0589デフォルトの名無しさん
2015/06/21(日) 00:51:49.35ID:9rSSXz+5testは消えないよ。
>>577をコンパイルした後で別のファイルに
----
extern void test();
struct Z {
Z() {test();}
};
Z global_obj;
----
なんてコードがあるかも知れないから
リンクエラーにならないようtestの実体が必要。
ちなみに
auto test() {}
だと別の翻訳単位で戻り値を前方宣言できないから
消えるかも知れない。
0590デフォルトの名無しさん
2015/06/21(日) 00:53:45.10ID:9rSSXz+5>>572のtest()は消えないけど>>577は消える。
忘れて。
0591デフォルトの名無しさん
2015/06/21(日) 01:39:08.58ID:RBHwsW1qC++じゃなくてCの頃からそう
あえてconstを付ける理由として挙げてるのも、論争してるのも謎すぎる
0592デフォルトの名無しさん
2015/06/21(日) 01:49:44.57ID:RBHwsW1q事前のコピーはconstと無関係だし、許されるのは非constを渡す方向だけ
0593デフォルトの名無しさん
2015/06/21(日) 01:52:07.04ID:qbGsUBw5紛らわしい言い方の意見だね?(´・ω・`)
constが付いた型はconstが付いていない型とは「違う型」なんだから
そもそも「付いた」という言い方が紛らわしいんだけどね?(´・ω・`)
0594デフォルトの名無しさん
2015/06/21(日) 02:00:06.66ID:MnJNovYwKRにはそんなものマトモに無かったし
Cは今でもconstのせいでstrchrが糞仕様じゃねーか
0595デフォルトの名無しさん
2015/06/21(日) 02:06:24.20ID:k0Gw61eHたとえば
int getlength(char* str);
こんなのにconstつけてなになる?
長さを取得する関数ってことは誰が見ても分かるし、
呼び出すほうも、関数を作るほうもstrの内容を変更しないことはあたりまえ
0596デフォルトの名無しさん
2015/06/21(日) 02:17:28.34ID:8uauNRnw0597デフォルトの名無しさん
2015/06/21(日) 02:19:41.73ID:YnY7GEM9いや、const付けろよ
そのケースで付けないで良い理由なんてないから
0598デフォルトの名無しさん
2015/06/21(日) 02:20:15.27ID:g/VxZAezそれだと const char * の長さが測れなくなる
0599デフォルトの名無しさん
2015/06/21(日) 02:20:45.69ID:Qd0dXrIr「付けるべき」「付けなきゃ駄目」と珍妙な主張する人たちは
メイン関数のargvをどう思ってるわけ?
付けたらバグが減るという幻想は自分の妄想の中だけにしてね
0600デフォルトの名無しさん
2015/06/21(日) 02:24:26.63ID:YnY7GEM90601片山博文MZ ◆T6xkBnTXz7B0
2015/06/21(日) 02:24:58.84ID:szDYpocA番兵を知らないかね。文字検索のために書き換えることもある。
constを使うルールは信頼性に影響する。
0602デフォルトの名無しさん
2015/06/21(日) 02:34:54.98ID:Qd0dXrIrへー、じゃあどうしてC++のstrchr(char const *, int)
は返り値がchar const *なのかね
思いつきで言い訳するのは良くないぜ
まあ言い返せなくなると
>どうしようもないアホだな
とファビョるだけの朝鮮人たちには難しかったかな
0603デフォルトの名無しさん
2015/06/21(日) 02:35:46.42ID:qbGsUBw5これこれだから付けなきゃいけないとか、こうだから付けなくていい
そういう議論は無意味なんだよ?(´・ω・`)
>>593 でも言ったけど
> constが付いた型はconstが付いていない型とは「違う型」なんだから
そういう型に「なるかならないか」だけなんだよ?(´・ω・`)
0604片山博文MZ ◆T6xkBnTXz7B0
2015/06/21(日) 02:37:14.74ID:szDYpocA0605デフォルトの名無しさん
2015/06/21(日) 02:37:42.08ID:Qd0dXrIr0606デフォルトの名無しさん
2015/06/21(日) 02:41:53.19ID:YnY7GEM9ファビヨって意味不明の朝鮮人認定してるのはお前という池沼
0607片山博文MZ ◆T6xkBnTXz7B0
2015/06/21(日) 02:43:17.53ID:szDYpocA0608デフォルトの名無しさん
2015/06/21(日) 02:47:44.87ID:YnY7GEM9「じゃあどうしてC++のstrchr(char const *, int)は返り値がchar const *なのかね 」w
0609デフォルトの名無しさん
2015/06/21(日) 02:51:53.95ID:Qd0dXrIr>constを適切に使っていないソースはゴミ箱行きだ
ああ、君のプログラムのmain関数のことだねw
>>608
とうとう内容で言い返すことができなくなって
「w」を付けただけのオウム返しレスになっちゃったか 哀れ
0610デフォルトの名無しさん
2015/06/21(日) 02:54:35.69ID:YnY7GEM9内容?どこまで笑わせる気だよ池沼
お前と議論するような内容なんて無いよ
ただただお前がバカなだけ
バカすぎて自覚できないだろうけど
0611片山博文MZ ◆T6xkBnTXz7B0
2015/06/21(日) 02:55:10.96ID:szDYpocA0612片山博文MZ ◆T6xkBnTXz7B0
2015/06/21(日) 02:57:12.96ID:szDYpocAJavaからC++へ普通に変換できますよ。
0613デフォルトの名無しさん
2015/06/21(日) 02:59:40.34ID:g/VxZAez0614デフォルトの名無しさん
2015/06/21(日) 03:07:20.90ID:fO5JAwrS自分は100%設計思想を把握していて忘れることもないし
うっかりコードを描き違えることもない、そういう自信があるなら
constなしpublicでいいんじゃなかろうか
俺はしょっちゅう忘れるしうっかりコードも間違えるから使うけど
0615デフォルトの名無しさん
2015/06/21(日) 03:23:51.57ID:YnY7GEM9これを利用して引数が丸見えになるのを避けるための対策を行うのは割と一般的な手法
プログラム名(argv[0])も変えられる
0616デフォルトの名無しさん
2015/06/21(日) 03:26:29.86ID:V01ss4k7argvをどんな値にしてもそんなことは起こらねーよ。
0617デフォルトの名無しさん
2015/06/21(日) 03:37:21.95ID:Qd0dXrIrこんな文法が許されてしまう言語なのに
constに妙な思想を夢見てソースをconstだらけにするのは
マジ勘弁ですよ
0618デフォルトの名無しさん
2015/06/21(日) 03:40:59.28ID:wi8ruPuEそんなことも分からないのか
0619デフォルトの名無しさん
2015/06/21(日) 03:47:47.46ID:YnY7GEM9そりゃargv=なんとか
ってしても変わんねーよw
渡されたアドレスの内容を書き換えるんだよ
もちろん書き換えサイズはオーバーしないようにね
やってみ
0620デフォルトの名無しさん
2015/06/21(日) 03:51:03.94ID:k0Gw61eHオーバーロード、キャスト
いくらでもやりようはあるよ
勉強しろ
0621デフォルトの名無しさん
2015/06/21(日) 03:55:42.41ID:VBnOEKb6int getlength(char* str);
と
int getlength(const char* str);
両方作るのかwwwwwwwwwwww
それとも
getlength(const_cast<char*>(str));
ってすんのwwwwwwwwwwwwwww
int getlength(const char* str);
一つ作れば十分なのにバカなんだなwwwwwwwwwwwww
0622デフォルトの名無しさん
2015/06/21(日) 04:08:35.70ID:fO5JAwrSまあそれはともかく、もっと抽象的なクラスAで
int getlength(A& a)
ってあったら、これは長さを返すついでになにか
内部状態も変更するのかな、と推測してしまう
int getlength(const A& a)
ならAクラスから推測される長さを返す関数なんだと理解できる
0623デフォルトの名無しさん
2015/06/21(日) 04:55:53.89ID:k0Gw61eHA& aaa = const_cast<A>(a);
とすればおまえさんの推測はなんの意味も無いわけだが・・・
0624デフォルトの名無しさん
2015/06/21(日) 04:57:03.71ID:k0Gw61eH0625デフォルトの名無しさん
2015/06/21(日) 05:13:55.03ID:pgtV211P実装は知らされないことが多いし。
0626デフォルトの名無しさん
2015/06/21(日) 06:29:16.54ID:QGPUzNZzお前みたいなのがいるせいでconst_castがあるってことをまず自覚しろ
0627デフォルトの名無しさん
2015/06/21(日) 06:38:32.39ID:k0Gw61eHそんなライブラリよく使えるな・・・
constがどうこう言うより、よっぽど危険だろ
勝手に上司に死ね、アフォ、カスってメールを送信するような
実装かもしれんし
0628デフォルトの名無しさん
2015/06/21(日) 07:38:59.09ID:YrgsgPjWusing namespace std;
auto f(int b,...){return b;};
int main() {
cout<<f(1,2,3,4)<<endl;
return 0;
}
...は再帰も出来ないし使いどころがわからないのですが
いったい何の役に立つのですか?
0629デフォルトの名無しさん
2015/06/21(日) 08:14:09.13ID:nUm+UHVV0630デフォルトの名無しさん
2015/06/21(日) 08:18:47.57ID:QrPate9Zあんたの世界では、文字列の長さを知りたくてgetlengthを使うときは
getlengthの実装を見て、書き換えてないことを確認してからconst_castして渡すか、
わざわざコピーを取ってから渡すか、
どっちかしかなさそうだな。
0631デフォルトの名無しさん
2015/06/21(日) 08:23:02.09ID:TOFaYzkd0632デフォルトの名無しさん
2015/06/21(日) 08:36:53.52ID:fO5JAwrSそれをいったら
>>595
はそれどころじゃないなw
0633デフォルトの名無しさん
2015/06/21(日) 09:15:27.34ID:2Lp/obQPをコンストラクタ内で初期化するのに必要。
constを使っていないライブラリ関数を呼び出すのに必要。
0635デフォルトの名無しさん
2015/06/21(日) 09:19:44.77ID:9rSSXz+50636デフォルトの名無しさん
2015/06/21(日) 09:21:31.30ID:9rSSXz+5const信者の書きそうな糞コードだな
constexpr char const * const p = "abc";
の方が長くて好みだろ
0637デフォルトの名無しさん
2015/06/21(日) 09:51:22.98ID:V01ss4k7ドヤ顔で説明した↓は引っ込めるのか?
> ちなみにunix系でargvを書き換えるとpsの出力が変わる
0638デフォルトの名無しさん
2015/06/21(日) 09:52:07.51ID:/vdMr5S0いま単に
int g_foo = 1000; // (A)
と書いたとしたら、ROMに値1000のための領域が1ワード取られて、さらにRAMにも変数g_foo用に1ワード取られて、
さらにブートストラップコードに値1000をg_fooに書き込む(初期化)処理が発生する。これが
const foo = 1000; // (B)
なんなら値1000のための領域がROMに取られるだけで済む
(尤も、ROMアクセスはRAMアクセスより一般に遅いので、敢えて(A)の書き方にすることもあるがある程度リッチな環境限定
しかしROMに割り当たっているオブジェクトにconstはがしなどやられる可能性を考えると結局はコード見なきゃイカンので、
C++の穴があるconst仕様は糞
0639デフォルトの名無しさん
2015/06/21(日) 09:55:35.20ID:KiamKvSu0640デフォルトの名無しさん
2015/06/21(日) 09:56:05.44ID:/vdMr5S0ようわからんが有り得ない話じゃないんじゃ…
argvはポインタの配列なので、同じ配列をpsが参照するのだとしたら、配列内容の書き換えはpsの挙動に影響する
0641デフォルトの名無しさん
2015/06/21(日) 10:00:41.87ID:/vdMr5S0const固有の最適化が出来る、
PC相対でデータを参照できるインストラクションセットでなおかつコードをROMに置く場合、constを付けたらPC相対アクセス1命令になる
そうでなければ一般に遠くはなれたRAMまでデータを参照に行くコード
(最悪、当該変数のアドレスをROMかRAMからレジスタに読み込んで、当該レジスタを使ってリードアクセスの2命令ぐらいになる上に、
レジスタを使う以上値の退避が必要となり、pushやpopまで発生するかも試練、
0642デフォルトの名無しさん
2015/06/21(日) 10:05:57.71ID:XfDjA2Ye0643デフォルトの名無しさん
2015/06/21(日) 10:12:42.48ID:V01ss4k7> ちなみにunix系でargvを書き換えるとpsの出力が変わる
argvを書き換えるという事は
argv = hoge;
に他ならないが、どのOSの、どのバージョンがそんな挙動を示すんだ?
0644デフォルトの名無しさん
2015/06/21(日) 10:18:11.32ID:/vdMr5S0漏れは「配列内容の書き換え」ときちんと断ったで?
0645デフォルトの名無しさん
2015/06/21(日) 10:29:35.52ID:V01ss4k7argvをどうやって書き換えると、配列内容が書き換わるのかね?
ありえない話じゃないと言っているんだから、そういうテクニックがあるんだろうな。
で、どうやって書き換えるんだ?
0646デフォルトの名無しさん
2015/06/21(日) 10:37:28.53ID:XFnAya/C0647デフォルトの名無しさん
2015/06/21(日) 10:40:11.48ID:V01ss4k7argvでもargv[0]の書き換えではなく、argv[0]の指している先(内容)を書き換えている。
それをargvの書き換えだけで変更できるんだったら、スゲー大発見だよ。
0648デフォルトの名無しさん
2015/06/21(日) 10:49:31.35ID:YnY7GEM9constポインタの話をしてたんだからポインタが指す先を書き換える話に決まってるだろ
例えばこうやるんだよ
argv[0][0] = 'B';
argv[0][1] = 'A';
argv[0][2] = 'K';
argv[0][3] = 'A';
0649デフォルトの名無しさん
2015/06/21(日) 10:53:49.07ID:YnY7GEM9文脈読めないバカ
0650デフォルトの名無しさん
2015/06/21(日) 10:56:19.10ID:CUX5ZuNU実体にconstつけると即値になったりする
ポインタや参照のconstは逆に最適化を妨げたりもする
bool func(const int& a, int* b)
{
int c{a};
func(b);
return c == a;
}
0651デフォルトの名無しさん
2015/06/21(日) 11:58:48.84ID:/vdMr5S0ようわからんがint c{a}って何でしたっけ…;
それはともかく、func(b)にaの実体を書き換える副作用が無い、とコンパイラが判断できる状況なら
>>650の例ではfunc()内のcもaも普通に即値に落ちるのでは…
(cが事実上const扱いで即値に落ちるのはデータフロー解析の助けを借りてそうなるで最終的にfunc()はtrueを返す関数になる
で、同じことはaにconstが付いていなくても言えるんじゃ…
0652デフォルトの名無しさん
2015/06/21(日) 12:01:25.32ID:/vdMr5S0しかしfunc()が定数trueを返す関数にまで最適化されることは(func(b)呼び出しの副作用の無さをコンパイラが見切れば)有り得る
0653デフォルトの名無しさん
2015/06/21(日) 12:09:14.03ID:V01ss4k7文脈読めない方が悪いと責任転嫁する、三菱のSIerのようなバカ。
まだ、
> ちなみにunix系でargvを書き換えるとpsの出力が変わる
こんなアホな主張を続けるのか?
0654デフォルトの名無しさん
2015/06/21(日) 12:22:33.00ID:YnY7GEM9はいはい「unix系ではargvを書き換えるとpsの出力が変わるOSがある」に訂正しますよ
でもあれは
>「付けるべき」「付けなきゃ駄目」と珍妙な主張する人たちは
>メイン関数のargvをどう思ってるわけ?
に関して言ったことで、そこは論点じゃない
揚げ足取りもいい加減にしとけよ
0655デフォルトの名無しさん
2015/06/21(日) 12:36:06.25ID:k0Gw61eHおっさんはしね
0656デフォルトの名無しさん
2015/06/21(日) 12:40:57.01ID:YnY7GEM9そんなんじゃ三菱のSIerさんにまたたしなめられちゃうぞw
そんなことよりconst付けるべきところではちゃんとconst付けろよ怠け者
0657デフォルトの名無しさん
2015/06/21(日) 13:40:39.00ID:ZULOTU5vstd::vector<int> v;
foo<int,std::vector>(v);
もっというと
foo<vの要素からint,vからvector>(v);
がしたい
0658デフォルトの名無しさん
2015/06/21(日) 13:49:29.11ID:jWPtn3rV付けることが正しいかのような妄想を他人に吹聴しないでください
0659デフォルトの名無しさん
2015/06/21(日) 13:57:17.92ID:fO5JAwrStemplate<class V>void foo(const V& v);
にして
typename V::value_type
を使うべきだと思う
0660デフォルトの名無しさん
2015/06/21(日) 14:26:09.56ID:9rSSXz+5関数テンプレートは部分特殊化出来ないが
型推論から部分的な型を導ける
http://ideone.com/f0ibAT
0661デフォルトの名無しさん
2015/06/21(日) 14:34:03.13ID:vdoq01Zs初期化のつもりでconst_castって、未定義動作になるよ。
0662デフォルトの名無しさん
2015/06/21(日) 14:39:16.26ID:ZULOTU5vありがとうございます。
参考にさせて頂きます。
0663デフォルトの名無しさん
2015/06/21(日) 14:39:50.18ID:j4xtDVxh規格のどこに書いてある?
0664デフォルトの名無しさん
2015/06/21(日) 14:44:04.49ID:vdoq01Zs7.1.6 [dcl.type] p4
Except that any class member declared mutable (7.1.1) can be modified,
any attempt to modify a const object during its lifetime (3.8) results in undefined behavior.
0665デフォルトの名無しさん
2015/06/21(日) 14:57:07.41ID:6GC1jl0K0666デフォルトの名無しさん
2015/06/21(日) 14:59:10.49ID:ARzVGPaS0667デフォルトの名無しさん
2015/06/21(日) 15:48:17.40ID:CUX5ZuNU#include <vector>
template <typename elem, template <typename...> class cont>
struct foo
{
foo(cont<elem>&) { }
};
int main()
{
std::vector<int> v;
foo<decltype(v)::value_type, std::vector> w(v);
}
0668デフォルトの名無しさん
2015/06/21(日) 17:28:09.41ID:V01ss4k7> はいはい「unix系ではargvを書き換えるとpsの出力が変わるOSがある」に訂正しますよ
間違いを認められないゴミクズ。
どのOSのどのバージョンが、argvを書き換えると、psの出力が変わるんだ?
0669デフォルトの名無しさん
2015/06/21(日) 17:34:53.30ID:7Y2WUkP1argv を存在しないアドレスに割り当てれば
ps ごとアクセスバイオレーションを起こしてストップすることも
考えられるな
0670デフォルトの名無しさん
2015/06/21(日) 17:38:27.30ID:7Y2WUkP10671デフォルトの名無しさん
2015/06/21(日) 17:43:34.43ID:RBHwsW1qこんな恥ずかしいレスしちゃ奴に構ってたのか…
0672デフォルトの名無しさん
2015/06/21(日) 17:54:58.69ID:RBHwsW1q即値どころかfunc(const int&,int*)の中のfunc(int*)が副作用ないなら
普通に定数返すね
この場合、func(const int&,int*)呼び出し元はfuncのコールが消える
0673デフォルトの名無しさん
2015/06/21(日) 18:02:00.70ID:gR9DrUit自分のプロセス空間で自分でバグやらかして死ぬだけでなにがシステムの脆弱性だよ
0674デフォルトの名無しさん
2015/06/21(日) 18:07:07.42ID:RBHwsW1qargvは確か仕様上変更可能
0675デフォルトの名無しさん
2015/06/21(日) 18:15:18.23ID:RBHwsW1q仕様上ってのはLinuxなどではなくCの仕様上の話
これは例外的に仕様でmutableなのが明確=基本のイディオムとなってる以上、
他人に見せる物には付けるべきではないね
0676デフォルトの名無しさん
2015/06/21(日) 18:17:20.45ID:1IBkKjPWvoid main() がありえない理屈と同じ
0677デフォルトの名無しさん
2015/06/21(日) 21:01:37.12ID:KN4zQeQwたまたま規格がそうなってたから
とくに深い理由は無い
0678デフォルトの名無しさん
2015/06/21(日) 21:05:58.15ID:1kI6SICX0679デフォルトの名無しさん
2015/06/21(日) 21:58:31.73ID:VBNKos8R0680デフォルトの名無しさん
2015/06/21(日) 22:04:58.42ID:CUX5ZuNU0681デフォルトの名無しさん
2015/06/21(日) 22:17:28.30ID:V01ss4k7何言ってんだ? このバカは。
0682デフォルトの名無しさん
2015/06/21(日) 22:36:19.79ID:/gmt9Vmxなのでargvの指す先をいじることでpsの結果が変わる話を
ISO/IEC 9899:2011でargvが変更可能な話にすり替えちゃいました。てへ☆
0683デフォルトの名無しさん
2015/06/21(日) 23:59:07.75ID:PLHnXuw30684デフォルトの名無しさん
2015/06/22(月) 00:12:34.01ID:e4hiyCLDconstexprとconstは全く違うわけでな
0685デフォルトの名無しさん
2015/06/22(月) 00:20:50.26ID:owzZAd5i::*
->*
0686デフォルトの名無しさん
2015/06/22(月) 00:22:36.97ID:DsLO/OM8(いやC++では無くなったんだっけ?
0687デフォルトの名無しさん
2015/06/22(月) 00:43:38.87ID:rhvfLAPY0688デフォルトの名無しさん
2015/06/22(月) 02:59:43.06ID:yyiP4D810689デフォルトの名無しさん
2015/06/22(月) 03:57:47.08ID:HGgblcg2>なのでargvの指す先をいじることでpsの結果が変わる話を
>ISO/IEC 9899:2011でargvが変更可能な話にすり替えちゃいました。てへ☆
別に論点ずれてないよ
元の話でも事実だから
0690デフォルトの名無しさん
2015/06/22(月) 04:26:44.17ID:HGgblcg2調べたが全然たまたまじゃないね
ANSI-Cから、mainの返り値はプログラムの終了値として使われるので、int
ちなみにconst無しargvのmainの例の下に、argvが変更可能と明記
C++の話題なのでこれ以上は控えるが、ここまで書いてあるのに否定する方がおかしいだろ
0691デフォルトの名無しさん
2015/06/22(月) 05:16:38.92ID:VgWiq03zusingをつかってtypenameを書かないで良いように
する方向に向かっているんですか?
0692デフォルトの名無しさん
2015/06/22(月) 08:32:36.63ID:y4ye4wgw{void ccc(){}};
auto mf = std::mem_fn(&CCC::ccc);
このautoを使わない場合
mfはどのような宣言になりますか?
0693デフォルトの名無しさん
2015/06/22(月) 08:55:08.05ID:XqKQre6Kstd::function<void (CCC&)> mf = std::mem_fn(&CCC::ccc);
0694デフォルトの名無しさん
2015/06/22(月) 09:15:30.20ID:y4ye4wgwありがとうございます
0695デフォルトの名無しさん
2015/06/22(月) 09:20:33.75ID:MaxvP/1Lまだ、ごまかそうとしてるのか? ゴミクズ。
お前がほざいてたのは「argvの指す先をいじる」ではなくargvをいじる事だ。
> はいはい「unix系ではargvを書き換えるとpsの出力が変わるOSがある」に訂正しますよ
どのOSのどのバージョンだよ。
argvの指す先の指す先を書き換えるとpsの出力が変わるOSは良くあるが。
0696デフォルトの名無しさん
2015/06/22(月) 09:41:10.37ID:b3s7gwa+嘘つきに騙されるな
std::mem_fun_t<void, CCC>
ちなみにstd::mem_funは次の規格改訂で削除される予定
0697デフォルトの名無しさん
2015/06/22(月) 10:04:50.18ID:xy197upQはぁ?
0698デフォルトの名無しさん
2015/06/22(月) 10:36:36.21ID:LtTdRlZ1割とマジでこの質問をぶつけたくなる流れだな
0699デフォルトの名無しさん
2015/06/22(月) 10:39:16.97ID:QXqLXD7b0700デフォルトの名無しさん
2015/06/22(月) 17:42:42.61ID:HGgblcg2はいはい無知乙
知らなかったなら素直にそう言えばいいだけなのに
0701デフォルトの名無しさん
2015/06/22(月) 17:48:29.23ID:HGgblcg2詭弁のガイドラインの典型をやってる人って、
それで何が得られると思ってるんだろう
0702デフォルトの名無しさん
2015/06/22(月) 19:55:05.81ID:josAaD1D0703デフォルトの名無しさん
2015/06/22(月) 20:37:50.10ID:YfvhQkht平和な人だね
面と向かって喧々囂々やり合えないことこそ半端ないストレスなんだが
もっとも、どんなに白熱してても論客としての一定の礼儀はあってのことだ
潔くない保身だの幼児チックな感情論はもってのほかで
0704デフォルトの名無しさん
2015/06/22(月) 20:48:34.90ID:MaxvP/1Lウソを突き通して守る安っぽいプライド。
頭の悪い奴の典型だな。
0705デフォルトの名無しさん
2015/06/22(月) 20:56:07.78ID:ILh0wq8G0706デフォルトの名無しさん
2015/06/22(月) 21:00:10.30ID:z5fTT0EFっていう人久しぶりに見た
0707デフォルトの名無しさん
2015/06/22(月) 21:06:28.63ID:Rf9RS/lq0708デフォルトの名無しさん
2015/06/22(月) 21:17:12.65ID:HGgblcg2元のレスの人は言葉足らずで誤解があっただけで嘘ではないよ
主題を無視して欺瞞的な態度を貫いてるのは君だよ
いい加減自覚しようね
0709デフォルトの名無しさん
2015/06/22(月) 21:34:30.21ID:9wnjfpMfどういう方面で?
enum class とか範囲 for とかは俺としてはようやくだけど、よくぞ入れてくれましたって感じなんだけど
0710デフォルトの名無しさん
2015/06/22(月) 22:08:06.32ID:+y1xR2Mb横レスすまそ
糞すぎ=例外関係、typename/templateの前置、const&と&&に分身しちまったテンポラリ
0711デフォルトの名無しさん
2015/06/22(月) 22:19:32.57ID:iW451COy0712デフォルトの名無しさん
2015/06/22(月) 22:43:13.67ID:6dp2DntEテンポラリを束縛するんだから
const &よりconst &&の方が適切。
0713デフォルトの名無しさん
2015/06/22(月) 22:48:35.56ID:HGgblcg2参照はC++03視点だと汚く見えるかも知れないけど、
実際はmove実装時のconst外しが消え、
rvalue(T&&)一本にして、constも本来の意味に綺麗にしている
std::forwardとかのがいかにも妥協的で汚い
0714デフォルトの名無しさん
2015/06/22(月) 23:00:40.73ID:9wnjfpMf全然具体的じゃないんだが...
まあ、記法が気持ち悪いと言うのには同意するけど、それは今に始まったことじゃないし
0715デフォルトの名無しさん
2015/06/22(月) 23:02:22.60ID:DsLO/OM8C++も直せるでしょ?
0716デフォルトの名無しさん
2015/06/22(月) 23:47:12.28ID:tlZZb8mq0717デフォルトの名無しさん
2015/06/23(火) 08:21:07.65ID:Ng+F0VU10718デフォルトの名無しさん
2015/06/23(火) 08:52:42.83ID:I0ATeeuQ間違いを訂正できないバカは議論する資格がない。
> 主題を無視して欺瞞的な態度を貫いてるのは君だよ
主題以前の問題だが、
>>608
> 「メイン関数のargvをどう思ってるわけ? 」w
と言っておきながら、
mainのargv(の参照先)は書き換える事でpsの出力変える。
=> だからmainのargvにconstないのはおk
と意味不明のタワゴトほざいてるバカだ。
それを元レス正しいとかいってる、お前もバカ。
0719デフォルトの名無しさん
2015/06/23(火) 08:57:25.00ID:N7JGN5SL無罪になるのに、やったと言えるのか?
0720デフォルトの名無しさん
2015/06/23(火) 09:10:55.81ID:kcQ8bjDG日本の刑事裁判の99.9%が有罪になるなんて有名な話だろ
0721デフォルトの名無しさん
2015/06/23(火) 09:28:34.22ID:N7JGN5SLあり得ないと矛盾したことを言う馬鹿
0722デフォルトの名無しさん
2015/06/23(火) 10:03:44.14ID:M//w1eH8「やっていない」と主張するだけでは無罪に
ならないのは、事実でしょう。
無罪になるには、他の客観的な証拠があったから
で、否認しつづけても有罪にされた例は、冤罪事件
を見ればあきらかでしょう。
たとえば、「八海事件」「徳島ラジオ商殺し事件」
0723デフォルトの名無しさん
2015/06/23(火) 10:18:55.03ID:KLn5qgUW>>718
意味不明なタワゴトほざいてるのはお前だよバカ
ID出てるんだからイチャモンつける前に文脈を確認しろ
「メイン関数のargvをどう思ってるわけ? 」ってアホ発言は俺が言ったんじゃないんだよバカ
「argv書き換え」っていうのがargvが指してる先を書き換えるという
意味だっていうのも同じIDで補足している
0724デフォルトの名無しさん
2015/06/23(火) 10:24:08.59ID:N7JGN5SLやってないことの証拠とか悪魔の証明だから
どれだけ馬鹿なの
0725デフォルトの名無しさん
2015/06/23(火) 10:37:39.91ID:bPOLRPzG刑事裁判甘く見過ぎだな
0726デフォルトの名無しさん
2015/06/23(火) 10:41:55.94ID:kcQ8bjDG無罪と無実は違うんだよ
お前が何を主張したいのか知らんけど起訴されたらやっていないという証拠を求められるのが今の日本の司法。
つーかいい加減すれ違いだから自分でググれ、それか「それでも僕はやってない」って映画でもレンタルして見ろ
0727デフォルトの名無しさん
2015/06/23(火) 10:50:15.54ID:rWZbMeiE0728デフォルトの名無しさん
2015/06/23(火) 11:00:17.64ID:N7JGN5SL無罪になる」という状態が起こることを仮定しているわけだから
これが現実にあり得るかあり得ないかはどうでもいい話だろ
0729デフォルトの名無しさん
2015/06/23(火) 11:01:19.79ID:9r3RXp4j0730デフォルトの名無しさん
2015/06/23(火) 12:16:44.03ID:VUNYVcVnメインについてどうだと言ったのは俺だが
argvの書き換えとargvの指す先の書き換えについて
大変こだわってる>>723は別人だ
0731デフォルトの名無しさん
2015/06/23(火) 14:31:04.11ID:EDJkGmJ5例えば、
1.グローバルで、配列を宣言
2.関数の中で配列を宣言
3.クラスの中で配列を宣言
この三つでメモリの消費はどう違うのでしようか?
また、タブーな使い方とかありますか?
(メモリをどんどん使用するとか)
0732デフォルトの名無しさん
2015/06/23(火) 14:36:35.36ID:Seol6lnP0733デフォルトの名無しさん
2015/06/23(火) 15:13:46.37ID:RNrYnhXO0734デフォルトの名無しさん
2015/06/23(火) 15:43:25.10ID:Tkj4kQAi0735デフォルトの名無しさん
2015/06/23(火) 16:46:06.41ID:I0ATeeuQ「メイン関数のargvをどう思ってるわけ? 」を否定しただろ。死ねよ。バカ。
>>608 :デフォルトの名無しさん:2015/06/21(日) 02:47:44.87 ID:YnY7GEM9
> 「メイン関数のargvをどう思ってるわけ? 」w
0736デフォルトの名無しさん
2015/06/23(火) 18:33:55.12ID:kS9yst7sクラスの中で配列がstaticの場合はグローバルと同じですが
staticでない場合はそれだけではメモリ確保されません。
その配列を持つクラスの変数をグローバルに書いたときはグローバルに、
関数ローカル書いたときは関数ローカルに確保されます。
struct A {char a[100];};
A a;//グローバルに
int main() {A a;} //関数ローカルに
0737デフォルトの名無しさん
2015/06/23(火) 19:25:35.40ID:J6BxFv/51.グローバルで、配列を宣言 -- 静的記憶
2.関数の中で配列を宣言 -- スタック
3.クラスの中で配列を宣言 × === 他の3つのどれかに振り分けられる
4.配列を動的確保(malloc/free あるいは new/delete) -- ヒープ
この中でヒープは罠が多くやや難しいがプログラマなら必ず理解・習得すべし
スタックは一番使いやすいけど、関数をぬけた後持ち出せないとか、セキュリティホールにつながるとか罠があるけど、やっぱりいちばん使いやすい
グローバル・静的記憶は楽ちんだが子どもに刃物を持たせるようなものなのでなるべく避ける
後はそれぞれの用語でググってくれ
0738デフォルトの名無しさん
2015/06/23(火) 21:03:11.65ID:HRCTZ2uqstatic int 関数の中で配列を宣言[1];//スタックじゃない
thread_local int 関数の中で配列を宣言[1];//スタックじゃない
new(&関数の中で配列を宣言[0]) int[1];//ヒープじゃない
}
だいいちヒープって何だよ
フリーストアと何か違うの
0739デフォルトの名無しさん
2015/06/23(火) 21:22:46.71ID:KBBYxELvnew/delete=フリーストアローケーター
new/deleteは重いので多用する場合は
カスタマローケーター以外では使うべきではありません
スタックが高速なので特に理由のない限りスタックをつかってください
0740デフォルトの名無しさん
2015/06/23(火) 21:31:34.85ID:qkxeTacg0741デフォルトの名無しさん
2015/06/23(火) 21:35:17.11ID:DnHgPUjX0742デフォルトの名無しさん
2015/06/23(火) 21:35:37.96ID:lAuYvcP90743デフォルトの名無しさん
2015/06/23(火) 21:39:26.59ID:xmziolSE0744デフォルトの名無しさん
2015/06/23(火) 21:50:54.09ID:pXD9WDis言語構文の拡張ではなくライブラリで言語拡張もどきやってるのがなぁ。
for_eachとかにラムダ関数食わせてると、
なんでこんなところにreturnあるねん?
とか寝惚けてデバッグしてると混乱する。
0745デフォルトの名無しさん
2015/06/23(火) 22:27:32.43ID:fA8g5cCu何を言ってるんですか
0746デフォルトの名無しさん
2015/06/23(火) 22:30:30.81ID:Yra6/pdr> 言語構文の拡張ではなくライブラリで言語拡張もどきやってるのがなぁ。
意味わからん...
俺にアンカーしてるんだから、enum class とか範囲 for の話だよね?
0747デフォルトの名無しさん
2015/06/23(火) 22:31:15.16ID:ZYzQRQQTキーワード使うのに#include必要とか気は確かかと
0748デフォルトの名無しさん
2015/06/23(火) 22:42:53.22ID:qkxeTacg0749デフォルトの名無しさん
2015/06/23(火) 22:59:36.96ID:ZYzQRQQT0750デフォルトの名無しさん
2015/06/23(火) 23:04:49.44ID:VlLWw7EOrubyのeach_with_indexみたいなの
0751デフォルトの名無しさん
2015/06/23(火) 23:41:16.93ID:Yra6/pdrsizeof は演算子なのに結果の型 size_t 使うには include 必要なんだから、何を今さらって感じなんだが
0752デフォルトの名無しさん
2015/06/23(火) 23:54:18.75ID:ZYzQRQQTchar func() { return sizeof(long long); }
これのどこにincludeが必要なのか教えてくれ
0753デフォルトの名無しさん
2015/06/24(水) 06:30:37.03ID:JTCZnA99> 結果の型 size_t 使うには
って書いてあるんだが...
0754デフォルトの名無しさん
2015/06/24(水) 07:13:56.18ID:TuXeNp5yもともと問題として挙げられたのは
typeidがコード上に出現するだけでもインクルードが必要なことなので
size_tとは話が違う。
0755デフォルトの名無しさん
2015/06/24(水) 09:42:15.65ID:iKfJXuFBsizeof()の結果の型ってそもそもsize_tって決まってたっけ?
なんにしろ#include要るかいらないかって話なのに
size_t使う場合なんて条件限定して反論する意味ないよね
0756デフォルトの名無しさん
2015/06/24(水) 11:11:40.49ID:mSDBMbUW0757デフォルトの名無しさん
2015/06/24(水) 11:18:16.20ID:2tIhDsiK8ビットキャラクター以外のマスィーンで
UTF8キャラクターを使う場合どうしたらよいのかのう
0758デフォルトの名無しさん
2015/06/24(水) 11:32:42.92ID:Y94ZhR9j0759デフォルトの名無しさん
2015/06/24(水) 13:25:30.70ID:q/iymKMRごく単純なzipWith的なこともできないじゃん。
0760デフォルトの名無しさん
2015/06/24(水) 13:56:02.64ID:DVsceA8G0761デフォルトの名無しさん
2015/06/24(水) 14:29:35.49ID:hCh+/iKv0762デフォルトの名無しさん
2015/06/24(水) 14:31:28.97ID:ApCDts4W0763デフォルトの名無しさん
2015/06/24(水) 14:59:51.82ID:2tIhDsiK0764デフォルトの名無しさん
2015/06/24(水) 15:11:55.77ID:ZTbRYN2O0765デフォルトの名無しさん
2015/06/24(水) 15:14:35.47ID:2tIhDsiK0766デフォルトの名無しさん
2015/06/24(水) 15:20:45.95ID:hCh+/iKvjavaの話なんて誰もしとらんだろ。
お前が阿呆、そして童貞。
0767デフォルトの名無しさん
2015/06/24(水) 16:04:48.83ID:ZTbRYN2Oメンタルよえぇw
0768デフォルトの名無しさん
2015/06/24(水) 16:36:39.97ID:hCh+/iKv0769デフォルトの名無しさん
2015/06/24(水) 16:36:51.41ID:q/iymKMR0770デフォルトの名無しさん
2015/06/24(水) 16:45:56.11ID:UxxhGQg+0771デフォルトの名無しさん
2015/06/24(水) 16:49:54.82ID:DVsceA8G0772デフォルトの名無しさん
2015/06/24(水) 16:50:02.26ID:ZTbRYN2Oだが、その仕様改訂したとしてお前ら4流マどもにはその改悪の行方がどれほどの悪影響を与えるか理解できんだろうな
0773デフォルトの名無しさん
2015/06/24(水) 16:54:01.44ID:UxxhGQg+いまいち有用な場面が思い浮かばなかった
0774デフォルトの名無しさん
2015/06/24(水) 19:28:05.07ID:tF/MfqgUMSやGNUがコンパイラ作ってるんでしょ
0775デフォルトの名無しさん
2015/06/24(水) 19:35:55.69ID:1wf20En+0776デフォルトの名無しさん
2015/06/24(水) 19:52:14.93ID:5lQ1lw+W0777デフォルトの名無しさん
2015/06/24(水) 20:58:30.65ID:ayX+k7opC++11はcharがutf-8が入るサイズと規定されとるでよ
0778デフォルトの名無しさん
2015/06/24(水) 21:14:08.06ID:awOBQFTxzipWithとforに何の関係があるんだろ…
0779デフォルトの名無しさん
2015/06/24(水) 21:36:55.35ID:NRCLHLbFおい751
752のリターン式が返却値の型に、
どのように変換されるのか言ってみな
0780デフォルトの名無しさん
2015/06/24(水) 21:55:50.66ID:5/GXLIV8「リターン式」←ここ笑うところか?
0781デフォルトの名無しさん
2015/06/24(水) 21:57:01.52ID:33RnX7v/『The result of sizeof and sizeof... is a constant of type std::size_t』
0782デフォルトの名無しさん
2015/06/24(水) 21:58:52.68ID:33RnX7v/>>755向けのレス。
>>751
size_tを使うのにcstddefのインクルードは要らないはず
0783デフォルトの名無しさん
2015/06/24(水) 22:00:09.78ID:mSDBMbUW>>756
しかも的はずれだし
0784デフォルトの名無しさん
2015/06/24(水) 22:30:45.79ID:NRCLHLbFうん、バカ笑いするところだよ
0785デフォルトの名無しさん
2015/06/24(水) 23:15:09.57ID:3dw221TT0786デフォルトの名無しさん
2015/06/24(水) 23:45:45.92ID:q/iymKMR0787デフォルトの名無しさん
2015/06/24(水) 23:47:39.75ID:x/BKJXwUヘッダーファイルって、なんて言うのが正しいの?
0788デフォルトの名無しさん
2015/06/25(木) 00:41:04.13ID:8PqzseGz0789デフォルトの名無しさん
2015/06/25(木) 00:52:42.12ID:t/w7u9he0790デフォルトの名無しさん
2015/06/25(木) 05:19:34.80ID:UTudwcBWドッジボールどころかもはや撃ちあいだな 殺意に満ちあふれている
0791デフォルトの名無しさん
2015/06/25(木) 05:51:41.31ID:QrIpaMYv0792デフォルトの名無しさん
2015/06/25(木) 08:00:50.08ID:nSqMrdVl0793デフォルトの名無しさん
2015/06/25(木) 08:03:29.76ID:NYl9rCV70794デフォルトの名無しさん
2015/06/25(木) 21:27:15.66ID:b0ArPb9hsizeofの返値の型はsize_t
だが、なにもインクルードせずにsizeofを使ったところで問題ない。
なぜならsize_tは基本型のtypedefにすぎないから、
現実はその処理系でsize_tとなる整数型を返しているにすぎない。
typeidは演算子であるにもかかわらず、基本型でないものを返すというのが根本的な違い
0795デフォルトの名無しさん
2015/06/25(木) 22:21:42.76ID:OEV+WERqんなこたーない
ISO/IEC 14882:2014 18.2p6
0796デフォルトの名無しさん
2015/06/25(木) 22:31:02.71ID:r4iSpWQ0mpz_classかも知れないってことか?
0797デフォルトの名無しさん
2015/06/25(木) 22:32:56.80ID:R1q5YO+m> The type size_t is an implementation-defined unsigned integer type
> that is large enough to contain the size in bytes of any object.
unsigned integer type は基本型 (fundamental type, 3.9.1) なわけで、
「size_tは基本型のtypedef」で合ってると思うんだけど、どういうこと?
0798デフォルトの名無しさん
2015/06/25(木) 23:05:28.54ID:eQSMT7Q1void test(T a)
{
wchar_t* aa = a; //Tがwchar_t* の場合(A)
wchar_t* aa = a.c_str();//Tがwstring の場合(B)
//↓うだうだと長い
}
(A)と(B)をコンパイル時に決定したいのですが、可能でしょうか?
0799デフォルトの名無しさん
2015/06/25(木) 23:17:03.84ID:0CRANchnvoid test(wstring a);
void test(wchar_t * a);
0800デフォルトの名無しさん
2015/06/25(木) 23:28:08.80ID:0CRANchnhttp://ideone.com/DQRngy
0801デフォルトの名無しさん
2015/06/25(木) 23:31:18.66ID:R1q5YO+m> inline wchar_t const *aaa(std::wstring s)
> {
> return s.c_str();
> }
これ、ダングリングポインタになるよ。
>798 の解決方法としては >799 で合ってると思うんで、何を間違えたと言ってるのかわからない。
0802デフォルトの名無しさん
2015/06/25(木) 23:33:05.46ID:CZ++MN8ytemplate<typename T> void test(T a) { udauda(a); }
template<> void test(wstring a) { udauda(a.c_str()); }
0803デフォルトの名無しさん
2015/06/25(木) 23:52:57.85ID:E9C2fDqcinline wchar_t const * aaa(std::wstring & )
0804デフォルトの名無しさん
2015/06/25(木) 23:57:55.69ID:HjStf6rX0805デフォルトの名無しさん
2015/06/26(金) 00:42:06.45ID:JggZpWgl0806デフォルトの名無しさん
2015/06/26(金) 01:47:42.06ID:IOTh97/P無名名前空間を使えば本当に要らないのでは…
いや個人的にはやらんけど
0807デフォルトの名無しさん
2015/06/26(金) 03:25:07.87ID:wqX3fguj0808デフォルトの名無しさん
2015/06/26(金) 21:48:04.57ID:1Dyee7pBと言ってみる。
staticいらないならnewもいらないよな。
あんま使わんし。
0809デフォルトの名無しさん
2015/06/26(金) 22:02:09.40ID:bI5K71Dy0810デフォルトの名無しさん
2015/06/27(土) 08:48:25.08ID:rTvPy598newいらねー
mallocとplacementでいい
0811デフォルトの名無しさん
2015/06/27(土) 09:11:43.36ID:KUf9kyhlrealloc「…」
free「…」
0812デフォルトの名無しさん
2015/06/27(土) 12:15:24.80ID:Uau5C/Wvこれって何か問題にならないの?
0813デフォルトの名無しさん
2015/06/27(土) 12:19:42.75ID:VhkuZCtv0814デフォルトの名無しさん
2015/06/27(土) 12:19:46.48ID:34ShL78H0815デフォルトの名無しさん
2015/06/27(土) 12:32:23.57ID:SX1nKwfp0816デフォルトの名無しさん
2015/06/27(土) 12:41:16.82ID:VhkuZCtv0817デフォルトの名無しさん
2015/06/27(土) 13:05:27.01ID:uSdVLyN20818デフォルトの名無しさん
2015/06/27(土) 13:33:48.30ID:HRd5Hrhz0819デフォルトの名無しさん
2015/06/27(土) 14:29:09.07ID:rTvPy598newが使いたいってだけで、わざわざC++なんか使う変態か?
0820デフォルトの名無しさん
2015/06/27(土) 14:35:44.09ID:H2Sf9zMB0821デフォルトの名無しさん
2015/06/27(土) 14:42:41.61ID:m86EUix70822デフォルトの名無しさん
2015/06/27(土) 14:43:44.44ID:Me0rIRNZ0823デフォルトの名無しさん
2015/06/27(土) 14:51:56.28ID:+YDV+Gxn0824デフォルトの名無しさん
2015/06/27(土) 14:55:07.96ID:VhkuZCtvコンストラクタ呼ばないといけないし
0825デフォルトの名無しさん
2015/06/27(土) 15:04:57.43ID:f57Tnoermalloc+placement newでどんな型にも対応できて最強。
0826デフォルトの名無しさん
2015/06/27(土) 15:09:06.62ID:wVo6Igiistd::vector使え
>>824
new使わないとは言ったがmake_unique make_sharedを使わないとは言ってない とか?
0827デフォルトの名無しさん
2015/06/27(土) 15:33:33.58ID:f57Tnoer定数メンバ変数を持つクラスをvectorで使うと
コンパイルエラーを引き起こす糞な処理系がまだ現役で使われてるので論外。
0828デフォルトの名無しさん
2015/06/27(土) 15:51:23.71ID:5By7g+rrnewであらかじめフリーストアを割り当てておいて
newでそこのどこかにオブジェクトを作る役割だけをさせろと言うことだろう
0829デフォルトの名無しさん
2015/06/27(土) 15:53:02.39ID:wVo6Igii定数メンバー変数なんてめったに使わないだろ。それだけのためにmallocとか他人の目に入らない所であればどうぞご自由にご苦労様です。
0830デフォルトの名無しさん
2015/06/27(土) 16:22:33.04ID:YU4kaX8Kその糞コンパイラ何よ?
そんなしょうもないコンパイラ使ってる限りくだらない迂回コード書きまくらなきゃなるだろうねそりゃ
0831デフォルトの名無しさん
2015/06/27(土) 16:34:47.20ID:wVo6Igii正常なコピー(move)演算子も書けないだろうしね
0832デフォルトの名無しさん
2015/06/27(土) 16:59:03.41ID:e2zMBxYgそんなわけないだろ
0833デフォルトの名無しさん
2015/06/27(土) 17:16:03.83ID:wVo6Igiiでもerase使えないしsortとか各種algorithmも使えなくなるから普通はしないと思う
0834デフォルトの名無しさん
2015/06/27(土) 17:38:41.65ID:uSdVLyN2そういう人なら他の何を犠牲にしてでも使わないくらい平気でするだろう
0835デフォルトの名無しさん
2015/06/27(土) 18:06:21.84ID:wVo6Igiicopy or move”コンストラクタ”が抜けてた一番大事な所
0836デフォルトの名無しさん
2015/06/27(土) 19:16:39.28ID:tGfycaEq0837デフォルトの名無しさん
2015/06/27(土) 19:33:08.02ID:RP+B0MK90838デフォルトの名無しさん
2015/06/27(土) 19:38:41.04ID:tGfycaEq0839デフォルトの名無しさん
2015/06/27(土) 19:40:50.12ID:RP+B0MK90840デフォルトの名無しさん
2015/06/27(土) 21:07:40.13ID:K06hVkJEもうc++には戻りたくないわ。
javascriptは何でもかんでも代入できるし、nullやundefinedな変数があっても
気にせず実行出来るし楽チンでいいわ。
c++もそう成れば良いのになあ。
0841デフォルトの名無しさん
2015/06/27(土) 21:21:22.45ID:e2zMBxYg0842デフォルトの名無しさん
2015/06/27(土) 21:47:02.42ID:RP+B0MK9気にするとき使うのがC/C++
ハングリー精神を知らずに育ちぶっ壊れた金銭感覚してるボンボンが
ときどき闖入してひとしきり暴れて去って行く職人の工房に喩えやすい
そのとき狙われやすいのがnew
0843デフォルトの名無しさん
2015/06/27(土) 22:58:06.17ID:CJnS6alp何が嫌ってあのスタイル他の言語にほとんど応用効かん
Nodeのソースコードなんて吐き気する
0844デフォルトの名無しさん
2015/06/27(土) 23:16:57.69ID:tGfycaEqstd::stringをformatできるライブラリありませんか?
boostは遅くて使い物になりません。
多分コピーするからだとおもいます
std::string s = boost::format(
~~
0845デフォルトの名無しさん
2015/06/27(土) 23:18:03.65ID:e2zMBxYg0846デフォルトの名無しさん
2015/06/27(土) 23:22:57.63ID:RP+B0MK9つstd::stringstream
845も言っているようにC++11以後はムーブセマンティクスがあるので
テンポラリからのコピーはしなくなった
そこがネックと思っているおまえの頭が使い物になっているかチェックしろ
0847デフォルトの名無しさん
2015/06/27(土) 23:35:10.71ID:tGfycaEqコピーしているかどうかなんか問題ではありません
遅いことが問題であって、速いライブラリありませんか?という質問です
みなまで言わせないでください。
よく「一から十まで教えないとできないの?」とか言われるでしょ
0848デフォルトの名無しさん
2015/06/27(土) 23:38:37.66ID:nyq9mOqM0849デフォルトの名無しさん
2015/06/27(土) 23:47:31.42ID:eNvk9NzQQの炎上学習法だぞ
0850デフォルトの名無しさん
2015/06/27(土) 23:49:38.29ID:tGfycaEq0851デフォルトの名無しさん
2015/06/27(土) 23:49:42.05ID:RP+B0MK9> たぶんコピーするからだとおもいます
こう言ったのはおまえだぞ
マイナス十をほざいたのはおまえだぞ
死ねとはっきり言われないとできないのか?
0852デフォルトの名無しさん
2015/06/28(日) 00:05:13.89ID:z/1IIDkq0853デフォルトの名無しさん
2015/06/28(日) 02:01:03.78ID:G1fmyMIp0854デフォルトの名無しさん
2015/06/28(日) 02:09:25.84ID:h2M+2bNV0855デフォルトの名無しさん
2015/06/28(日) 02:36:16.89ID:j0ev9jQeがC++11からコピーしなくなったって?
猫に小判、無知にC++11コンパイラ
0856デフォルトの名無しさん
2015/06/28(日) 03:05:38.03ID:z/1IIDkq0857デフォルトの名無しさん
2015/06/28(日) 03:12:02.99ID:rotd9Dcd03時代からsに直接構築されるから関係ないって話でしょ
0858デフォルトの名無しさん
2015/06/28(日) 03:54:05.56ID:z/1IIDkq0859デフォルトの名無しさん
2015/06/28(日) 10:32:33.24ID:4/kUOOOQstruct String
{
String(const char*);
private:
String(String const&);
};
String a = "";
おまえVCに騙されてるだろw
0860デフォルトの名無しさん
2015/06/28(日) 11:23:20.22ID:5FazHgOKおまえコンパイラに騙されてるだろ
http://melpon.org/wandbox/permlink/cSaQJHHfoIxihtzG
0861デフォルトの名無しさん
2015/06/28(日) 11:26:18.73ID:4/kUOOOQブーメラン投げてんじゃねえよw
unko(unko const &) = delete; //{ std::printf("copy\n"); }
0862デフォルトの名無しさん
2015/06/28(日) 12:01:49.15ID:7lniKfSsC++98時代から実質的にコピーされないことに変わりないという話を、
「コピーしない」という同じ日本語表現で言い合っているのがアスペだな。
0863デフォルトの名無しさん
2015/06/28(日) 12:29:56.26ID:XsTSGkpW>859のエラーはcopy elisionを行った際の
規格12.2p1の要求によるもので
コピーは発生していないと解釈するのべき
『all the semantic restrictions shall be respected』
0864デフォルトの名無しさん
2015/06/28(日) 13:29:24.35ID:4/kUOOOQ解釈するのべきじゃねえだろ
String format(int a)
{
String c("c"), d("d");
if(a) return c;
else return d;
}
0865デフォルトの名無しさん
2015/06/28(日) 14:13:38.78ID:xQ1QrflY0866デフォルトの名無しさん
2015/06/28(日) 14:25:42.27ID:4PA/u/+9駄先輩でC++について詳しいのか知らんが、やたらと規格がどうとか言ってるが
全く装置動かせないw
そんなことどうでもいいから、さっさと運転しろよって言いたい
0867デフォルトの名無しさん
2015/06/28(日) 14:33:07.62ID:4/kUOOOQコード書けないカナーよりマシだ
0868デフォルトの名無しさん
2015/06/28(日) 16:00:31.98ID:4/kUOOOQそういえばその昔
規格がどうとか言わず(言えず)動きゃいい主義な先輩が
エッジトリガーな信号をレベルセンスして後でブーイング浴びてたっけな
0869デフォルトの名無しさん
2015/06/28(日) 16:03:05.50ID:4PA/u/+90870デフォルトの名無しさん
2015/06/28(日) 16:09:42.09ID:4/kUOOOQ規格の話だよ
規格の話に持ち込んだのは866だ
不適切だと思うなら866に言え
0871デフォルトの名無しさん
2015/06/28(日) 16:10:45.49ID:4/kUOOOQ窮したやつが揚げ足とれそうなところって限られてるからな
0872デフォルトの名無しさん
2015/06/28(日) 16:11:47.94ID:8y2XT/gF要求されたことと違うことを自分の思いこみで作ってしまう残念な人は規格を軽視して適当なプログラムを作りがち
と言いたいのだろう。
マ板でやれと言いたい。
0873デフォルトの名無しさん
2015/06/28(日) 16:12:15.00ID:vjkUYG/A0874デフォルトの名無しさん
2015/06/28(日) 16:20:40.06ID:4PA/u/+9文句は>>863に言え
0875デフォルトの名無しさん
2015/06/28(日) 16:32:05.63ID:4/kUOOOQ863はC++の話をしてるんだが
おまえには違って見えたのか?
0876デフォルトの名無しさん
2015/06/28(日) 16:33:10.20ID:4PA/u/+90877デフォルトの名無しさん
2015/06/28(日) 17:10:46.59ID:4/kUOOOQおまえにはどうでもいいのはわかった
俺らには、それこそがどうでもいい
0878デフォルトの名無しさん
2015/06/28(日) 17:19:14.31ID:4PA/u/+90879デフォルトの名無しさん
2015/06/28(日) 17:24:49.47ID:KlxpTm2d0880デフォルトの名無しさん
2015/06/28(日) 17:30:09.46ID:NqiNrH0Uboostなんて比じゃ無い位速い。
昔は正規表現使いたくて、使ってたけど最近は、boostなんて遅い、キモい、メンドいだからな。
0881デフォルトの名無しさん
2015/06/28(日) 17:35:16.56ID:g8B7t7Kj0882デフォルトの名無しさん
2015/06/28(日) 18:07:17.59ID:SolI9ZCS0883デフォルトの名無しさん
2015/06/28(日) 18:21:45.25ID:y0HQ23je0884デフォルトの名無しさん
2015/06/28(日) 18:26:08.96ID:5+tdFZes勉強中ならそら使えんだろ
0885デフォルトの名無しさん
2015/06/28(日) 18:31:51.17ID:o5WpSoWe僅かな優越感を得ることでしか
自己を肯定することができないのです
そっとしておいてください
0886俺はしつこいw
2015/06/28(日) 20:29:24.58ID:4/kUOOOQstd::string s = boost::format()
がC++11からコピーしなくなったって?
猫に小判、無知にC++11コンパイラ
0887デフォルトの名無しさん
2015/06/28(日) 20:38:13.09ID:mzdNGLujかなり昔から規格で許されているが
実装は処理系依存だとオモタ
ソースコードとオブジェクトコードでアルゴリズムを等価に保つ、というのを現実的な処理量でやろうとすると
外部リンケージな関数(どんな副作用があるかわからない)の呼び出しをコンパイラが勝手に削減するとかアリエネー話だったんだけど
C++はある意味アルゴリズムを等価に保つ仕事を放棄して言語仕様業界に水爆級の一石を投じた
0888デフォルトの名無しさん
2015/06/28(日) 21:27:46.44ID:8y2XT/gFアルゴリズムが非決定的なのは初期化の挙動(規格の3.6.2)
とか他にもあるし。
0889デフォルトの名無しさん
2015/06/28(日) 22:01:30.17ID:xC0l4Cw2どうしてこんなにムズいんだぜ
C++で最も難解な文法にオイラの中で認定されました
0890デフォルトの名無しさん
2015/06/28(日) 22:12:12.04ID:5CpBW/i3ムズい文法のほうが
俺スゲーできるじゃん
0891デフォルトの名無しさん
2015/06/28(日) 22:34:37.21ID:lVop4u010892デフォルトの名無しさん
2015/06/28(日) 22:36:05.66ID:4PA/u/+9大学数学より、灘中の算数がガンガンできるほうが
スゲーできるじゃんってならない?
0893デフォルトの名無しさん
2015/06/28(日) 22:39:51.32ID:lVop4u010894デフォルトの名無しさん
2015/06/28(日) 22:41:33.24ID:SH3agkdRアレはあくまで
「受験問題」だから解けたら凄いっていう話
研究と勉強をごっちゃにしちゃいかんよ
0895デフォルトの名無しさん
2015/06/28(日) 22:50:15.07ID:lVop4u010896デフォルトの名無しさん
2015/06/28(日) 22:52:33.58ID:lVop4u010897デフォルトの名無しさん
2015/06/28(日) 22:52:40.93ID:J9LsISiA勝手に内部でいらんことするなよ
0898デフォルトの名無しさん
2015/06/28(日) 23:00:25.25ID:/m0G7Kmk>大学数学
を
>研究
と同一視してる時点でアカデミアに縁ないのバレバレだよ高卒ちゃん
0899俺はしつこいw
2015/06/28(日) 23:00:30.05ID:4/kUOOOQ「変わってしまう」アルゴリズムほど
俺すげーな中二病はちょっと思いつかん
0900デフォルトの名無しさん
2015/06/28(日) 23:08:32.13ID:SH3agkdRそんな文脈の読めない揚げ足取りされても
0901デフォルトの名無しさん
2015/06/28(日) 23:09:43.49ID:8y2XT/gF代用する文法が無いものはどうすんの
string s=f();→string&&s=f();
string s="";→string s("");
f( A() )→?
auto f(){A a; return a;}→?
0902デフォルトの名無しさん
2015/06/28(日) 23:26:14.63ID:PO3P0REAtemplate<template <class T> class U> struct B
{
T b;
U u;
};
って、なにがマズイのしょうか?
0903デフォルトの名無しさん
2015/06/28(日) 23:36:52.34ID:4PA/u/+90904デフォルトの名無しさん
2015/06/28(日) 23:53:36.82ID:8y2XT/gF確認せずに適当に答えると
template<typename T, template<typename t> class a> struct B
{
T b;
a<T> u;
};
0905デフォルトの名無しさん
2015/06/29(月) 08:34:16.30ID:RBuJiewEマズイのは
U u;
正しくは
U<int> u;
もしくは
U<T> u;
としてもよい
0906デフォルトの名無しさん
2015/06/29(月) 08:34:58.20ID:RBuJiewEU<T> u;
はあかんw
0907デフォルトの名無しさん
2015/06/29(月) 18:27:24.21ID:XqthOP/Zhttps://ideone.com/v36RkH
template<class, class...> _Type
とは,_Typeの型仮引数は第二引数,第三引数で補うから,
型仮引数の情報はいらない(形式のみ必要)ので省略している,
_Get_first_parameter<_Type<_First, _Rest...> >
は,部分特殊化を表し,_Typeの型は,_Type<F, R...>ではなく
テンプレ実引数としてあたえられた_Typeとなる.
そしてこの定義は,<_Type<_First, _Rest...> >という形式をとるすべての
_Get_first_paremeterに共有される.
という解釈であってますか?
0908デフォルトの名無しさん
2015/06/29(月) 18:35:58.93ID:XqthOP/Z部分特殊化の部分がおかしくなるから,
必要なテンプレ引数情報が引数三つ〜というより,_Type<F, R...>になるから,
といった感じなんですかね.
0909デフォルトの名無しさん
2015/06/29(月) 19:29:07.25ID:ZS1C/3AC単語を使うようにした奴は誰だよ。
本来のclassと紛らわしいだろ。
0910デフォルトの名無しさん
2015/06/29(月) 19:34:54.89ID:edeVcH9g0911デフォルトの名無しさん
2015/06/29(月) 19:36:55.09ID:90QiI5GE0912デフォルトの名無しさん
2015/06/29(月) 20:33:12.27ID:RBuJiewEそれがな.... 禿...なんだ
0913デフォルトの名無しさん
2015/06/29(月) 22:47:49.00ID:jFniY3ju0914デフォルトの名無しさん
2015/06/29(月) 23:13:20.66ID:y0FiN7DEfriendにするべきなのでしょうか?
下記、二つの違いがわかりません。
struct A{
bool operator==(const A& rhs){ return true;}
friend bool operator==(const A& lhs,const A& rhs){ return true;}
};
0915デフォルトの名無しさん
2015/06/29(月) 23:29:21.31ID:mhfYMs/C左辺値が自身の型以外になるならfriendで
0916デフォルトの名無しさん
2015/06/29(月) 23:32:07.73ID:ZdHOzAPU1 == a みたいなやつ、下のやつならできるけど上のやつはできない
0917デフォルトの名無しさん
2015/06/29(月) 23:35:26.98ID:KCa+kJYy友達にするのは普通、自分以外だ
どっちでも自分のプライベートにアクセス出来るから好きにしたらいいけど
0918デフォルトの名無しさん
2015/06/29(月) 23:47:17.88ID:mhfYMs/C○ 左項
失礼
0919デフォルトの名無しさん
2015/06/29(月) 23:48:13.12ID:j/9Vvva70920デフォルトの名無しさん
2015/06/30(火) 00:37:31.57ID:CHefkucAhttp://www.cplusplus.com/reference/string/string/operator+/
これ見てどう使えるようになるのか考えたらいい
0921デフォルトの名無しさん
2015/06/30(火) 05:14:46.50ID:1FGWQDn1それは禿だけじゃねーべ
0922デフォルトの名無しさん
2015/06/30(火) 07:34:07.22ID:Ewdnk5mnそれを紛らわしいからこう決めた奴はバカって言ってたら…ね
0923デフォルトの名無しさん
2015/06/30(火) 07:47:20.80ID:bPuow3t+0924デフォルトの名無しさん
2015/06/30(火) 21:03:06.08ID:oIqAPu05禿信者はどれだけアタマがいかれてるのか
0925デフォルトの名無しさん
2015/06/30(火) 21:44:50.30ID:9v+w0WGW0926デフォルトの名無しさん
2015/06/30(火) 23:18:20.26ID:fdxBm1REtemplate <
template < class, class > class Type >
struct something
{
Type < int, std::allocator < int > > container;
};
このintを外部から与えようとすると
下記の方法しかないですか?
template <
typename T,
template < class, class > class Type >
struct something
{
Type < T , std::allocator < T > > container;
};
0927デフォルトの名無しさん
2015/07/01(水) 02:21:38.19ID:WHdOzeaxまずその某とやらが何なのか
説明してもらおうか
0928デフォルトの名無しさん
2015/07/01(水) 04:53:05.20ID:enJxQHpBtemplate < template < typename, typename > class Type, typename T >
struct container_type {
typedef Type < T , std::allocator < T > > type;
};
template < typename Container >
struct something {
Container container;
};
something< container_type<std::vector, int>::type > something_inst;
こういう分割とかの話?
0929デフォルトの名無しさん
2015/07/01(水) 10:00:26.37ID:FNDbafIPここ
https://qiita.com/
0930デフォルトの名無しさん
2015/07/01(水) 14:44:34.91ID:D21eOTfg0931デフォルトの名無しさん
2015/07/01(水) 14:49:23.39ID:nBkj9HIl0932デフォルトの名無しさん
2015/07/01(水) 14:50:40.76ID:UI7Zb7Dp雑談場みたいで
0933929
2015/07/01(水) 15:22:56.14ID:FNDbafIPそんな気もしたが、荒らし依頼になりたくなかった
0934デフォルトの名無しさん
2015/07/01(水) 22:06:23.01ID:EE30plWk0935デフォルトの名無しさん
2015/07/01(水) 22:36:43.76ID:9JpXnge6万人が知ってると妄想してる低能は出家した方がいい
0936デフォルトの名無しさん
2015/07/01(水) 23:43:40.09ID:FNDbafIP0937デフォルトの名無しさん
2015/07/02(木) 03:34:02.22ID:0eGuE8Qw文章量が多めのつぶやきって感じでゴミが多い
0938デフォルトの名無しさん
2015/07/02(木) 09:13:39.80ID:B+m7sXir定数になってしまうのですがどうしてこういう仕様にしたんですかね。
0939デフォルトの名無しさん
2015/07/02(木) 09:45:19.80ID:nGREujsRあなたがそうなるように書いたからです
0940デフォルトの名無しさん
2015/07/02(木) 10:02:53.75ID:Y0nozqakならないんだが
0941デフォルトの名無しさん
2015/07/02(木) 10:03:09.77ID:Y0nozqakhttp://ideone.com/AP6KGY
0942デフォルトの名無しさん
2015/07/02(木) 10:38:21.17ID:c4RHuSvYhttp://faithandbrave.hateblo.jp/entry/20070807/1186499965
それはそういう仕様だからRange-based forを使うべき
0943デフォルトの名無しさん
2015/07/02(木) 11:00:26.85ID:Y0nozqakこんなの初めて知った
std::for_each()もC++03では要素を変更しない操作とされていたけど実際はできてたし、
C++11でははっきりと変更可能と書かれた
0944デフォルトの名無しさん
2015/07/02(木) 21:12:59.01ID:Gl0sBIHW0945デフォルトの名無しさん
2015/07/02(木) 22:47:14.97ID:6qHZU/AK0946デフォルトの名無しさん
2015/07/02(木) 23:03:48.89ID:Gl0sBIHW0947デフォルトの名無しさん
2015/07/02(木) 23:08:54.32ID:bYkpTfSh要素変更出来ないのは大抵あらかじめソートされたコンテナとかに対してだろ
0948デフォルトの名無しさん
2015/07/02(木) 23:22:54.12ID:AiijB2ck規格票読んでよ
ISO/IEC14882:2003
§25.1 Non-modifying sequence operations
§25.1.1 For each
ISO/IEC14882:2011
§25.2 Non-modifying sequence operations
25.2.4 For each
どちらも変更しないアルゴリズムに分類されている
変更できるのは規格では保証されてない
でも変更しても未定義の動作とは書いてないので
変更出来るかもしれないし、出来ないかも知れないと取るべき
0949デフォルトの名無しさん
2015/07/02(木) 23:27:05.67ID:bYkpTfSh0950デフォルトの名無しさん
2015/07/02(木) 23:27:41.27ID:AiijB2cktemplate<typename _InputIterator, typename _Function>
_Function for_each(_InputIterator __first, _InputIterator __last, _Function __f) {
// concept requirements __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) __glibcxx_requires_valid_range(__first, __last);
for (; __first != __last; ++__first) __f(*__first); return _GLIBCXX_MOVE(__f);
}
としか書かれてないから要素のコピーではなく要素そのものをデリファレンスしてるよね
処理系によるとしか言えない
0951デフォルトの名無しさん
2015/07/02(木) 23:50:57.68ID:nGREujsREffects: Applies f to the result of dereferencing every iterator in the range [first,last), starting
from first and proceeding to last - 1. [ Note: If the type of first satisfies the requirements of a
mutable iterator, f may apply nonconstant functions through the dereferenced iterator
こんなところ変わってないだろうから03から一緒でしょ
0952デフォルトの名無しさん
2015/07/03(金) 00:13:07.46ID:mft8l0hB(ドヤァ)
ってしといてこれって恥ずかしいな。
間違い(だと思うもの)を指摘するときはこんな恥ずかしい事にならないよう謙虚に言うよう他山の石として気を付けるよ
0953デフォルトの名無しさん
2015/07/03(金) 00:21:13.60ID:9x47oHYvその Note が追加されたのが C++11 から。
http://cplusplus.github.io/LWG/lwg-defects.html#475
0954デフォルトの名無しさん
2015/07/03(金) 00:39:14.22ID:P33eFhD6キタ━━━━━━(゚∀゚)━━━━━━ !!
0955デフォルトの名無しさん
2015/07/03(金) 00:50:17.24ID:zEu43QHg0956デフォルトの名無しさん
2015/07/03(金) 00:53:38.52ID:uO8sjm4v俺はしたことない
0957デフォルトの名無しさん
2015/07/03(金) 00:54:22.74ID:MBHMxnKO規格票なしだとただの雑談になっちゃうんだよ
0958デフォルトの名無しさん
2015/07/03(金) 00:55:23.46ID:X+jFQ+8B規格は大事だよ〜
0959デフォルトの名無しさん
2015/07/03(金) 01:40:50.95ID:UHB4/hePしかし、規格を知らないとどうしてそうなってしまうのか分からないバグもある
0960デフォルトの名無しさん
2015/07/03(金) 02:43:04.80ID:ZzGaWUcQ0961デフォルトの名無しさん
2015/07/03(金) 02:46:20.13ID:MBHMxnKOそういう話ではない
いい加減な発言をするなって話題になってるんだぜ
0962デフォルトの名無しさん
2015/07/03(金) 05:58:31.19ID:ZzGaWUcQ0963デフォルトの名無しさん
2015/07/03(金) 09:03:30.32ID:qS6PMyIR少しはまともな話をしましょう
というかこいつ>>944だろ
論破された事を根に持って荒らしてんじゃねーっつーの
悔しかったら人に文句を言われない書き込みでもしてみろや
とりあえずあぼーんしときますね
>>959
その通りだと思う
また分からず屋が荒らし始めたんであぼーん推奨
こいつは根に持ってしつこく荒らしそうな予感
0964デフォルトの名無しさん
2015/07/03(金) 10:43:04.60ID:jiu6umxAVCのベータテストにも参加したことないのか?
0965デフォルトの名無しさん
2015/07/03(金) 11:34:36.13ID:uO8sjm4vWindowsはβから対応状況見るのに使うがVCはないな
ってかVCのβテスト程度が「コンパイラのテスト」なのかよwww
0966デフォルトの名無しさん
2015/07/03(金) 11:39:52.08ID:YJdeMD7wすこしはまともな話をしましょうといいながら荒らしレス
アスペルガーにもほどがあるなw
0967デフォルトの名無しさん
2015/07/03(金) 12:02:10.60ID:jiu6umxAうん(断言)
とくに現行バージョンの規格違反でストレスを感じていたりすると
今度こそ対応したかどうか、けっこう厳格にチェックするしね
0968デフォルトの名無しさん
2015/07/03(金) 12:05:27.00ID:MBHMxnKO悔しいのう悔しいのう
0969デフォルトの名無しさん
2015/07/03(金) 12:23:40.47ID:uO8sjm4vブラウザーのHTML対応状況しらべるようなもんか。製品版出てからもチェックしないとダメだろうし大変だな・・・
0970デフォルトの名無しさん
2015/07/03(金) 12:50:47.42ID:scPdPWSA今度は「アスペルガー」という言葉の意味も分からずに使ってさらに恥を晒すのか
もうやめような?無知にも程があるぞ?
あ、無知には程がないのか
だから馬鹿にされてどんどん窮地に追い込まれてファビョるしかないわけだ
己の無知さを恥じろ
無知って怖いねえ
限界知らずになるんだから
「アスペルガー」の意味と>>963の発言を対比させて論じてみ
無理だろうけど
0971デフォルトの名無しさん
2015/07/03(金) 16:08:22.48ID:jiu6umxAんで、おかしいの見つけたらきっちりバグ報告もする
とにかくエラッタ欲しいからね
0972デフォルトの名無しさん
2015/07/03(金) 20:22:42.30ID:tI4EZg1z規格を読んでよ
タイトルが不変を彷彿させるだけで不変だなんて書かれていない。
typedefじゃないものをtypedef名と読んだり
Postfix expressionの節を読んだらPostfixじゃない式の説明が書かれてるみたいな引っかけ
0973デフォルトの名無しさん
2015/07/03(金) 20:28:58.57ID:tI4EZg1zその中身を読めば変更可能と分かるはず
0974デフォルトの名無しさん
2015/07/03(金) 21:09:08.93ID:D9WxvNGlお前もしつこいねえ
「不変アルゴリズムに分類されている」とは書いたけど「不変だ」なんて一言も言ってない
ただ規格票に書かれてない以上、C++03の関数オブジェクトで値を変更して反映されなくても
文句は言えないと言ってるんだけど
お前理解力全然足りないな
これがC++11になって", f may apply nonconstant functions through the dereferenced iterator"
とはっきり書かれたので不変アルゴリズムに分類されていようとも必ず変更は反映されると
保証されるようになったわけ
0975デフォルトの名無しさん
2015/07/03(金) 22:59:53.84ID:jiu6umxA中身って実装のことか?
まあ、あの規格票自体そもそも仕様と実装の線引きがブレまくってて、
そういうところは俺も好かんのだが
0976デフォルトの名無しさん
2015/07/03(金) 23:10:52.88ID:ZzGaWUcQ0977デフォルトの名無しさん
2015/07/03(金) 23:32:15.59ID:i5jShfi3デリファレンスしたものを変更して反映されなかったら
それはもはやC++ではない
ここはC++のスレだぞ
0978デフォルトの名無しさん
2015/07/03(金) 23:53:34.75ID:ZNzd5P28どこを読んでそんなことを思ったのか書いてみ
0979デフォルトの名無しさん
2015/07/03(金) 23:54:57.51ID:jiu6umxAそれは operator * が純右辺値を返すことを妨げてはおらんだろ
0980デフォルトの名無しさん
2015/07/04(土) 00:09:05.14ID:T1HfWWftNon-modifying で間違いなかった。
http://www.open-std.org/jtc1/sc22/wg21/docs/wp/html/jan95R1/lib-algorithms.html
> Requires:
> f shall not apply any non-constant function through the dereferenced iterator.
C++98 時点では↑の要求は削除されたものの、分類は Non-modifying のままだったので
仕様として変更していいのかダメなのかは不明確になった。実際のところ変更可能となる
実装が広まっていた。それを受けて C++11 では明確に変更操作も可能であることが明記された。
C++98 から C++11 まで、10年以上も不明確だったんだから、どっちが間違いということも無い。
どっちを否定しようとしても無理筋になる。おちつけ。
0981デフォルトの名無しさん
2015/07/04(土) 00:11:10.81ID:js16kE+m「ソースはNote」とか言ってるアフォは糞して寝ろ
0982デフォルトの名無しさん
2015/07/04(土) 00:20:05.57ID:T1HfWWftそれには同意。 >953 の改定は中途半端だったと思う。
変更操作を許すのが意図されているのであれば、デリファレンスのコピーを取ってそれを関数に
渡すような実装はNoteではない本文の規定によって禁止されるべきだろうと思う。
0983デフォルトの名無しさん
2015/07/04(土) 00:23:18.17ID:wK443U8X【事実】規格ではそれが削除された
【事実】規格では逆参照の結果が渡されることになっている
【事実】改訂時に「変更可能」というNoteが追加された
0984デフォルトの名無しさん
2015/07/04(土) 01:36:30.32ID:VV3jJEnC> 不明確だった
(なんの前提もなしに)変更可能って言ってる奴は明らかに間違ってるわけだが
0985デフォルトの名無しさん
2015/07/04(土) 02:26:14.39ID:jQVKSFplそれくらい買え
0986デフォルトの名無しさん
2015/07/04(土) 06:15:47.45ID:ftwwXgNP0987デフォルトの名無しさん
2015/07/04(土) 07:34:43.40ID:MkaTbGB5C++11では03から特に仕様の変更無し
でもC++03では変更できる保証がありません!
ソースは出せません!!
0988デフォルトの名無しさん
2015/07/04(土) 07:58:09.78ID:l29Ffi6J0989デフォルトの名無しさん
2015/07/04(土) 08:07:59.43ID:23HCzMnD0990デフォルトの名無しさん
2015/07/04(土) 08:19:36.14ID:negZyq4J0991デフォルトの名無しさん
2015/07/04(土) 09:39:08.72ID:G5g709D9http://peace.2ch.net/test/read.cgi/tech/1435970316/
0992デフォルトの名無しさん
2015/07/04(土) 09:43:41.85ID:NrliYMAO0993デフォルトの名無しさん
2015/07/04(土) 12:40:23.19ID:eanKaweg信者はISO規格の代わりにJIS規格票買ったの?
0994デフォルトの名無しさん
2015/07/04(土) 12:46:41.57ID:62UPrMy6コンパイラは英語版の規格票を元に作られています
というか>>993はISO買ったのか?普通に本屋に並んではいるけど
規格票は約3万円ですがISOは9000円ほど出せば買えます
お徳用だろ?
>>993はまさかISOを買ってないのに言ってるんじゃないだろうね?
0995デフォルトの名無しさん
2015/07/04(土) 12:47:27.41ID:62UPrMy6×ISO
○JIS
0996デフォルトの名無しさん
2015/07/04(土) 12:54:05.21ID:8e3bejTi0997デフォルトの名無しさん
2015/07/04(土) 12:55:23.32ID:62UPrMy6JISは不要な部分が多すぎてコスパ悪い
安いのはいいけど
0998デフォルトの名無しさん
2015/07/04(土) 12:55:43.89ID:l29Ffi6J0999デフォルトの名無しさん
2015/07/04(土) 14:16:01.08ID:Gg9PfjwB1000デフォルトの名無しさん
2015/07/04(土) 14:44:29.72ID:5GZwA8ys10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。