トップページ⇒tech
1001コメント275KB

C++相談室 part101

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2013/04/06(土) 16:03:15.86
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part99(実質part100)
http://toro.2ch.net/test/read.cgi/tech/1361435828/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.83【環境依存OK】
http://toro.2ch.net/test/read.cgi/tech/1363154865/

■長いソースを貼るときはここへ。■
 http://codepad.org/
 http://ideone.com/
0002デフォルトの名無しさん2013/04/06(土) 17:29:10.77
>>1乙
なんで誰もスレ立てなかったの?馬鹿なの?
0003デフォルトの名無しさん2013/04/06(土) 18:37:00.54
立てようとしたら、
修行が足りなくてできんかった。
0004デフォルトの名無しさん2013/04/06(土) 18:39:46.85
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京極大学霊長類研究所
0005デフォルトの名無しさん2013/04/06(土) 18:40:08.98
立てようとすら思わなかったぜ
0006デフォルトの名無しさん2013/04/06(土) 18:45:00.27
そういえばチンパンジーのアイって今年の10月で37歳だと。
0007デフォルトの名無しさん2013/04/06(土) 18:58:02.46
なんと、俺より年上だったか
0008デフォルトの名無しさん2013/04/06(土) 19:39:30.02
int a[] = { ... };
int b[] = { ... };

aとbの要素が完全に一致するSTLのアルゴリズム教えてください
配列の長さが異なる場合もあります
0009デフォルトの名無しさん2013/04/06(土) 19:53:20.27
all_ofかなと一瞬思ったが違うか
0010デフォルトの名無しさん2013/04/06(土) 19:58:55.58
end(a) - begin(a) == end(b) - begin(b) && equal(begin(a), end(a), begin(b))
0011デフォルトの名無しさん2013/04/06(土) 20:09:50.73
STLつかうと一気に実行ファイルサイズが10倍に?!

環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない

すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。

C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?

#include <stdafx.h>
後死ね。

言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
0012デフォルトの名無しさん2013/04/06(土) 20:11:55.35
>>8
std::equal()じゃだめなん
0013デフォルトの名無しさん2013/04/06(土) 20:18:40.00
>>12
esualだと長さが一致してないとダメなのでそこを一気にやってくれる方法が知りたかったです
0014デフォルトの名無しさん2013/04/06(土) 21:08:27.04
確かにこういう場合分けが必要だしなあ

int main()
{
int a[] = {1, 10, 3, 5, 6, 5, 2, 9};
int b[] = {1, 10, 3, 5, 6, 5, 2};

int len_a = sizeof(a) / sizeof(a[0]);
int len_b = sizeof(b) / sizeof(b[0]);

bool eqb = (len_a == len_b) ? std::equal(a, a + len_a, b) : false;

std::cout << "a[]とb[]は" << ((eqb) ? "等しい" : "等しくない") << std::endl;
}
0015デフォルトの名無しさん2013/04/06(土) 21:44:23.12
>>13
コンテナだと要素数を事前に知れるけど、配列はそうは行かないじゃん
文字列のように'\0'終端文字列ならいいけど、そうでないなら自作するしか
0016デフォルトの名無しさん2013/04/06(土) 21:47:09.27
>>14
同じ型に決まってるだろうから
要素数の確認は sizeof(a) == sizeof(b) で十分では。
0017デフォルトの名無しさん2013/04/06(土) 22:03:49.61
>>16
それでもいいけどtemplateにしてstd::equalにガワかぶせようとしたんだ
コンテナも同じ型で同じコンテナならoperator==で比較出来るので便利なんだが
0018デフォルトの名無しさん2013/04/06(土) 22:34:53.87
同じものがほしいだけなら優先する方のサイズ分だけコピーすればいいだけ何じゃ?
余った部分は0うめ?
最初の例が気になるところなんだけど、これ本物もsizeofしても平気なの?
0019デフォルトの名無しさん2013/04/06(土) 22:48:11.19
コンテナはsizeofはC++11からdata()なら行けるんでは
ただしvectorだけだな

STLのようにアルゴリズムを汎用化したければIterator traitsによって
データの長さを取得する方法を場合分けするか、関数の多重定義をするか、
しかしどうして長さの違う物を比較しようと思ったの?絶対一致するはずがないのに
0020デフォルトの名無しさん2013/04/06(土) 22:57:04.96
>>19
長さが一致する場合もあるからです
0021デフォルトの名無しさん2013/04/06(土) 23:39:03.76
STLのstd::equalは比較対象のInputIteratorの長さが十分である事を確認して
呼び出さないと鼻から悪魔だからなあ

ラッパーを作るしかないね
0022デフォルトの名無しさん2013/04/07(日) 00:22:42.67
長さとmemcmpにわけろ
0023デフォルトの名無しさん2013/04/07(日) 00:24:56.76
こんな漢字。
(sizeof(a)==sizeof(b)) && (memcmp(a,b,sizeof(a))==0)
0024デフォルトの名無しさん2013/04/07(日) 01:05:44.31
http://ideone.com/AcLs5d

要するにこういう事っしょ
0025デフォルトの名無しさん2013/04/07(日) 03:42:14.16
>>24
関係ない所で気になったんだけど、
どうしてsize_tにstd::が付いてないのに
コンパイル通るの?
0026デフォルトの名無しさん2013/04/07(日) 03:59:56.31
C++1yではイテレータ4つ取るバージョンのequalも入るとか何とか
0027デフォルトの名無しさん2013/04/07(日) 10:15:18.34
>>25
Cのはstd::なくても通るよ
0028デフォルトの名無しさん2013/04/07(日) 10:32:11.89
>>26
それって二項関数を取るバージョンでしょ?
それはC++03からある(正確にはC++98から)
今C++11の規格票を見たけど2つのbeginとendを取るバージョンはなかった
0029デフォルトの名無しさん2013/04/07(日) 10:32:37.11
>>26
と思ったらC++1yか
まああってもなくてもいいや
0030デフォルトの名無しさん2013/04/07(日) 10:44:59.12
>>27
マクロ以外はstd名前空間に入ると
思うのだが、ソースきぼん
0031デフォルトの名無しさん2013/04/07(日) 10:56:50.37
name.h の形式だとグローバル名前空間にも定義される
cname の形式だとグローバル名前空間にも定義されるかもしれない

17.6.1.1 Library contents
All library entities except macros, operator new and operator delete are defined within the namespace std
or namespaces nested within namespace std. 172
172) The C standard library headers (Annex D.5) also define names within the global namespace,
while the C++ headers for C library facilities (17.6.1.2) may also define names within the global namespace.
0032デフォルトの名無しさん2013/04/07(日) 11:00:44.23
C/C++できる男の人ってかっこいい。
JavaとかC#なんて軟弱者の言語だわ。
0033デフォルトの名無しさん2013/04/07(日) 11:10:16.21
>>31
そもそもsize_tの為のヘッダがinclude
されてないし、cnameも使ってないから
コンパイル通るかは処理系依存だよね?
0034デフォルトの名無しさん2013/04/07(日) 11:10:54.85
<iterator>のヘッダ初めて覗いてみたけど、組み込み型は全部テンプレートが特殊化
でズラズラ並べて定義されてるのね
少しワロタ

ところで構造体の配列とかはどういう扱いになるんだろう?
0035デフォルトの名無しさん2013/04/07(日) 11:12:26.24
>>33
まーな
0036デフォルトの名無しさん2013/04/07(日) 11:33:08.60
>>32
照れるじゃねーか
0037デフォルトの名無しさん2013/04/07(日) 11:33:45.37
        ,,__,,
       /     `、
      /       ヽ
     / ●    ● |
    /l  ''''' し  '''''' |
   /  l   __.   |   
   l  /ヽ_ ` --' _ノ
   \       ̄  ヽ∩
    ⌒l        l三 |
      |        ヽ.__|
0038デフォルトの名無しさん2013/04/07(日) 11:36:25.58
>>36
JAVA信者の煽りに反応するなよ
C++はな、マスターするためには
まず禿げなきゃいけないんだぜ
0039デフォルトの名無しさん2013/04/07(日) 11:39:40.97
あ、だから照ってるのか、すまん
0040デフォルトの名無しさん2013/04/07(日) 11:49:09.98
なにその一人ボケ突っ込み
0041デフォルトの名無しさん2013/04/07(日) 12:00:24.31
>>38-39
おまい、おもろいなw
0042デフォルトの名無しさん2013/04/07(日) 13:50:02.20
C++を学ぶのに一番おすすめのサイトはどこですか?

Cは分かるという前提で。オブジェクト指向はまったくわかりません。
0043デフォルトの名無しさん2013/04/07(日) 13:51:32.82
C++をバリバリつかうお仕事って何がありますか
SEで入社したんですが組み込みでC使ってるらしいのは把握しました
0044デフォルトの名無しさん2013/04/07(日) 13:56:35.59
C++よりCのほうが難易度が高い。
Cが使いこなせるなら特にC++をやる必要はない。
パフォーマンスもC++の方が落ちる。テンプレートなど使用しているせい。
大規模、大人数で開発するとき、パフォーマンスを犠牲にしても保守性を上げるためC++にすることはある。
シビアな速度、メモリ管理が必要ならCかアセンブラ。
0045デフォルトの名無しさん2013/04/07(日) 13:58:12.34
どこを立て読み?
0046デフォルトの名無しさん2013/04/07(日) 14:00:43.08
C++は子供のおもちゃ
Cは職人が命を預けられる道具
0047デフォルトの名無しさん2013/04/07(日) 14:07:05.34
>>44
何かいろんな観点をごっちゃにしたデカイ釣り針だな
0048デフォルトの名無しさん2013/04/07(日) 14:07:06.74
C++は老人のオナニー
Cは老人の残した糞
0049デフォルトの名無しさん2013/04/07(日) 14:08:36.39
Dは新進気鋭の若手
0050デフォルトの名無しさん2013/04/07(日) 14:11:28.69
パフォーマンスと言うのが、実行速度という意味なら、テンプレートでパフォーマンス悪化は起こらない
0051デフォルトの名無しさん2013/04/07(日) 14:12:03.13
Dこそが至極
すべての言語は最終的にDに集約される
0052デフォルトの名無しさん2013/04/07(日) 14:12:56.65
>>50
所詮マクロですもんね
バイナリサイズがでかくなるだけ
0053デフォルトの名無しさん2013/04/07(日) 14:16:35.26
バイナリサイズがでかくなるということはキャッシュ効率が悪くなり遅くなるということ
0054デフォルトの名無しさん2013/04/07(日) 14:17:10.30
C++では性能劣化しないというのが理念だが、それはコンパイラの実装次第であって
現実として、CをC++で完全に置き換える状況にはなっていない。
0055デフォルトの名無しさん2013/04/07(日) 14:17:15.41
>>52
それもほとんどの場合は違うと思うよ。
コンパイル速度が悪化する程度だよ。
0056デフォルトの名無しさん2013/04/07(日) 14:19:26.11
>>53
それは本質がわかってない
テンプレートでバイナリが肥大化するなら、C でも同程度に大きくなる
0057デフォルトの名無しさん2013/04/07(日) 14:43:10.42
超上級者の書いたcが、サイズも小さく性能も高いという点なら同意するけど、
テンプレートというかメタプログラムのいいところは、コンパイルの時点である程度の処理が解決されているので
キャッシュヒットは悪くなったとしても、先読みの有効性が高くなる点なんじゃないだろうか。
限界性能とか意識したことないけど。。。
0058デフォルトの名無しさん2013/04/07(日) 14:47:46.94
>>56
型毎に処理を作るという事を行わなければそうはならないが(qsortみたいに)、
今度は型毎に処理が最適化されないので遅くなるという罠
同じ事をしようと思った場合、Cは基本的にC++より遅いか同等
0059デフォルトの名無しさん2013/04/07(日) 14:51:39.22
fftw(OCamlで生成されたCコードによる最速FFTライブラリ)等を見てると、
テンプレートで頑張ってメタプログラミングするより
コード生成に適した言語でCコードを生成したほうが筋が良さそう
0060デフォルトの名無しさん2013/04/07(日) 14:54:04.28
そこまで速度にこだわるなら
Fortran使った方が
0061デフォルトの名無しさん2013/04/07(日) 14:54:16.73
テンプレートから実体化した関数と、Cで作った関数に違いはないよ。
テンプレートは型パラメータ分の実体化を伴うから、バイナリが肥大化しやすいと言われてる。
でも、それはCでも変わらないよね。
型違いのコードクローンを作るか、マクロ関数化するしかないんだから。
0062デフォルトの名無しさん2013/04/07(日) 14:56:24.17
キャッシュを考えないと遅くて動かないプログラムってどんなのがあるの?ゲームとか?
0063デフォルトの名無しさん2013/04/07(日) 14:56:42.48
>>58
その通り。
0064デフォルトの名無しさん2013/04/07(日) 14:56:57.58
普通コードのキャッシュよりデータのキャッシュの方が重要
コードサイズなんて大したもんじゃない
0065デフォルトの名無しさん2013/04/07(日) 15:00:19.01
そりゃ完全にC with templateとして割り切ったら
Cと同等以上の速度になるんだけど、
実際は標準C++ライブラリを使うなら例外も使うし、
例外を使うならスマポ使いたいし……ってなって
結局はCより肥大化して遅くなってしまう
0066デフォルトの名無しさん2013/04/07(日) 15:01:44.50
>>65
あほか
そんなのは選択したお前の勝手で、言語の優劣とは関係無い
0067デフォルトの名無しさん2013/04/07(日) 15:02:07.72
最近の例外は正常フローだと逆に早くなるが
0068デフォルトの名無しさん2013/04/07(日) 15:02:38.67
>>56
さすがにそれはないんじゃ?
テンプレートの生成するコードハンパないし。
顕著なのはiostreamか?includeしただけでひどいことに
コンテナ系も同じ型であったとしてもやっぱ別々になるし。。。
グローバルにtypedefしたら改善する?
それとも大量のincludeがいけないのだろうか。
0069デフォルトの名無しさん2013/04/07(日) 15:03:00.12
>>65
いやいや
例外を使わない方がエラー処理が肥大化するんだぞ
スマポも全く肥大化しないどころか、
デストラクタのないCはエラー処理が冗長になりがち
0070デフォルトの名無しさん2013/04/07(日) 15:03:28.88
ゴミみたいな機能でも
なんでも揃ってれば素晴らしいという観点でいえば
C++は素晴らしいね
0071デフォルトの名無しさん2013/04/07(日) 15:06:28.05
CとC++のどちらか性能上かはコンパイラの実装次第となるが。
基本的には、徹底してソースコードを調整した場合、性能はアセンブラ > C言語 > C++の順だろ。
0072デフォルトの名無しさん2013/04/07(日) 15:08:01.88
C++が遅いとか妄想で語ってるだけ
基本的にC++のが速い
0073デフォルトの名無しさん2013/04/07(日) 15:08:49.03
と妄想で語るのでした。まる。

まあトイプログラムならC++の方が速いよwww
0074デフォルトの名無しさん2013/04/07(日) 15:09:24.00
一年後出来上がったソフトを比較した結果
C++>C言語>アセンブラの順の速さで動くのだった
0075デフォルトの名無しさん2013/04/07(日) 15:14:37.42
Cの方が速いとすると
それはどこかで安全性を犠牲にしてるだけ
場合によってはセキュリティホールを放置してたり
0076デフォルトの名無しさん2013/04/07(日) 15:14:53.26
実行速度も消費メモリも(コードの行数すらも)C++の完敗ですね

http://benchmarksgame.alioth.debian.org/u64q/benchmark.php?test=all&;lang=gcc&lang2=gpp
0077デフォルトの名無しさん2013/04/07(日) 15:15:38.86
CもC++もそのコンパイラは、アセンブラ(=機械語)に翻訳するわけで、チューニングされたアセンブラに敵うわけはない。
0078デフォルトの名無しさん2013/04/07(日) 15:16:20.68
CとC++で速度差があるとかいってるやつは単なるアホ
0079デフォルトの名無しさん2013/04/07(日) 15:18:52.91
>>68
じゃあさ、同じものをCで作ってごらんよ。
テンプレートだから大きいのではなくて、機能そのものが大きいんだよ。
つまり、それはCとC++の違いではなくて、関数レベルの機能差なだけ。
0080デフォルトの名無しさん2013/04/07(日) 15:20:26.85
iostreamは擁護できない
0081デフォルトの名無しさん2013/04/07(日) 15:21:56.06
速度差はあるのは当然。
いまのC++コンパイラは、Cへのトランスレータではなく、一気にアセンブラ・機械語まで持って行く。
性能はどの程度、コンパイラがチューニングされているかに依存するが、
STLの実装などを見れば汎用性維持のための無駄が多く、同様の処理を直にCで書いたほうが速くなるだろう事は想像がつく。
0082デフォルトの名無しさん2013/04/07(日) 15:22:08.44
>>76
"完"敗?
n-bodyとかは遅い方が勝ってるってこと?
0083デフォルトの名無しさん2013/04/07(日) 15:28:53.93
C++ to C

C++ → Cfront releases → Release 3.0.3
http://www.softwarepreservation.org/projects/c_plus_plus/cfront/release_3.0.3/


Lightweight C++
Lightweight C++は C++に似たプログラミング言語であり、人間が読んで理解できる Cコードに直接変換します。
関数オーバーロード、メンバ関数、継承、ポリモルフィズム(仮想関数)、多重継承、仮想継承、純粋仮想関数、コンストラクタ/デストラクタ、new/delete、単純テンプレートをサポートしています。
http://sourceforge.jp/projects/freshmeat_lwc/
0084デフォルトの名無しさん2013/04/07(日) 15:30:40.95
必要もなくクラスやストリーム使ってるソースでCと比較とか
ベンチマークやってるのなんてこんなのばっかり
0085デフォルトの名無しさん2013/04/07(日) 15:33:22.04
とりあえずI/Oを含んでるベンチマークは信用しない
0086デフォルトの名無しさん2013/04/07(日) 15:33:29.86
必要なく使っているソースで差がでるのだったら必要があって使っているソースでも差があるのではなかろうか?
0087デフォルトの名無しさん2013/04/07(日) 15:34:58.00
必要があればC側にも似たようなコードが増える
0088デフォルトの名無しさん2013/04/07(日) 15:35:26.03
文句があるならコード改良して送りつければよろし
0089デフォルトの名無しさん2013/04/07(日) 15:39:04.64
そんなめんどくさいことするヒマなんてないし
0090デフォルトの名無しさん2013/04/07(日) 15:39:19.14
>>76
うわー、思った以上に差がある。
なーんだがっかり。
0091デフォルトの名無しさん2013/04/07(日) 15:47:45.37
こうやってCに固執する奴が増えれば増えるほど俺の相対的な戦力が上がるんだからむしろ歓迎
0092デフォルトの名無しさん2013/04/07(日) 15:51:08.33
C++使いがクソみたいな言語仕様やライブラリと格闘している間に、
C使いは適当な高級言語とFFIを駆使して
快適にプログラミングしていくのであった……
0093デフォルトの名無しさん2013/04/07(日) 15:58:16.62
FFIって言ってみたかったんですね
わかります
0094デフォルトの名無しさん2013/04/07(日) 16:04:25.63
・なんだかんだ言ってCもC++も高級言語なので、高度に最適化されたアセンブラには勝てない
・しかし、コンパイラの性能は年々向上してるし、第一人間の能力的にソフト丸ごとアセンブラで書くのはまず不可能
・Cに比べてC++の方がライブラリは充実しているので「書きやすい」が、その分複雑になっているので「難しい」とも言える
・「どちらが速いか」「どちらが小さいか」なんてのは条件によってバラバラなのでなんとも言えない
 (C++の方がライブラリを無駄に多くincludeしやすいが、その分Cよりは安全な処理ができる、等)

とりあえずこんなとこか
0095 ◆QZaw55cn4c 2013/04/07(日) 16:10:12.89
>>94
ライブラリをinlucdeする??
0096デフォルトの名無しさん2013/04/07(日) 16:21:47.66
>>95
/usr/includeの中身全部読んでから出直せ
0097デフォルトの名無しさん2013/04/07(日) 16:22:13.83
boostも使った事ねーのか
0098デフォルトの名無しさん2013/04/07(日) 16:26:43.66
これは恥ずかしい。
0099デフォルトの名無しさん2013/04/07(日) 16:29:29.05
>>79
使ってないコードはリンカが取り除くから機能がでかいからといってincludeしてちょっと使うぐらいじゃコードサイズはでかくなっちゃいけない
でも現実にでかくなっているということは機能がでかいんじゃなくてテンプレートがクソだからだ
0100デフォルトの名無しさん2013/04/07(日) 16:33:13.34
早いけど先に地鎮祭しとくのでテンプラよろしく

STLつかうと一気に実行ファイルサイズが10倍に?!

環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない

すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。

C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?

#include <stdafx.h>
後死ね。

言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
0101デフォルトの名無しさん2013/04/07(日) 16:47:46.85
>>97
厳密にはboostにしても、「インクルードするだけのライブラリ」ではない、それを踏まえた上でのくだらない突っ込みでは?

>>96
リンカって知ってる?
0102デフォルトの名無しさん2013/04/07(日) 16:49:07.73
「インクルードするだけのライブラリ」でないのはごく一部だけだろ
大部分は「インクルードするだけのライブラリ」
0103デフォルトの名無しさん2013/04/07(日) 16:55:54.33
>>101
これは恥ずかしい。
0104デフォルトの名無しさん2013/04/07(日) 17:09:53.68
>>83
何これ面白い
早速落として使ってみよう
0105デフォルトの名無しさん2013/04/07(日) 17:10:24.57
また老害Qが湧いてるのか
0106デフォルトの名無しさん2013/04/07(日) 17:12:26.13
JAVAでゲームが書かれる時代に何くだらん議論してんだよ
0107デフォルトの名無しさん2013/04/07(日) 17:51:31.80
一番くだらないのが来ました
0108デフォルトの名無しさん2013/04/07(日) 19:38:30.96
C++でガリガリと大きなプログラムを書けることに優越感を感じます。
0109デフォルトの名無しさん2013/04/07(日) 19:42:23.64
言語を選べる職場なの?
0110デフォルトの名無しさん2013/04/07(日) 19:48:16.97
アルゴリズム検証やプロトタイピングが主なので。
0111デフォルトの名無しさん2013/04/07(日) 19:51:46.90
>>110
それ何て研究室?一般企業ではあり得ないよなあ
0112デフォルトの名無しさん2013/04/07(日) 19:52:59.06
>>104
CfrontはC++処理系の元祖
01131102013/04/07(日) 19:53:09.24
>>111
あれ?そうスか?
普通の電機メーカーです。
0114デフォルトの名無しさん2013/04/07(日) 19:55:58.24
すげえメーカーだなあ
組み込みにC++?
0115デフォルトの名無しさん2013/04/07(日) 19:56:29.20
>>112
C++の表面に出て来ない裏方を見てみたい好奇心で
01161102013/04/07(日) 19:59:44.30
>>114
あ、いや、C/C++で検証したアルゴリズムをFPGAで実装。
めんどい。
0117デフォルトの名無しさん2013/04/07(日) 20:00:14.26
言ってる事がどんどん変わってるなwww
0118デフォルトの名無しさん2013/04/07(日) 20:00:26.55
底辺社畜さんには同情を禁じ得ないけど
それも自分が選んだ道だから
頑張って!
0119デフォルトの名無しさん2013/04/07(日) 20:10:08.81
選びたくて選んだんじゃない
ほかにできる仕事がなかったんだ
0120デフォルトの名無しさん2013/04/07(日) 20:12:24.16
えー、でもプログラムの仕事、楽しいじゃん。
これ以外は考えられないよ。
0121デフォルトの名無しさん2013/04/07(日) 20:16:34.77
それはお前が若いからだ
0122デフォルトの名無しさん2013/04/07(日) 20:16:55.05
コード書くのは好きだからいいんやけどね
書類作ったり営業したりがもう最悪
ニートになりたい
0123デフォルトの名無しさん2013/04/07(日) 20:22:50.29
土方だとつまんないかもだね。
自分で自分の仕事を決められる立場にある人間が、自分で決めて遂行するなら、おもしろそうだな。
0124デフォルトの名無しさん2013/04/07(日) 20:25:46.54
>>122
自分も書類書くの面倒!!
アジャイルプログラミングだ、と(心の中で)言い訳してコードばっかり書いてるw
0125デフォルトの名無しさん2013/04/07(日) 20:26:08.41
大企業の社員さんには出来ない主張も、俺みたいな外部の業者には平気で出来て
それが結構通るから面白い
そんなわけで大概言語は自分で選べてる
0126デフォルトの名無しさん2013/04/07(日) 20:26:38.35
>>123
こんなことできるよ!ってプログラム動かして上の人とか営業さんに見せると喜んでくれるから楽しいよ。
0127デフォルトの名無しさん2013/04/07(日) 20:29:16.95
>>126
おおー、珍しく前向きな意見だね。
0128デフォルトの名無しさん2013/04/07(日) 20:31:28.86
>>127
珍しくw

まー、多くの現場では押し付け的にあれやれこれやれ早くやれで大変だよね・・・。
それも大事だけど、もっとやる気出るようなリーダーシップというか人間性がない人が多いような気がするよ・・・。
悲しいことにね・・・。
0129デフォルトの名無しさん2013/04/07(日) 20:32:03.97
実際は「こんなことーー(1時間経過)ーー出来るよ!」だからな
一瞬で出来ないと営業に出かけてしまう
0130デフォルトの名無しさん2013/04/07(日) 20:33:04.86
>>129
ワロタw
0131デフォルトの名無しさん2013/04/07(日) 20:59:10.83
なぜ客の前でデモすると突然バグるのか
0132デフォルトの名無しさん2013/04/07(日) 20:59:40.09
>>131
法則みたいなもんだw
0133デフォルトの名無しさん2013/04/07(日) 21:00:26.79
そりゃお前、同僚がバグしこんでんだよ。嫌われてんだろうな
0134デフォルトの名無しさん2013/04/07(日) 21:48:02.03
>>131
どう考えてもマーフ(ryだな
0135デフォルトの名無しさん2013/04/07(日) 21:57:10.42
[参考] ベンチマーク - FOR-NEXT10億回ループ ver1.04 page 1/2

(表1)ベンチマークテスト結果(数字が小さいほど速い)

                        MASM32 Visual  Visual  Visual  Java   Dark   AGK   Basic4GL 99BASIC
                              Basic  C++   C#   Script  BASIC
----------------------------------------------------------------------------------------------------
PC(CeleronD2.66GHz)[sec]       0.7828  2.445  2.821   3.973   7.772  20.853  65.423  285.703  1532.0
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MASM32を1とする相対倍率        1.0   3.123  3.604   5.076   9.928  26.638   83.575  364.975  1957.0
----------------------------------------------------------------------------------------------------
Nexus7(Tegra3)1.3GHz[sec].       -----   -----  -----  -----  36.480 -----   320.18   -----   -----
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MASM32を1とする相対倍率.       -----   -----  -----  -----  46.601 -----   409.01   -----   -----
----------------------------------------------------------------------------------------------------
iPhone4S(Cortex-A9)800MHz[sec]  -----   -----  -----  -----  36.521 -----   (※注)  -----   -----
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MASM32を1とする相対倍率        -----   -----  -----  -----  46.654 -----   (※注)  -----   -----
----------------------------------------------------------------------------------------------------
(※注)iPhone版AGKターゲットエミュレーターはビデオストリームのため除外。
0136デフォルトの名無しさん2013/04/07(日) 21:57:49.08
[参考] ベンチマーク - FOR-NEXT10億回ループ ver1.04 page 2/E

(表2)ランキング表(数字が小さいほど速い)

                    開発環境     タイム  MASM32を1とする
                              [sec]      相対倍率
-----------------------------------------------------------------
PC(CeleronD2.66GHz).      MASM32.     0.7828         1.0
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PC(CeleronD2.66GHz).      Visual Basic.   2.445          3.123
PC(CeleronD2.66GHz).      Visual C++    2.821          3.604
PC(CeleronD2.66GHz).      Visual C#      3.973       5.076
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PC(CeleronD2.66GHz).      JavaScript    7.772         9.928
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PC(CeleronD2.66GHz).      DarkBASIC   20.853         26.638
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Nexus7(Tegra3)1.3GHz      JavaScript.   36.48         46.601
iPhone4S(Cortex-A9)800MHz JavaScript.   36.521         46.654
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PC(CeleronD2.66GHz).      AGK       65.423         83.575
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PC(CeleronD2.66GHz).      Basic4GL.   285.703       364.975
Nexus7(Tegra3)1.3GHz      AGK.      320.187       409.01
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PC(CeleronD2.66GHz).      99BASIC.   1532.0         1957.0
-----------------------------------------------------------------
0137デフォルトの名無しさん2013/04/07(日) 22:21:37.70
>>135-136
これいつ測ったベンチなんだよ……比較対象がBASICって……
単なる空for文なら最適化で消されかねないから何か書いたんだろうけどそれは一体何……
そもそもソースが提示されていない時点で再テストすらできない……
0138デフォルトの名無しさん2013/04/07(日) 22:43:42.73
典型的なベンチマーク厨
0139デフォルトの名無しさん2013/04/07(日) 22:49:13.92
[参考] ベンチマーク - FOR-NEXT10億回ループ(CeleronD2.66GHz)

Visual C++ - 2.821秒(ループ回数を100倍にしてタイムを100で割った数字)

#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[]) {
 int j,k;
 printf("START\n");
 for(k=0; k<100; k++) { for(j=0; j<1000000000; j++) {} }
 printf("END\n");
 return 0;
}
0140デフォルトの名無しさん2013/04/07(日) 22:55:16.07
あ、ソース等見つけた。ここが元ネタか……
http://kohada.2ch.net/test/read.cgi/pcnews/1365242417

でもループだけって……せめて行列計算とかさせろよと
0141デフォルトの名無しさん2013/04/07(日) 23:27:47.29
俺の環境では
 C++ 259ms
 C# 2748ms
 VB 3817ms

auto v = 0ULL;
auto st = std::chrono::system_clock::now();
for ( auto i = 0; i < N; i++ ) {
 for ( auto j = 0LL; j < 1000000000LL; j++ ) {
  v += j;
 }
}
auto et = std::chrono::system_clock::now();
0142デフォルトの名無しさん2013/04/07(日) 23:29:31.35
>>141
やっぱC++はすげぇぜ・・・。
スーパーサイヤ人だな。
0143─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/07(日) 23:30:47.19
>>141
ベンチマークで余計な最適化やると意味ないよw
01441412013/04/07(日) 23:35:30.56
>>143
最適化外したら意味ないでしょ。
最初、debug=3秒、release=0秒になったから
仕方なくv+=jを加えてvの結果を出力
するようにしたらこうなった。
vの計算結果が表示されてるからループは
してる筈。
0145─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/07(日) 23:37:44.94
>>144
Nって何の数字だ?

適当に書いてもちゃんと見てるぞw
0146─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/07(日) 23:41:03.05
autoも怪しいなw
0147─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/07(日) 23:50:46.07
[参考] ベンチマーク - FOR-NEXT10億回ループ(CeleronD2.66GHz)

MASM32 - 0.7828秒(ループ回数を100倍にしてタイムを100で割った数字)

      fn     MsgboxI,hWin,"START",ustr$(eax),MB_OK,500
      MOV  EBX,100
SELF2: MOV  ECX,1000000000
SELF:   LOOP SELF
      DEC  EBX
      JNZ   SELF2
      fn     MsgboxI,hWin,"END",ustr$(eax),MB_OK,500
- - - - - - - - -

フツーにこれより速くなるコトはないからなw

ネタは挙がってんだぜ?w”
0148─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/07(日) 23:51:40.27
ALIGN 16ぐらい付けても変わらないとは思うけどなw
01491412013/04/08(月) 00:05:49.31
>>147 はいはい。Visual C++ 2012, Core-i7 3632QM 2.2GHz
#include <cstdio>
#include <chrono>
static const int N = 10;
int main() {
auto v = 0ULL;
auto st = std::chrono::system_clock::now();
for ( auto i = 0; i < N; i++ ) {
for ( auto j = 0LL; j < 1000000000LL; j++ ) {
v += j;
}
}
auto et = std::chrono::system_clock::now();

std::printf("%llu\n", v);
std::printf("%.1fms, %.1f ms\n",
std::chrono::duration_cast<std::chrono::milliseconds>(et - st).count() * 1.0,
std::chrono::duration_cast<std::chrono::milliseconds>(et - st).count() * 1.0 / N);
std::getchar();
}

Nが一桁間違えてたけど
平均取るための回数だから大目に見てね。
そちらより時間が短いのは実行環境の違いであって、
同一環境でアセンブラよりC++が速いなんて言わないよ。
ただベンチは64ビットでやろうよ。
0150─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/08(月) 00:11:19.33
>>149
Nが整数ってのは怪しいなw
floatで取れw

3632QMって…あ、聞いちゃ不味かったかw
0151デフォルトの名無しさん2013/04/08(月) 00:13:45.65
ワッキーちゃん芝刈り機の出番
0152─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/08(月) 00:16:57.09
3632QMってPassMarkで7000、CeleronD2.66GHz(260)の27倍か。

つまり… C++ 259ms → *27 = 6.993秒w

PC(CeleronD2.66GHz).      Visual C++    2.821          3.604

…何やってんだかw
0153─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/08(月) 00:17:56.23
こういう時は計算の速い俺の方が有利だからなw
0154─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/08(月) 00:21:19.12
CPUメーター付けてないと内部動作見えてないかもな…。
0155デフォルトの名無しさん2013/04/08(月) 00:42:34.85
>>152
あいやーだな
0156デフォルトの名無しさん2013/04/08(月) 00:56:27.85
>計算の速い俺の方が有利だからなw
ワロタ
一定の条件下での言語比較なのに
俺の方が有利とか何だよw
0157デフォルトの名無しさん2013/04/08(月) 01:34:21.28
>>147は>>139と等価な処理じゃないから正しい比較になってないよ(>>147は減算して0との比較)
この流れは処理結果が同じなら異なるロジック・アルゴリズムで比較してもいいというものではないよね
0158デフォルトの名無しさん2013/04/08(月) 01:51:31.09
今ホットなベンチ
・びす太で実行
・今時セレロンD
・まさかの空ループ ←ポイント
・最適化は無しで
0159952013/04/08(月) 03:21:41.12
普通なことを普通に書いても‥‥
とか、具体的に
行列計算で普通にfor() を使って書いても‥‥
とか何か目的、いやデモしたい、デモして皆に見せびらかしたい理由とかあるよね、普通。そこんとこはっきりさせてよ、なぜ言語別でデモするのかさぁ
CPUを新しいのがいいね最低でも砂橋とかネハでもいいけどさ

変なのつれて来てごめんね
0160─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/08(月) 05:21:52.56
>>155-158
まず1回でまとめて書く癖を付けようw
ムダだから(笑)

>(>>147は減算して0との比較)

よく気が付いた、感動したw

>今ホットなベンチ
>・びす太で実行
>・今時セレロンD
>・まさかの空ループ ←ポイント
>・最適化は無しで

誰かさんの安物3632QM(←まずありえないw)には負ける(アハ♪”
0161デフォルトの名無しさん2013/04/08(月) 05:35:29.82
また痛いのが常駐してるな…
0162─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/08(月) 05:38:59.23
んー、DarkBASICよりVC++の方が速いと言う結果だから仕方ないな。

ここに常駐してVC++を学習してやろう(笑)

# 俺がちゃんと吟味してやる(ゲラゲラ
0163デフォルトの名無しさん2013/04/08(月) 06:53:51.73
>>160 >>162
>>159
0164デフォルトの名無しさん2013/04/08(月) 07:41:01.52
コンソーレのキチガイは巣に帰れよ
0165デフォルトの名無しさん2013/04/08(月) 07:56:34.74
マをしてるとこういう精神状態になることもしばしばあるだろう
0166デフォルトの名無しさん2013/04/08(月) 08:13:05.55
ねーよ
一緒にしてくれるな
0167 ◆QZaw55cn4c 2013/04/08(月) 08:28:28.42
>>162
>ここに常駐してVC++を学習してやろう(笑)
君にC++を理解できるかな
成果を期待しているよ
0168デフォルトの名無しさん2013/04/08(月) 18:01:40.60
> ライブラリをinlucdeする??
とか言ってるクソ野郎のいう事じゃないな。
0169デフォルトの名無しさん2013/04/09(火) 00:06:56.08
CPUメーターがどうのとか言ってたり、別のベンチマークの結果を使って実行時間に掛け算してたりしてて、
なんじゃこりゃ、って思ってたんだが、単なる基地外か。まじめに考えて損した。
0170デフォルトの名無しさん2013/04/09(火) 08:34:27.67
他人の作ったCプログラム(C++ではない)を適当なnamespaceに閉じ込める簡単な方法ないでしょうか

namespace foo
{
#include "foo.c"
}

だけで大丈夫なんでしょうか
0171デフォルトの名無しさん2013/04/09(火) 11:51:53.45
>>170
それでコンパイルとリンクが通ればok
通らなければ諦める
0172─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/09(火) 22:38:35.28
なるほどな、スコープ(”::”)ってグローバル変数なんだな。

始めからそう書けば分かりやすいw
0173デフォルトの名無しさん2013/04/09(火) 22:40:08.76
>>172
プッ、そんなことも知らないのかwww
0174─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/09(火) 22:44:13.38
>>173
たぶん概念は知ってるけど専門用語が違うからC++のマニュアルを見てもサッパリ分からんw

おまえみたいにまったく知らない方が覚えやすいかもな(笑)
0175デフォルトの名無しさん2013/04/09(火) 22:45:58.40
C++でなくてCに出来る関数は別ファイルにしてCとして分割コンパイルした方が速くなるのだろうか

hoge.c
hoge.cpp

に分けるか
全部

hoge.cpp

のファイルにまとめてC++としてコンパイルするか?
0176─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/09(火) 22:50:16.24
>>175
CにあってC++にないものと言えば?
0177デフォルトの名無しさん2013/04/09(火) 23:24:27.14
>>175
名前空間くらい使おうぜ
0178デフォルトの名無しさん2013/04/09(火) 23:26:58.28
>>176
restrictポインター
複素数三角関数
0179─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/09(火) 23:54:41.21
>>178
restrictポインターって用途が思い浮かばないけど、マルチタスク処理で使えそうだな。
他のタスクで使ってる変数領域をロックする場合とか。

複素数はマニア以外使わないと思う。
0180デフォルトの名無しさん2013/04/09(火) 23:57:20.02
179 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
0181デフォルトの名無しさん2013/04/10(水) 00:27:45.79
複素数なんてごく日常的に使ってるんだが
なんなの?このバカ
0182デフォルトの名無しさん2013/04/10(水) 00:31:13.89
複素数三角関数なんて
指数関数と三角関数の組み合わせで
簡単に実装できるがな
0183デフォルトの名無しさん2013/04/10(水) 00:38:31.32
>>182
それはアセンブラあればcは要らない
ぐらいのアホな発言
0184デフォルトの名無しさん2013/04/10(水) 00:43:52.05
簡単に実装できる2、3個の関数の有無なんて誤差の範囲だよ

指数関数と言うか、双曲線関数だったっけか
0185─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/10(水) 00:48:38.73
逃げ切れそうにないなw
0186デフォルトの名無しさん2013/04/10(水) 00:55:19.46
まったくだ。
変数とgoto有れば構造体も関数も要らない。
アセンブラ最強。
0187デフォルトの名無しさん2013/04/10(水) 01:38:42.96
Web系であんまりC++触る機会なかったんだけど
勉強がてらnodeかブラウザのコード読みたいと思ってるんだが何がいいだろう
モダンな実装という噂の v8, nodeのコアのlivuvあたりを考えてたんだが重すぎる気がする

コードベース少なくて参考になるのって言ったらどれがお勧めですか
3000行より短いぐらいがいい
0188デフォルトの名無しさん2013/04/10(水) 01:41:31.52
3000行以下とか読んだうちにはいんねーよ
0189デフォルトの名無しさん2013/04/10(水) 02:41:50.68
boost読めば
0190─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/10(水) 06:50:15.17
>>187
我流でやった方がいいよ。

つーか、俺は今からそうするけどw

会社で決められたコーディングとかインデントスタイル(笑)とか指定されてる場合は会社の言うとおりにしておく。
0191デフォルトの名無しさん2013/04/10(水) 09:34:27.25
>>190
あ、それ同意。
所詮会社ごときで本気を出す必要はない。
0192─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/10(水) 09:38:54.35
>>191
サラリーマンは変わったヤツが多いからなw

アセンブラでインデント付けろとか言う会社は早く辞めたほうがいい(笑)
0193デフォルトの名無しさん2013/04/10(水) 09:43:52.27
>>192
>アセンブラでインデント付けろとか

そいつ有名な某氏だろw
0194─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/10(水) 09:47:12.78
>>193
どこにでもいそうな変わり者レベルってなところかw

あとFORループ外してコピー&ペーストで1024個並べるヤツとか…w”
(フツーにマクロで書けよw)
0195デフォルトの名無しさん2013/04/10(水) 09:49:02.90
>>194
こういうのは?

仕様が60fpsなのに最適化できないから30fpsに仕様変更するとか。
0196デフォルトの名無しさん2013/04/10(水) 09:54:44.43
stlに複素数あるけど
あれってsin cosできないの?
0197デフォルトの名無しさん2013/04/10(水) 10:59:20.72
>>196
C++11の規格準拠ならオーバーロードされてるはずだが(26.4.8)別の話なのかな?
0198デフォルトの名無しさん2013/04/10(水) 14:39:07.51
C++98のころからあったような
0199デフォルトの名無しさん2013/04/10(水) 14:42:53.33
http://www.cplusplus.com/reference/complex/
0200デフォルトの名無しさん2013/04/10(水) 14:47:56.66
http://en.cppreference.com/w/cpp/numeric/complex
0201デフォルトの名無しさん2013/04/10(水) 15:45:52.68
なにげにC99は数学関数充実させてるな
FPUでネイティブサポートされてないから自作しても大して変わらんけど
0202─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/10(水) 17:02:34.15
>>195
いわゆる ” 糞ゲー ” の典型的なパターンだなw

ムダな背景外してでも60fpsにすべきだろうな。

まあ、30fpsとか言い始めた時点で億単位のプロジェクトは赤字確定。
(結構頭がアレなヤツ多いからなw)
0203デフォルトの名無しさん2013/04/10(水) 17:16:54.07
ワロタ
0204デフォルトの名無しさん2013/04/10(水) 17:17:30.67
>>202
自己紹介乙
というか無職だったなお前
0205─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/10(水) 17:33:46.72
>>204
別におまえに向けて書いたつもりじゃあないんだけどな…あ、思い当たるフシがあるんだろうな(ゲラゲラ
0206デフォルトの名無しさん2013/04/10(水) 19:13:47.89
コンソーレは質問スレならデカい顔が出来る!って判断したのかw邪魔だから死ねよw
0207デフォルトの名無しさん2013/04/10(水) 19:15:30.97
キチガイ糞コテに構うなよ
0208─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/10(水) 19:21:58.88
おまえらみたいなザコキャラはどうでもいいからw
0209デフォルトの名無しさん2013/04/10(水) 20:04:07.60
よおキチガイニート
病室から抜け出すなよ(笑)
0210─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/10(水) 20:08:13.32
>>209
外の世界にいるのが俺で、中にいるのがおまえだよw

長いコトいるとそっちが外の世界になるんだろうけどさ(ゲラゲラ
0211デフォルトの名無しさん2013/04/10(水) 20:34:02.72
つ[鏡]
ったく一日中どこから書いてんだよ
スマホからってのはなしで
0212─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/10(水) 22:20:11.48
架空のキャラに大人気だなw
0213デフォルトの名無しさん2013/04/10(水) 22:36:12.25
ここもゴミコテの隔離スレになったか
0214デフォルトの名無しさん2013/04/10(水) 22:57:26.49
またスレが一つ死んだ
逝こうここもじき腐海に沈む‥‥‥
0215─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/10(水) 22:57:36.45
まずゴミスレを自覚しようなw
0216デフォルトの名無しさん2013/04/10(水) 23:07:45.78
透明あぼーんしとけよ
いないのと同じになるから
0217─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/10(水) 23:44:00.96
アハアハ〜♪”
0218デフォルトの名無しさん2013/04/10(水) 23:48:46.37
あぼーんしたらすっきりした
ゴミは視界に入れないに限る
0219─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/10(水) 23:49:36.56
弱虫w
0220デフォルトの名無しさん2013/04/11(木) 00:13:02.85
YouTubeみたいな動画共有サイトを作りたいと思っているのだが、
まず、どんなことから勉強すれば良いのかすら分からない。
なので、YouTubeみたいな動画共有サイトを作るためには、
どんなことを勉強しないと駄目なのかを全て教えてください。
0221─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/11(木) 00:58:29.00
レベル落ちたなw
0222デフォルトの名無しさん2013/04/11(木) 01:02:06.98
>>220
ffmpegの使い方とWeb用の開発言語だな。PHPとかHTML5とか。C++で特に何も書かなくても作れると思うよ。
0223デフォルトの名無しさん2013/04/11(木) 01:02:30.78
こいつはいくつマルチするんだろう・・・
0224デフォルトの名無しさん2013/04/11(木) 01:15:42.75
>>222
ハードとソフトとネットワークの高度な知識はいるだろ。
YouTubeはメチャクチャ負荷が高い。
それをいかに低減させていくかが重要課題。
0225デフォルトの名無しさん2013/04/11(木) 02:05:42.58
>>224
YouTube並のサイトを作るって話なの?>>220の質問レベルからして、身内向けに動画をアップしたら勝手にエンコしてブラウザで見れるサイトを作りたい、とか
そういうレベルかと勝手に思っちゃった。
動画の取り扱いは、キリないよね。色々工夫しないと難しい問題ばっかり。
0226デフォルトの名無しさん2013/04/11(木) 02:07:51.81
コイツが動画サイト作れるようになるころには数百MBの動画くらいなら画像のように送れるようになってるよw
0227デフォルトの名無しさん2013/04/11(木) 13:14:13.66
>>225
YouTubeを(プライベート設定で)使えよ。
0228デフォルトの名無しさん2013/04/11(木) 15:39:01.95
>>227
それ自分に言われてもなあ…
0229デフォルトの名無しさん2013/04/11(木) 22:05:35.16
>全て教えてください
こんなこと言う奴が本気で訊いてる訳なし
0230デフォルトの名無しさん2013/04/11(木) 22:13:08.05
ネタにマジレスする必要ないでしょ
だいたいスレ違い、というか板違いだし

「金払って業者に作ってもらえアホ」位の返事がちょうどよろしいかと
0231デフォルトの名無しさん2013/04/11(木) 22:30:25.78
まぁプログラムだけの問題じゃないからなぁ
0232デフォルトの名無しさん2013/04/11(木) 22:35:04.07
基地害御用達の糞スレ
0233デフォルトの名無しさん2013/04/11(木) 23:03:43.78
C++erはキチガイ
0234デフォルトの名無しさん2013/04/11(木) 23:04:58.09
c++自体が基地外オナニー言語。
0235デフォルトの名無しさん2013/04/11(木) 23:10:44.18
褒め言葉だからそれ
0236デフォルトの名無しさん2013/04/12(金) 05:30:13.98
>>220
真面目に答えよう。初歩の初歩としてWebサーバー構築とは、どういうものかが判らないと無理だ。
そして、Webで調べずにここで聞いてる時点で君が、その目的を達成できることはないだろうと想像できる。
0237デフォルトの名無しさん2013/04/12(金) 08:09:45.75
>Webで調べずにここで聞いてる時点で君が、その目的を達成できることはないだろう
まさに的確な指摘だな。

ここで聞いてても答えが出てくるわけないもんな。素人しかいないから。
0238デフォルトの名無しさん2013/04/12(金) 10:19:18.90
windef.hで#define maxとかホント死んでくれ・・・
0239デフォルトの名無しさん2013/04/12(金) 21:11:34.40
まぁでも自分が死んじゃったほうがずっと早いよ
0240片山博文MZパンク ◆0lBZNi.Q7evd 2013/04/12(金) 21:27:46.06
#include <windows.h>
#undef max
#undef min
0241デフォルトの名無しさん2013/04/12(金) 21:46:30.10
>>240 ← 嘘つきなので初心者はまずこいつをNG設定しましょう
0242デフォルトの名無しさん2013/04/12(金) 21:48:32.39
#if 初心者
#undef >>240
#endif
0243デフォルトの名無しさん2013/04/12(金) 22:11:27.96
>>240
結局そうした
他にいいやり方があったら教えてくれ頼む
0244片山博文MZパンク ◆0lBZNi.Q7evd 2013/04/12(金) 23:18:43.92
#include <windows.h>
...
#include "unmaxmin.h"
...ここでSTLのmax/minを使う...
#include "maxmin.h"
...ここでWin32のmax/minを使う...

"maxmin.h"と"unmaxmin.h"の中身は自分で考えよう
0245デフォルトの名無しさん2013/04/12(金) 23:29:16.30
>>243
#define NOMINMAX
とか
0246デフォルトの名無しさん2013/04/12(金) 23:33:42.47
とかじゃなくてmin/maxがdefineされてない弊害を消す効力もあるかも(将来なるかも)しれないわけだから
NOMINMAXしか選択肢は無いよ
0247デフォルトの名無しさん2013/04/12(金) 23:46:05.59
そもそもなんでmin/maxがマクロで定義されてるんだろうな。
template使うとか考えなかったんだろうか。
0248デフォルトの名無しさん2013/04/12(金) 23:51:40.01
うるさい黙れ!
0249─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/12(金) 23:52:58.06
【社会】 「ら抜き言葉を使う人は、知的レベル低い。採用しない」「ら抜きの方が、可能か受け身かすぐ判るのに」…面接の現場で★4
http://uni.2ch.net/test/read.cgi/newsplus/1365717932/l50

・「R25」の調べによると、面接経験豊富な30〜40代の上司世代がイラつく「若者言葉」で最も多かったのは「見れた」
 「食べれた」などの「ら抜き言葉」だったそうだ。「ものすごく幼稚な印象を受ける」「いちいち気になって、話の内容が
 頭に入ってこない」など、かなり厳しい意見も出ているが、果たしてそんなにいけないことなのか。

 社会人2年目の女性Aさんは、あるメーカーの面接で「ら抜き言葉」を注意されたことを、いまだに強く根に持っている。
 学生時代にトヨタの本を読み、海外旅行で「3現主義」の重要性を感じたという話をしたときのことだ。
 彼女は仕事への意気込みについて、「もし入社できたら、海外の生産現場に行かせていただきたい。そうしたら現場を回って、
 見れるものは何でも見てきたいと思います!」と伝えたそうだ。すると面接担当者から、こう冷ややかに返されたという。

 「君さ、それを言うなら“見られるものは”だよね。海外の前に日本語勉強したら?」
(以下省略)
 http://news.livedoor.com/article/detail/7581420/

 一方で、「ら抜き言葉」は人材をフィルタリングする上で、それなりに役に立つという考えを持つ人もいる。あるITベンチャー
 企業の人事担当者は、言葉遣いから「学生時代にどの程度の知的レベルの集団にいたか」を推測する材料にしているという。
 「他人と会話をしていれば、普通は『ら抜き言葉』に違和感を抱いて修正できるはず。それができていないということは、
 その程度のレベルの集団に属していたという判断をしてしまいます。コミュニケーション能力にも関わりますし、ハイレベルな
 プログラマーを除けば採用に当たって考慮に入れざるを得ません」

 学歴だけでなく、日常的に知的水準の高い集団に属している人は意欲も高く、自分の頭でものごとを考える習慣が
 あるという。言葉遣いひとつでそこまで見透かされることを考えると、やはり油断はできないのかもしれない。(以上)
- - - - - - - - - - -

見れたぁー? 作れたぁー? アハアハ〜♪”
0250デフォルトの名無しさん2013/04/13(土) 00:04:39.46
>>249
作れたはら抜きじゃない
0251─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/13(土) 00:05:34.64
ギャハハ!!wwwww”
0252デフォルトの名無しさん2013/04/13(土) 00:11:24.91
糞ニートが発狂している↑
0253─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/13(土) 00:15:44.87
見れたぁー?w”
0254デフォルトの名無しさん2013/04/13(土) 00:19:57.86
発狂カキコ
0255デフォルトの名無しさん2013/04/13(土) 00:22:55.91
番号飛びまくってるけどまた奴が来てるのか
0256デフォルトの名無しさん2013/04/13(土) 00:33:48.54
やっぱりC++erはキチガイだな
0257デフォルトの名無しさん2013/04/13(土) 02:23:03.54
んなこたー、逸般的常識
0258デフォルトの名無しさん2013/04/13(土) 02:54:18.47
>>243
int max = std::numeric_limits<int>::max(); // エラー
int max = (std::numeric_limits<int>::max)(); // OK
0259デフォルトの名無しさん2013/04/13(土) 06:10:50.96
C++ができる以前からあるからな
しょうがない
0260─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/13(土) 08:39:22.34
>>258
自作自演楽しい?w”
0261デフォルトの名無しさん2013/04/13(土) 11:45:00.50
>>260
ああ、最高さ!
0262デフォルトの名無しさん2013/04/13(土) 11:46:00.66
自作自演と他人の不幸は蜜の味。
0263デフォルトの名無しさん2013/04/13(土) 11:52:00.73
>>262
そう思うのは朝鮮人だけ
0264デフォルトの名無しさん2013/04/13(土) 12:16:11.11
【IT】 「C言語やJavaを使う人は採用しない」「AGKやDarkBASICの方が生産効率が高い」就職活動
http://kohada.2ch.net/test/read.cgi/pcnews/1365242417/139-141

コンソール研究所は13日、C言語やJavaを使う学生を採用しない方針を固めた。

これは昨今のソフトウェア開発現場において社内研修期間を嫌う企業や官公庁の意向を取り入れたもので、
「 卒業=即戦力 」 が求められる新時代への突入を明確にしたものである。

たいていの面接官は ” 学生時代にどんな部活に所属していましたか? ” などと聞くが、それは時代遅れと
なったようだ。

また、C言語やJavaのスキルを問うものに対しても、「 実務経験がなければ意味がない 」 と言う現場の声も
反映した。

コンソール研究所の開発現場から一人の声を拾ってみた。
(以下ソース参照)
0265デフォルトの名無しさん2013/04/13(土) 13:41:13.51
>>264
これの元ネタってなに?
0266デフォルトの名無しさん2013/04/13(土) 14:29:13.12
妄想です
0267デフォルトの名無しさん2013/04/13(土) 15:28:53.26
このスレ馬鹿しかいないの?
0268デフォルトの名無しさん2013/04/13(土) 15:43:31.72
IDないからね。
0269デフォルトの名無しさん2013/04/13(土) 19:51:10.68
こんな状態でも未だに質問しようと思うとかね
そんな判断力じゃプログラムもいつまで経っても上達しないはずだわ
0270デフォルトの名無しさん2013/04/13(土) 22:53:12.38
あれ?番号飛んでる?
何があった?
0271デフォルトの名無しさん2013/04/13(土) 22:54:22.71
>>263
>そう思うのは朝鮮人だけ

北朝鮮ミサイルによる国難の時に
地震なんかで騒いでるのは朝鮮人だけ
0272デフォルトの名無しさん2013/04/13(土) 23:10:39.16
15時から19時の間のレスが消えた感じ?
土曜の夕方にしてはレス少なくないか
0273デフォルトの名無しさん2013/04/13(土) 23:44:00.02
>>272
感想はブログに書いてろks
0274デフォルトの名無しさん2013/04/14(日) 00:49:59.28
じゃあさ。
仲直りの印として、電車の中でUFO焼きそばを食うOFFでもしないか?
0275デフォルトの名無しさん2013/04/14(日) 11:04:21.96
昨日の夕方の10レスぐらい削除されてるのに
>>263
だけ残ってるの何でなんだろな
0276デフォルトの名無しさん2013/04/14(日) 13:31:16.09
>>275
運営が削除依頼してる奴の奴隷に成り下がったからだよ
運営には今やもう削除するしないの判断力はないよ
0277デフォルトの名無しさん2013/04/14(日) 13:32:29.73
>>275
専用ブラウザー?
0278デフォルトの名無しさん2013/04/14(日) 13:34:09.32
どうせ専用ブラウザーのNG設定の正規表現を書き間違えたバカのたわごと
0279デフォルトの名無しさん2013/04/14(日) 18:02:05.94
あれ?ミサイルまだ?
0280デフォルトの名無しさん2013/04/16(火) 05:05:19.94
嫌韓さんは朝鮮戦争を願ってる人が多いようだ
朝鮮といえば大阪
大阪は朝鮮と結びつきが強い
大阪といえば大阪都構想
なぜ大阪府が大阪都になりたがってるか
それは財政破綻を先送りできるから
「都」は公債発行の限度が高くなっている
大阪府のままだともうすぐ破産扱い
大阪都になればしばらく大丈夫
借金の限度額を上げるために名前を変えようとしている
浅ましいでしょう大阪って
そんな大阪に我々日本人ができることといえば
大阪都構想に反対すること
0281デフォルトの名無しさん2013/04/17(水) 23:48:24.17
boostエラーでる
0282デフォルトの名無しさん2013/04/17(水) 23:48:54.08
boostのインストールしたと
思ったんだが
どうやら失敗したみたいです
0283デフォルトの名無しさん2013/04/17(水) 23:52:11.67
MinGWに
boostのインストールしたと
思ったんだが
何故か失敗してるぞ
0284デフォルトの名無しさん2013/04/18(木) 02:50:54.68
>>283
coLinuxだとどうだ?
0285デフォルトの名無しさん2013/04/18(木) 03:25:19.63
>>284
使ったことないです
0286デフォルトの名無しさん2013/04/18(木) 03:36:56.80
MinGWはいろんなフリーウェアの対応が悪いっつーか
ゲテモノ?
0287デフォルトの名無しさん2013/04/18(木) 12:53:30.31
boostくらいなら入ったような記憶が
といっても4年ぐらい前の記憶なので今だとどうだろう…(試してない
0288デフォルトの名無しさん2013/04/18(木) 14:51:39.29
まずコマンドが
正しいのかわからない

bjam.exe -sTOOLS=mingw --toolset=gcc --stagedir="配置ディレクトリ\boost_1_53_0"
--without-python --without-mpi --build-type=complete variant=debug,release
link=static threading=multi runtime-link=static release debug stage -j4
0289デフォルトの名無しさん2013/04/18(木) 14:52:27.17
これで合ってますか?
コマンドが間違ってるのかも

これでboost のDLLが出来るらしいんだが
実行しても出来ていないし・・・
0290デフォルトの名無しさん2013/04/18(木) 15:17:11.49
ちなみに bjam.exe は正規サイトから
ダウンロードしてきました。
0291デフォルトの名無しさん2013/04/18(木) 15:18:11.13
>>289
そして、dllが出来ていないので
当然ながら、boostのライブラリを使おうとしてもコンパイルエラーになります
0292デフォルトの名無しさん2013/04/18(木) 15:18:56.77
vc++2008は
何だかうまくいったんだけど
あれは最初からboostが入ってるのかな?
0293デフォルトの名無しさん2013/04/18(木) 16:18:06.26
うんこ
0294デフォルトの名無しさん2013/04/18(木) 17:56:22.21
rel_ops 爆発しろ! bool 決め打ちしやがって
0295デフォルトの名無しさん2013/04/18(木) 18:22:18.39
>>288,289
link=staticでは静的ライブラリのビルドでdllはできないだろ
0296デフォルトの名無しさん2013/04/18(木) 18:29:13.84
>>295
そうなの?

コマンドが間違ってるって
ことですか
0297デフォルトの名無しさん2013/04/18(木) 18:36:42.19
オプション指定の意味も解らずビルドしようとしてるのか・・・
0298デフォルトの名無しさん2013/04/18(木) 19:36:26.11
少しは自分で調べろ
0299デフォルトの名無しさん2013/04/18(木) 21:16:52.78
>>297
ゆとり・へたれ時代はググってコピペ出来れば良い。意味なんて知らなくて良い
プログラムだってコピペで作る
0300デフォルトの名無しさん2013/04/18(木) 21:18:46.30
よくコピペでプログラム作るって聞くけど
どんな単純なアプリならコピペで作れるんだよ
0301デフォルトの名無しさん2013/04/18(木) 21:20:06.18
cの基本だけわかってたら8割方コピペでそれ繋ぐだけで作れるって意味でしょ
0302デフォルトの名無しさん2013/04/18(木) 21:27:46.99
wchar_t str[ 256 ];
swprintf( str, 256, L"%f", m_pObj->GetFloatVal() );
DrawText( str );

こんな感じのコードをもっとエレガントに書けないでしょうか?
256といった適当なサイズのリテラルを書くことなく、
3行も使わずに、ラムダ式みたいに関数の引数内で直接文字列に変換しちゃうような、
そんな書き方はできないのでしょうか?
0303デフォルトの名無しさん2013/04/18(木) 21:36:12.31
本気で質問してるならエラーが出てるのか、出てるならどんなエラーかくらい説明しろよ。
0304デフォルトの名無しさん2013/04/18(木) 21:38:00.76
ごめん。303 は >288 辺りへのレス
0305デフォルトの名無しさん2013/04/18(木) 21:40:39.95
302は涙目だなw
0306デフォルトの名無しさん2013/04/18(木) 21:42:42.46
>>302
そう言う関数作ればいいんじゃね?
0307デフォルトの名無しさん2013/04/18(木) 21:54:18.46
頭悪そうな奴だな
大学いってなさそう
03083022013/04/18(木) 22:00:17.24
>>306
そうします。
あざーした!!
0309デフォルトの名無しさん2013/04/18(木) 22:01:10.94
stringクラスになんでsprintfが無いんだよ
0310デフォルトの名無しさん2013/04/18(木) 22:03:09.22
stream 押しだからじゃね?
0311デフォルトの名無しさん2013/04/18(木) 22:27:21.52
ググってもよく分からなかったので質問させて下さい。

0,以上1未満の実数な一様乱数を<random>を使って発生させようとしているのですが、
秒未満の単位で変動する値で乱数を初期化してmt19937()を使う方法が分かりません。
乱数を使う位置は、main関数以外の自作関数です。再帰的に呼び出すので、
「その関数の先頭に初期化用関数を置く」ようなことはしたくないです。
また、一回その関数を呼び出してから処理が完了するのに1秒未満ということはザラなので、
time(NULL)を使う、といった手段も取れません。
解決法をご教示願います。
0312デフォルトの名無しさん2013/04/18(木) 22:33:08.20
>>311
ハードにもよるけどx86ならrdtsc使えばいいんじゃね
0313デフォルトの名無しさん2013/04/18(木) 22:38:45.83
std::random_device使えば
0314デフォルトの名無しさん2013/04/18(木) 22:41:38.32
まあ本当に毎回ランダムな値で初期化する必要あんのかよって気はするけどな
0315デフォルトの名無しさん2013/04/18(木) 22:44:13.45
再起させるんならついでに渡せばいいよね
グローバルにおいてもいいと思うし
0316デフォルトの名無しさん2013/04/18(木) 22:49:06.44
>>302
std::to_wstring() でいいんじゃね?
03173022013/04/18(木) 23:08:18.09
>>316
うおー!神!!
できました!!
う〜ん、なんてエレガント♪
STLマンセ〜。
0318デフォルトの名無しさん2013/04/18(木) 23:31:35.84
>>311
そんなに頻繁に初期化しなおしてたら一様性が崩れそうだ
初期化は一回だけのがいいんじゃね
0319デフォルトの名無しさん2013/04/18(木) 23:32:39.14
#include<stdio.h>
#include<math.h>
#include<stdlib.h>

#define LENGTH 1
#define SAMPLING_RATE 16000
#define NUMSAMPLES (LENGTH * SAMPLING_RATE)
int main(){
int i,t,sig,s;
int freq,amp;
double phase[SAMPLING_RATE];
signed short int x[NUMSAMPLES];
freq = 1000;
amp = 1024;
FILE *fp;
fp=fopen("white.raw","wb");
for(i=1;i<SAMPLING_RATE;i++){
phase[i] = rand(); }
for(t=1;t<NUMSAMPLES;t++){
for(s=1;s<8000;s++){
sig+=sin(2*M_PI*s*((double)t/NUMSAMPLES)+phase[s]); }
x[t]=sig;
fwrite(&amp;amp;x[t],sizeof(x[t]),1,fp); }
return 0; }
これでホワイトノイズが出来る予定なんですがプツッって音だけになってしまいます。
ここが違うという指摘があればお願いします。
0320デフォルトの名無しさん2013/04/18(木) 23:44:15.27
何で1から回してんの?
0321デフォルトの名無しさん2013/04/18(木) 23:52:27.88
>>320

iとsは0からでよかったですね
tは指定があったんで
0322デフォルトの名無しさん2013/04/19(金) 00:38:51.99
>>319
妄想で答えるけど、人間に聞こえる音になってないんじゃない
とりあえず確実に人間が聞こえる正弦波(1KHz)とかでプログラム組んだら
0323デフォルトの名無しさん2013/04/19(金) 00:50:45.85
>>319
sigがintだからsinの結果を加算しても0にしかならない
0324デフォルトの名無しさん2013/04/19(金) 00:54:15.98
int freq,ampを何に使う予定だった
>>323
sinの前にampが抜けている。freqはどこだろ
0325デフォルトの名無しさん2013/04/19(金) 01:28:04.97
>>322
すまねえ
俺の頭では理解できなかったぜ・・・

>>323
とりあえずこれを参考に頑張ってみます

>>324
freq,ampはこれとはまた別のやつで使うんで今回は放置でいいらしいっす
0326デフォルトの名無しさん2013/04/19(金) 01:32:38.12
なにひとつC++じゃないからスレ違いじゃないの
0327デフォルトの名無しさん2013/04/19(金) 02:02:25.35
>>326

書き込んだときにスレ違いに気づいたがもう手遅れだったぜ・・・

>>319
は解決しやしたんでこれにて撤収します
ありがとうございました
0328デフォルトの名無しさん2013/04/19(金) 04:53:09.17
>>312-318
std::random_deviceで、無事解決しました。
指摘通り、グローバル領域で1回初期化を掛けてから使用しています。
0329デフォルトの名無しさん2013/04/21(日) 15:49:04.57
C++において char* と int* のサイズが同じである保証はないし違っていても規格上問題ない
ここまではわかる
じゃあ不完全型はどうなるの
つまり

struct A;
struct B { A* ptr; };

はどう扱われるのか教えて
0330デフォルトの名無しさん2013/04/21(日) 16:01:15.70
型によってポインタの値が異なる事はあるらしいけど、
サイズも異なることがあるんだっけ?

メンバポインタは異なる事があるけど
0331デフォルトの名無しさん2013/04/21(日) 16:35:45.05
「char*, int*のサイズ」って、sizeof(int*) のことなの?それとも sizeof(int) のことなの?
前者なら sizeof(int*) == sizeof(char*) は保証されている、というか前提なのでは?これが違うというアーキや違ったとしたときの具体的な実装が皆目思いつかないのだが?
0332デフォルトの名無しさん2013/04/21(日) 17:03:06.77
ポインタサイズが一定である事 (値型に影響されないと言う事) は、前方参照の前提になるものなので、恐らく保証されていると思う。
でも、言われてみると、文書では見たこと無いな。
会社に行ったら規格書しらべてみるかな。
0333デフォルトの名無しさん2013/04/21(日) 17:12:29.31
http://www.kouno.jp/home/c_faq/c5.html#17
まあこれはCだけど
0334デフォルトの名無しさん2013/04/21(日) 17:17:03.73
メンバ関数ポインタのサイズは実際違う事があるのは確認した事がある
GCCだと確か変わらなかったけど、
VC++だと仮想継承するかどうかで変わってた

普通のポインタは不完全型のポインタを考えると
同じでないと流石にダメな気がするが、
規格でどうかと言われると出てこない

nearポインタ、farポインタに関しては規格外だし、
near/farがあるとしてもfarの有無で判別するものであって
型で判別するものではないし
0335デフォルトの名無しさん2013/04/21(日) 17:19:59.87
>>333
そうなると構造体へのポインタ型に関しては
void*と同じ内部構造で扱うみたいな規格があるのかな
0336デフォルトの名無しさん2013/04/21(日) 17:36:28.94
operator new が void* 返しじゃマズいとなると厄介だぞ
0337デフォルトの名無しさん2013/04/21(日) 17:37:59.40
(関数ポインタ、メンバポインタ以外の)どのポインタ型も
void*との相互変換ができるというのが規格にあったはず
0338デフォルトの名無しさん2013/04/21(日) 19:53:39.66
int*とchar*のサイズは違うかも試練が
struct系のポインターは全部void*と
同じサイズだろ。
0339デフォルトの名無しさん2013/04/21(日) 20:06:49.88
>>329
C++の場合(C++03 3.9.2 p4)
> Objects of cv-qualified (3.9.3) or cv-unqualified type void* (pointer to void),
> can be used to point to objects of unknown type.
> A void* shall be able to hold any object pointer.
> A cv-qualified or cv-unquali-fied (3.9.3) void* shall have the same representation
> and alignment requirements as a cv-qualified or cv-unqualified char*.
とあるから実質こうでなければならず
sizeof(char*) == sizeof(void*) >= sizeof(object *)

そこから考えると不完全型へのポインタのサイズはありえる最大サイズにあわせて
sizeof(void*) == sizeof(incomplete type*)

つまりvoid*(==char*)の大きさと同じになる
0340デフォルトの名無しさん2013/04/21(日) 20:13:44.38
// A.cpp
struct T;
void foo(T**);
void bar(T*);

T* foobar() {
 T* p;
 foo(&p);
 bar(p);
 return p;
}

// B.cpp
struct T {
 int a;
};
void foo(T**) { ... }
void bar(T*) { ... }

これが動かないといけないので
完全型かどうかでポインタサイズが変わったらまずい

構造体やクラスへのポインタサイズは一律でないと
0341デフォルトの名無しさん2013/04/21(日) 20:21:51.79
メモリポインタなら同じサイズなのでは
0342デフォルトの名無しさん2013/04/21(日) 20:48:22.13
二つの系列 codeとdataについて
sizeof(char *) == sizeof(int *) == ... etc
sizeof(void (*)()) == sizeof(char(*)()) == sizeof(int(*)()) == ... etc

そして sizeof(int *) != sizeof(void(*)())
を意識しておればいいみたいだね。
さて sizeof(void *) はどっちに属するのか?
0343デフォルトの名無しさん2013/04/21(日) 21:16:22.68
ポインタそのものとポインタが指すオブジェクトを混同してないか?
0344デフォルトの名無しさん2013/04/21(日) 22:00:51.80
>>343
それがポインタが指すオブジェクトによって、そのポインタ自体のサイズが変わるのでは?という問題、
あるいはポインタ同士の互換性を、どこまで考慮しておけばいいのか、という問題がもちあがっているんです。
多分起源は far/near だとは思いますが。
0345デフォルトの名無しさん2013/04/21(日) 22:41:18.28
C FAQを見る限り、far/nearは関係ないと思う
>>340を考えると構造体やクラスへのポインタのサイズは一律でないとマズいと思うが、
規格にその旨は書かれているのだろうか
0346デフォルトの名無しさん2013/04/22(月) 00:33:56.51
x32とx86-64アーキテクチャの違いみたいなものか。
いや違うか。
0347デフォルトの名無しさん2013/04/22(月) 00:37:16.94
メンバへのポインタは通常のポインタと全然意味が違うからな
それ単独では使えず、必ずthisとセットで使わないと意味がない
オフセット値でも入ってんじゃないの
知らないけど
0348デフォルトの名無しさん2013/04/22(月) 00:54:25.44
>>347
メンバ変数ポインタは本当にオフセット値が入ってるね
VC++はNULLのビット表現が0になるよう下駄はかせてるけど、
gccはオフセットそのままで、NULLのビット表現が-1になる
0349デフォルトの名無しさん2013/04/22(月) 05:19:52.84
x32なんて言い方はしない。
0350デフォルトの名無しさん2013/04/22(月) 07:43:41.48
>>349
いや、x32はあるよ
64bit環境で、アドレッシングだけ32bitでやろうよ!っていう変則APIセット
0351デフォルトの名無しさん2013/04/22(月) 11:13:47.64
gcc-4.5.3で
template< typename T > class BBB
{
template< typename T > friend class CCC;
};
とやると
error: declaration of ‘class T’
error: shadows template parm ‘class T’
となるので
template< typename T > class BBB
{
template< typename > friend class CCC;
};
とやったら出なくなりました。Tを消すのは規格的にまずいですか?
0352デフォルトの名無しさん2013/04/22(月) 11:55:08.47
使わなけりゃいいよ
0353デフォルトの名無しさん2013/04/22(月) 12:06:43.18
コンテナ erase()の質問です。
環境:gcc++ 4.4.6 CentOS6

std::list<char> list;
for(auto it=list.begin();it!=list.end();++it)
{
list.erase(it);
}
上記のコードはerase()の段階で
stl_list.h:143 _M_node=NULL になり ++itで落ちます。

コードが複雑になってくると意図せず上記をやってしまいそうなのですが
erase(it)後に++itでsegmentation faultは期待していいのでしょうか?
それとも、何らかのチェックを入れるべきでしょうか?
0354デフォルトの名無しさん2013/04/22(月) 12:12:07.36
そんな糞コード書くなアホか
0355デフォルトの名無しさん2013/04/22(月) 12:42:26.66
>>353
it=list.erase(it);

慣用句レベルな。
イテレータが無効化される要件は、規格で規定されてるから、ググれば直ぐ情報出てくると思うぞ。
03563552013/04/22(月) 12:47:31.25
あ、そのままループ内で使うなよ。
erase の戻りが何を返すのか調べてくれ。
出先で書いてるので調べられん。
中途半端な情報ですまん。
0357デフォルトの名無しさん2013/04/22(月) 12:48:59.62
>>355
それはvc++のみじゃない?
linuxに突っ込まれてる erase()は void型

規約があるのか、探してみる
coredumpとコード読んで理解しようとしていたがギブアップだった
0358デフォルトの名無しさん2013/04/22(月) 12:53:44.33
>>356
いやさんくす、規約というのをしらなかった
探してみる
0359デフォルトの名無しさん2013/04/22(月) 12:58:54.90
規格だったw
0360デフォルトの名無しさん2013/04/22(月) 15:31:24.56
ISO/IEC 14882:2011の23.3.5.4では
iterator erase(const_iterator position);

voidなのは何かの見間違いじゃね?
0361デフォルトの名無しさん2013/04/22(月) 16:29:34.07
>>367
g++ならerase()はiteratorを戻すが?
0362デフォルトの名無しさん2013/04/22(月) 16:39:37.39
たしかに今確認したら
it = list.erase(it);
でビルドとおった、すまぬ。
0363デフォルトの名無しさん2013/04/22(月) 16:44:04.21
ちょっと規約買ってくる
0364デフォルトの名無しさん2013/04/22(月) 16:49:13.81
pop_xxxと勘違いしてんじゃね
0365デフォルトの名無しさん2013/04/22(月) 18:05:07.32
C++03のmapやsetならvoidだったからその辺の混同だろ
0366デフォルトの名無しさん2013/04/22(月) 18:13:05.06
LLVM clang が C++11 に完全対応した今、
C++03 を使う機会はだんだん減っていくといいなぁ
0367デフォルトの名無しさん2013/04/22(月) 18:31:38.53
g++ならerase()はiteratorを戻すが
0368デフォルトの名無しさん2013/04/22(月) 18:45:17.19
文盲がいるな
0369デフォルトの名無しさん2013/04/22(月) 19:03:24.70
ぶ、文盲がいるな
0370デフォルトの名無しさん2013/04/22(月) 19:21:38.86
>>367
g++ 4.7.2で確認したけど
g++ -std=c++98 → map<T1,T2>::eraseはvoidを返す
g++ -std=c++03 → map<T1,T2>::eraseはvoidを返す
g++ -std=c++11 → map<T1,T2>::eraseはイテレーターを返す
0371デフォルトの名無しさん2013/04/22(月) 21:14:44.50
結局>>329は「ユーザ定義型のポインタはすべて同じサイズだと保証されてるから問題ない」ってことでいいのかね
0372デフォルトの名無しさん2013/04/22(月) 21:28:15.35
sizeof(int *) != sizeof(void(*)())
関数のポインタと変数のポインタのサイズが違う場合があるって知らなかったけど
どうしてこうなる?
0373デフォルトの名無しさん2013/04/22(月) 22:04:12.36
関数:コード用のROM
変数:RAM
に配置されてROMとRAMでそれぞれ別のアドレス空間とアドレス表現を持つとか普通だから
0374デフォルトの名無しさん2013/04/22(月) 22:11:20.77
>>373
どうも
そういうことか。PCだけじゃなく組み込みなんかでもC/C++使うからな
0375デフォルトの名無しさん2013/04/22(月) 22:21:23.99
class A { B* b };

A::A() { b = new B(); }

こうやると実行時エラーになるのに
class A { std::shared_ptr<B> b };

A::A() { b= new shared_ptr<B>(); }

だとエラーになりません。
これはやってもいいことがやれているのか
やってはいけないことがやれてるだけなのか教えてください
0376デフォルトの名無しさん2013/04/22(月) 22:24:41.97
よくわかってないならソースを省略せずにきくといいよ
0377デフォルトの名無しさん2013/04/22(月) 22:26:44.31
コンパイル通る文書けよ
0378デフォルトの名無しさん2013/04/22(月) 22:27:28.42
>>375
B の定義が見えてないだけでは?
後者はB のインスタンスを作ってないからコンパイルできているだけのような気が。
0379デフォルトの名無しさん2013/04/22(月) 22:29:33.23
>>371
Cでは「pointer to structure typeは皆同じサイズ、それ以外は知らん」となってる。
でもC++ではそもそもオブジェクトポインターはメモリアドレスと規定されているし
Cみたいな記述は見つけられなかった。
ISO/IEC 14882:2011の3.9には「sizeof UNKA* is known」と
例があるしきっと安全だろううん。 ※UNKOは不完全型の配列
0380デフォルトの名無しさん2013/04/22(月) 22:57:35.64
UNKOは食ったオブジェクトの最終形だろ
0381デフォルトの名無しさん2013/04/22(月) 23:18:14.81
>>329,371
規格上は
 不完全(なあるクラス)型へのポインタの大きさ == (完全なその)クラス型へのポインタの大きさ
は保証されない

>>340の例が動くのは
・A.cppとB.cppを不完全型へのポインタと(完全な)クラス型へのポインタが
 同じ大きさであるように実装された同じコンパイラでコンパイルした場合
・A.cppをコンパイルしたコンパイラでの不完全なTへのポインタの大きさと
 B.cppをコンパイルしたコンパイラでのTへのポインタの大きさがたまたま一致した場合
とかの環境依存の結果でしかない
0382デフォルトの名無しさん2013/04/22(月) 23:24:33.21
>不完全(なあるクラス)型へのポインタの大きさ == (完全なその)クラス型へのポインタの大きさ
>は保証されない

いやそれはおかしい
0383デフォルトの名無しさん2013/04/22(月) 23:25:21.84
>>381
規格を引用しない限り信用しない
0384デフォルトの名無しさん2013/04/22(月) 23:30:29.05
1:struct s;
2:s * ps1;
3:struct s{};
4:s * ps2;

ps1とps2のサイズが違ったらオカルトだぜ。
0385デフォルトの名無しさん2013/04/22(月) 23:58:21.15
C++ならそれくらいのことがあったとしても驚かない
0386デフォルトの名無しさん2013/04/23(火) 00:33:21.98
自己参照も不完全型と同じ扱いなんだよね?
となると、サイズが違ったらこうなるわけか

struct s {
 s* p;
};

s x;
x.p = &x; // NG

リスト作れねえ
0387デフォルトの名無しさん2013/04/23(火) 00:45:48.71
>>386
クラス定義内の前方参照は2回翻訳した時に
最初と同じ意味でなければならないから
途中のs*p;が既にアウチ。
C++的には「未定義だけどチェックはされない」
動くのは偶然ということになる
0388デフォルトの名無しさん2013/04/23(火) 00:51:34.98
犬も歩けば未定義に当たるような言語だから流行らない
マシン性能が上がってくると需要がなくなっていくのはどうするの?
0389デフォルトの名無しさん2013/04/23(火) 01:03:45.86
C++は随分昔から実用を離れたオナニーだから無問題
0390デフォルトの名無しさん2013/04/23(火) 01:49:53.10
>>386
> struct s {
>  s* p; // (1)
> }; // (2)
>
> s x;
> x.p = &x; // NG

少なくともそのケースだけなら例えば(1)の時点で sizeof(s*)==8、(2)以降は sizeof(s*)==4 (s.pは4バイト+padding4バイト)
みたいな扱いになるなら問題にはならないだろ
0391デフォルトの名無しさん2013/04/23(火) 02:03:29.22
まず受け入れたいことは根拠無しで信じるくせに受け入れたくないことに対してだけ
否定するために根拠を求めるダブスタ野郎は最低のクズだから誰かそうならとっとと消えてね

で>>379がいうことに該当するCの規格の箇所を誰かが示して
C++で規定されてない事はCの規格に従う+不完全な構造体も構造体の内
ということで収めちゃえばいいんじゃないの
0392デフォルトの名無しさん2013/04/23(火) 02:37:37.91
>>372
つMS-DOS系メモリモデル/farポインタ、nearポインタ
0393デフォルトの名無しさん2013/04/23(火) 06:45:26.19
>>391
ISO/IEC 9899:1999 3.2.5Type 26
『All pointers to structure types shall have the same representation and alignment requirements as each other.
All pointers to union types shall have the same representation and alignment requirements as each other.
Pointers to other types need not have』
0394デフォルトの名無しさん2013/04/23(火) 06:46:39.41
UNKOの完全型はまきぐそ
0395デフォルトの名無しさん2013/04/23(火) 07:32:50.95
なんでこんなにデタラメを書き込む奴が多いの
不完全型へのポインタが違うサイズなんて
ソース出して見ろよヲラ
0396デフォルトの名無しさん2013/04/23(火) 07:37:27.91
>>392
farついてないから両方nearポインタじゃね?
0397 ◆QZaw55cn4c 2013/04/23(火) 08:20:42.17
>>396
採用するメモリモデルによってかわる。
small もでるなら両方 near、large モデルなら両方 far だが、compact モデルや medium? モデルだったら一方が far なら一方は near という風だったはず、huge モデルはよくわからない‥‥
0398デフォルトの名無しさん2013/04/23(火) 09:12:56.73
struct s;
s* a = nullptr; //8byte
struct s {};
s b, *c = &b; //4byte
std::swap(a, c); //www
0399デフォルトの名無しさん2013/04/23(火) 11:18:39.02
互いに暗黙変換されたりすれば問題ないよね
>>386と同じ話だけど
0400デフォルトの名無しさん2013/04/24(水) 00:38:58.46
Wikipediaのコンマ演算子の説明を読みましたが、よく分かりません。教えてください。
http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%9E%E6%BC%94%E7%AE%97%E5%AD%90
・「未定義動作」の節で、コード内のコメントでは不定と書かれています。「未定義」と「不定」は同じ意味でしょうか。
・i++, i++; がダメなのは理解しましたが、(i, j) = 7; がダメな理由が分かりませんでした。
 「副作用完了点で変数へアクセスしようとしている」と書かれていますが、
 この副作用完了点は具体的にどこなのかと、「変数へアクセス」の変数とはiかjどちらのことか、教えてください。
0401デフォルトの名無しさん2013/04/24(水) 01:00:24.42
>>400
「不定」とは「unspecified」の訳で、いくつかの動作パターンが考えられる時にどの
パターンで実行されるかは処理系次第という意味

「未定義」とは「undefined」の訳で、「これを実行したら『鼻から悪魔』、つまり
何が起きるか分かりませんよ、という警告を込めた意味
0402デフォルトの名無しさん2013/04/24(水) 01:01:44.94
ひどい内容だな
0403デフォルトの名無しさん2013/04/24(水) 01:14:31.37
>>401
副作用完了点は(i, j)のとじカッコの位置
普通ならjが評価されて戻るのだが、カンマ演算子が使われると最後の評価点まで
順に評価されるため、カッコが使われるとカンマ演算子の副作用完了点とぶつかって
どちらを優先すべきかコンパイラには分からない

変数へのアクセスには2種類あり、右辺値と左辺値がある
右辺値は代入不可能、左辺値は代入可能(ただし変更可能の場合に限る)
カンマ演算子もカッコもこの場合は代入可能な左辺値を返すために、おそらく
jに代入されると予想されるが、iの評価した結果をどうするかが分からず、
警告を発するコンパイラがありそうだ
0404デフォルトの名無しさん2013/04/24(水) 01:29:24.95
>>403
なにを意味不明なことを言ってんだ
0405デフォルトの名無しさん2013/04/24(水) 01:30:49.46
(i, j) = 7;の副作用完了点はセミコロンじゃないのか
代入演算子が最終的に評価されてるぞ
0406デフォルトの名無しさん2013/04/24(水) 21:28:09.29
enumで作った定数は
#defineと全く同じですか?
0407デフォルトの名無しさん2013/04/24(水) 21:29:19.03
いいえ
0408デフォルトの名無しさん2013/04/24(水) 21:49:19.34
>400
いくらなんんでもあんまりだと思ったので記事訂正しといた。
0409デフォルトの名無しさん2013/04/25(木) 09:14:58.62
enumで作った定数は
constと同じってことでOK?
0410デフォルトの名無しさん2013/04/25(木) 10:21:32.74
&でアドレス取れないとかの違いはあるよ
0411デフォルトの名無しさん2013/04/25(木) 12:24:07.79
使い分けとしては
enum: 数値に意味がなくて名前が重要。気の利いたデバッガなら名前を見られる
   後で数値の割当てが変わっても平気
const: 数値自体に意味がある。式で計算に使うような場合
0412デフォルトの名無しさん2013/04/25(木) 14:37:01.14
>>411
いい加減なことを言うな
0413デフォルトの名無しさん2013/04/25(木) 15:24:06.95
>>412
じゃあ「いい加減じゃない」事を言ってみろカス
0414デフォルトの名無しさん2013/04/25(木) 15:46:14.31
>>411
> enum: 数値に意味がなくて名前が重要。

これさぁ。
コンパイラが勝手に値を書き換えても問題なく動作するところだけで使えということ?
0415デフォルトの名無しさん2013/04/25(木) 15:53:12.08
勝手には変わらないぞ
0416デフォルトの名無しさん2013/04/25(木) 16:53:30.74
型がenumの値を配列の[ ]中に入れるのは無しだよね。
0417デフォルトの名無しさん2013/04/25(木) 17:03:06.73
>気の利いたデバッガなら名前を見られる
気の利いたデバッガなら名前→数値を見られる
0418デフォルトの名無しさん2013/04/25(木) 17:49:39.46
>>416
スレ間違ってない? ここは C++ だよ
C でさえ [] の中が整数とは限らないし
0419デフォルトの名無しさん2013/04/25(木) 17:50:41.51
int number[4.567]
0420デフォルトの名無しさん2013/04/25(木) 18:01:30.76
3[number]
0421デフォルトの名無しさん2013/04/25(木) 18:45:31.44
#define NUMBER [number]
int NUMBER={0,1,2,3};
return 0 NUMBER;
0422デフォルトの名無しさん2013/04/25(木) 18:54:12.09
無理に慣れないことしなくていいよ
0423デフォルトの名無しさん2013/04/25(木) 19:15:17.17
>>414
勝手に変わることはないけれど、用途としてはその認識でいい。
デバッガの話はよくわからないけれど、値が意味を持つものにenumを使うべきじゃない。
enumは、名前や順番に意味があるとき使うもの。
値が重要、普遍でなければならない場合は、constやdefineを使うべき。

enumの使い時としては例えば
配列でmapみたいな指定に使ったり、値に依存する処理がカプセル化されているときとか?

逆に使えないのは、エラーコードかな?
同じプログラム内でなら問題にはならないけどログや終了値みたいに外部に公開するようなやつに使うのはまずい。
0424デフォルトの名無しさん2013/04/25(木) 19:21:00.85
>>423
都道府県コードにenumを使ってはいけないというわけか
0425デフォルトの名無しさん2013/04/25(木) 19:25:54.68
>>423
netinet/in.h に書かれることの多い
IPPROTO_TCP = 6,
のようなenumは、君の家では間違いなんだ?
0426デフォルトの名無しさん2013/04/25(木) 19:57:41.24
>>423
勝手に変わらない=確定しているもので
何がまずいんだよ

飛躍の一切ない論理を聞こうか
0427 ◆QZaw55cn4c 2013/04/25(木) 20:01:58.54
>>426
enumerate
0428デフォルトの名無しさん2013/04/25(木) 21:42:13.43
定数定義にdefine使う奴は
どうしようもない馬鹿
0429デフォルトの名無しさん2013/04/25(木) 21:59:57.61
>>411
圧縮とか画像とかのライブラリな。
あれ結構あるんだよな。
画像等のファイルヘッダーに入れるID情報をenumで列挙してるの。
君んちルールではルール違反でアウトになるよな。
君の会社と一緒に仕事するのは不可能だなあ。
0430デフォルトの名無しさん2013/04/25(木) 22:21:11.84
値に意味があるのなら、enumはまずいと思う。
コード体系なんかも値が意味を持つたぐいじゃないだろうか。

enumを使うことの問題点は、定義する位置や直前の値にひきづられて変わりかねない値の不安定さ。
だから、値が意味を持つものには使うべきじゃないという話。

>>425
値に対する処理が、ある意味カプセル化されている部分で値そのものに、意味はないと思うのだけど、どうだろ?
もしも、値に意味がある場所でenumを使っているのだとしたら、本来はconstを使うところだとは思うな。
0431デフォルトの名無しさん2013/04/25(木) 22:28:41.63
enumは値を指定できるんだから
値が意味を持つ場合にも使える

型が作られる事も重要
0432デフォルトの名無しさん2013/04/25(木) 22:34:39.60
型を軽視するやつはCにでも引きこもってればいいのに
0433デフォルトの名無しさん2013/04/25(木) 22:40:11.13
>>430
こんなダメすぎる考え方は見たことないよ
このバカチンがー!
0434デフォルトの名無しさん2013/04/25(木) 22:44:46.26
int a = 0x11223344;
char b = *static_cast<char*>( static_cast<void*>(&a) );
char c = *reinterpret_cast<char*>(&a);

bとcって何か違うんですか?
0435デフォルトの名無しさん2013/04/25(木) 22:50:17.22
cはコンパイルエラーになる可能性がある
0436デフォルトの名無しさん2013/04/25(木) 22:53:46.35
数値に意味があって、その意味にふさわしい名前を付けた方が良いから名前を付ける。
列挙される数値の集合に意味があって、その意味にふさわしい名前を付けた方が良いから名前を付ける。
それがenum。
enum protocol {
tcp = 6,
udp = 17,
};
こうやってやると、TCPという意味のある数値の6に対してtcpという名前を付けられるし、
プロトコルという意味のある集合に対してprotocolという名前を付けられるじゃないか。
そしてprotocolという型まで生まれて、コンパイラはチェックできるようになるじゃないか。
意味があるから意味にふさわしくこれらのことをやるんだよ。
0437デフォルトの名無しさん2013/04/25(木) 22:58:10.67
>>434
ほぼ同じ
ただし、int より char の方がアラインメントの要請が厳しいうんこ環境があったら失敗するかもしれない
(普通はないと思われるが)

5.2.10 7 (C++11)
An object pointer can be explicitly converted to an object pointer of a different type.
When a prvalue v of type “pointer to T1” is converted to the type “pointer to cv T2”,
the result is static_cast<cv T2*>(static_cast<cv void*>(v))
if both T1 and T2 are standard-layout types (3.9) and
the alignment requirements of T2 are no stricter than those of T1,
or if either type is void.
0438デフォルトの名無しさん2013/04/25(木) 23:00:00.89
ああ、>>437 は reinterpret_cast の話ね

static_cast を重ねた場合は
元の型が分からないので
アラインメントのチェックができなくなる
0439デフォルトの名無しさん2013/04/25(木) 23:01:00.02
430.detach();

>>432
そんなあなたに enum-base
0440デフォルトの名無しさん2013/04/25(木) 23:26:58.09
constでもenum-base相当のことはできるんだし今はあんまり関係なくね
0441デフォルトの名無しさん2013/04/25(木) 23:31:56.28
右辺値でいいところを、わざわざ左辺値にする意味は?
0442デフォルトの名無しさん2013/04/25(木) 23:32:52.53
何の話よ
0443デフォルトの名無しさん2013/04/25(木) 23:34:53.42
enum vs const
0444デフォルトの名無しさん2013/04/25(木) 23:37:46.09
別に左辺値になるからconstを使ってるわけじゃなかろうに
0445デフォルトの名無しさん2013/04/25(木) 23:47:45.32
それじゃ答えになってなかろうが
const にするということは左辺値にするということで
その必要性を聞いている

右辺値参照に渡せなくなるという違いまであるんだぞ
0446デフォルトの名無しさん2013/04/26(金) 01:29:32.71
派生クラスのデストラクタは仮想関数にすると聞いたのですが
ポインタで生成したときのみですか?
0447デフォルトの名無しさん2013/04/26(金) 01:50:28.55
基底や
0448デフォルトの名無しさん2013/04/26(金) 01:58:21.00
とりあえず最後のカンマは書くなよ
警告がウザいんだよ
0449デフォルトの名無しさん2013/04/26(金) 06:01:23.09
http://codepad.org/acP6RCj8

共変の戻り値についての相談です。
URLのコードにてAとCは継承関係にあるのは明らかなのになぜ「covariantでない」と言われるのでしょうか。
0450デフォルトの名無しさん2013/04/26(金) 06:05:28.00
>>433
極論に聞こえるのは型について無視した話をしているからだと思うけど、言ってることのコンセプトは
外部設計等、仕様上定義された値→const
内部設計等、プログラムの都合上定義した値→enum
という話を具体的にしてるだけなんだけどね。

まぁ、値を意味づけ、グループ化するというenumの用途も理解はしている。
0451デフォルトの名無しさん2013/04/26(金) 06:33:10.20
俺は普通にenumで定数指定作ってるな
ビットフラグもenumで作ってるし
0452デフォルトの名無しさん2013/04/26(金) 06:41:03.23
>>449
ttp://codepad.org/WnQosPYb
?
0453 ◆QZaw55cn4c 2013/04/26(金) 06:42:49.77
enum を定数指定用途に使用するのを「enum ハック」というくらいだから、一般にあまり誉められたものではないという認識で通っているのでは?
そういう意味では >>430 に賛同するね
0454デフォルトの名無しさん2013/04/26(金) 07:08:56.17
>>452
Aにすれば同じ型なのでコンパイル通るのは分かるんです。

template使わなければ派生型を戻リ値にしても問題無いのにどうしてかなーと思いまして。
0455デフォルトの名無しさん2013/04/26(金) 07:24:21.86
製品出荷時に取り得る値が全て決まっているなら
数値に意味が有ろうと無かろうと
enumに決まっている。
constは老害
defineは犯罪者
0456デフォルトの名無しさん2013/04/26(金) 07:29:38.08
俺はenumを「数値固定定義のグルーピング」という意味合いでしか捉えてないな
値に意味があるか
どうかももちろん重要な場面はあるけどそれより利点の「どのように使われるためにまとめたか」って
部分が重要かねぇ
0457デフォルトの名無しさん2013/04/26(金) 07:33:38.18
>>445
const は #define の代わりに C++ で推奨されるようになったもの
元々 enum を使っていたものは C++ でも enum を使う
enum を使わないようなものは const を使う
ただの単発の値や、特定の型を指定したい場合など、ね

この判断に右辺値か左辺値という話は全く出てこない
必要だから左辺値にしているわけではないし、
そもそも意図的に左辺値にしているわけでもない
たまたま左辺値だったというだけ

右辺値にしたいなら右辺値にすればいいだけ
そんなのはどうとでもない
0458デフォルトの名無しさん2013/04/26(金) 07:34:10.62
×そんなのはどうとでもない
○そんなのはどうとでもなる
0459デフォルトの名無しさん2013/04/26(金) 07:35:28.60
文字列enumするの?
0460デフォルトの名無しさん2013/04/26(金) 07:44:39.10
>454
個人的には、共変の戻り値型使うケースとして自分の型のケースしか脳内になかった。

http://ccf.myhome.cx:5000/result/700 Derived* だとどのコンパイラでも通らない
http://ccf.myhome.cx:5000/result/701 B<Derived,Base>* だとどのコンパイラでも通る

規格上これに引っかかるんだと思う(shall be complete at the point of declaration)。

> 14882/2011 10.3p8
>If the return type of D::f differs from the return type of B::f, the class type in the return type of D::f shall
>be complete at the point of declaration of D::f or shall be the class type D.
0461デフォルトの名無しさん2013/04/26(金) 08:05:56.57
>>460
なるほど。仕様なら仕方ないですね。別のアプローチ探してみることにします。
ありがとうございました。
0462デフォルトの名無しさん2013/04/26(金) 11:05:37.95
>>457
const が #define に取って代わるなんて妄想やめれ
const がなかった頃の #define を const ができてすぐ置き換えるとき、
リンクが必要になっていたのを憶えているか?
左辺値の話はここに含みを置いていたんだよ

標準では INT_MAX みたいな計算に使うマクロは
std::numeric_limits<int>::max() みたいに関数にしていたりもするし

「enum を使わないようなもの」とは整数でない定数のことで
おまえさんの妄想こそ関係ない

>>455-456に賛成
タイプ数が少なく済み(=読むのも早い)、{} でグループを明示できるし
強い型づけには enum-base や enum class まであるのに
こんなにメリットのあるものを感情論で毛嫌いするのはもったいない
04634462013/04/26(金) 11:05:55.48
派生クラスをポインタで生成した場合
元の基底クラスのデストラクタをvirtualにするってことでOK?
0464デフォルトの名無しさん2013/04/26(金) 12:04:52.96
基底クラスのポインタで削除する場合は基底クラスのデストラクタをvirtualにする
04654462013/04/26(金) 12:11:58.58
>>464
virtualの機能を使ったら
virtualを使ってる基底クラスのデストラクタをvirtualにするってことでOK?
0466デフォルトの名無しさん2013/04/26(金) 12:32:46.46
先物 4700円 逝ったか?
田中、どんだけ変動すると値上げ変更するんだろ
0467デフォルトの名無しさん2013/04/26(金) 12:48:04.49
>>465
めんどくさいから、派生させるつもりがあるなら virtual 付けとけ。
逆に、デストラクタに virtual 付いていなければ、派生禁止と考えておけ。
0468デフォルトの名無しさん2013/04/26(金) 14:02:12.01
動的削除子付きのスマポ使えばvirtualデストラクタなど要らぬわ
0469デフォルトの名無しさん2013/04/26(金) 14:07:29.23
つかアプリレイヤでdeleteなんて一切書くな
04704462013/04/26(金) 15:45:06.87
ちくしょょぉぉぉぉぉぉぉぉぉ
教えてくれよぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉ
0471デフォルトの名無しさん2013/04/26(金) 16:09:47.34
enumの一番下に〜_MAXなんてものを定義しても、それに=を付けて別の値にしてしまえば
一番下が最大ではなくなるし、途中で=を使えば上下での大小関係も崩せる。
0472デフォルトの名無しさん2013/04/26(金) 17:19:20.28
>>471
わざわざ値が変わるようなことをして、これだからenumは駄目なんだよって
言いたいのか?
0473デフォルトの名無しさん2013/04/26(金) 17:19:50.57
>>470
>>467
0474デフォルトの名無しさん2013/04/26(金) 17:20:37.62
>>471
そんなことする馬鹿が悪い&>>471が馬鹿
0475デフォルトの名無しさん2013/04/26(金) 19:59:03.66
>>445
&&型の目的は「右辺値なのでムーブするチャンス」
って考えだろ。定数をムーブしてどうする。
そこはconst参照使うところ。
0476デフォルトの名無しさん2013/04/26(金) 21:39:52.76
>>468
えっ?
0477デフォルトの名無しさん2013/04/27(土) 00:02:30.35
>>475
遅かったな
>>462 の前なら少しはマシだったが
今さらそんな枝葉に噛みつくだけ恥の上塗りだ

整数は値で受けるもので、おまえみたいに const 参照するやつは異端
右辺値参照がよほど助け船に見えたようだな
0478デフォルトの名無しさん2013/04/27(土) 00:14:58.04
constなんてやめてconstexprにするべきだな
0479デフォルトの名無しさん2013/04/27(土) 00:45:43.07
>>462
> const が #define に取って代わるなんて妄想やめれ
> const がなかった頃の #define を const ができてすぐ置き換えるとき、
> リンクが必要になっていたのを憶えているか?
> 左辺値の話はここに含みを置いていたんだよ

いつの話だよ
規格の出来る前の話は知らんが
C++のconstは静的リンケージでヘッダに書ける

> 標準では INT_MAX みたいな計算に使うマクロは
> std::numeric_limits<int>::max() みたいに関数にしていたりもするし

定数にすると浮動小数点型の時に困るから関数になってるだけ
それ以上の意味は無い

> 強い型づけには enum-base や enum class まであるのに

enum class は型付けが強すぎて const 定数の代わりには使えない
enum-base は別に良いのだけど、
型を作る意味が無ければやっぱり enum にする必要は薄い
というか C++11 が使える事前提だよねこれ
0480デフォルトの名無しさん2013/04/27(土) 01:11:15.18
>>479
いつの話だよ、をそのままお返ししよう
0481デフォルトの名無しさん2013/04/27(土) 02:40:28.40
>>480
いつかと訊かれたらC++は1998年の最初から?
ちなみに静的は内部の誤りだろうきっと。

>enum class は型付けが強すぎて const 定数の代わりには使えない
そりゃenumはサイズを指定するためのものじゃないからね。
当然、使うべきじゃない。
0482デフォルトの名無しさん2013/04/27(土) 07:18:15.87
const は定数にしてるだけで、その数字に意味づけする物じゃない。

enum はリストだから単体で使う意味が無いし、わかりにくくなるだけ。

明示的に最適な型宣言をして意味を持った変数名を付けるだけで良い。
0483デフォルトの名無しさん2013/04/27(土) 09:07:59.46
>>481
おう、内部リンケージの間違い
指摘ありがとう
0484デフォルトの名無しさん2013/04/27(土) 09:58:54.32
>>481
指定できるよアホ

>>482
たとえば int なら int であることが絶対条件になるまで
int と書かないほうが合理的だ
0485デフォルトの名無しさん2013/04/27(土) 13:42:55.85
単発の数値はconstで
値のグループはenum
これでよかですか?
0486デフォルトの名無しさん2013/04/27(土) 13:45:27.23
まだやってたのか
short <==> const short
long <==> const long
int <==> const int
? <==> enum
迷うのはおかしい
0487デフォルトの名無しさん2013/04/27(土) 13:45:36.93
はい
0488デフォルトの名無しさん2013/04/27(土) 13:53:03.66
会社なら会社の指示に従え
趣味なら好きなの使っとけ

このスタンスでそうそう困る事は無いし、そのうち経験から使い分けができるようになる
0489デフォルトの名無しさん2013/04/27(土) 14:03:29.03
>>486
>int <--> const int
constと非constの対応じゃなくて
constかenumのどちらを使用すべきかの
話だったんだけど
日本語読めない>>486には理解できなかったようだね。
0490デフォルトの名無しさん2013/04/27(土) 14:11:48.55
マクロじゃなきゃ何でもいいよ
0491デフォルトの名無しさん2013/04/27(土) 14:14:38.53
Androidのライブラリは
final int定義が羅列してあって
どのメソッドがどの値を返すのか書かれて
いなくて発狂しそうになります。
0492デフォルトの名無しさん2013/04/27(土) 14:18:44.78
sizeof(enum)っていくら?
0493デフォルトの名無しさん2013/04/27(土) 14:19:38.77
>>492
ベースの型のサイズ
何も書かなければintのサイズ
0494デフォルトの名無しさん2013/04/27(土) 14:48:28.52
でたらめ言うな
intのサイズが保証されるのはenum baseがintのenumと
emum baseのないenum class/struct (scoped enum)と
Cのenumだけ

enum baseのないenum class/structでないenum (unscoped enum)のサイズは処理系定義
(いくつかの条件はあるけどややこしいので略)
0495デフォルトの名無しさん2013/04/27(土) 19:02:50.00
C++のenumをそのままread/writeするプログラムは危険ってわけだな
enum baseがあればいいけど
0496デフォルトの名無しさん2013/04/27(土) 21:02:05.35
処理系定義だから、移植性とか考えなければ危険ってわけじゃないだろ
0497デフォルトの名無しさん2013/04/27(土) 21:07:10.94
アドレスとってそのままバイナリで書き込むのに
移植性がないのはintだろうとenumどろうと同じだぜ。
0498デフォルトの名無しさん2013/04/27(土) 21:24:00.71
enum のアドレスを取ってかw
0499デフォルトの名無しさん2013/04/27(土) 21:35:13.88
>>496
enumの内容を変更したらサイズが変わった、
という事もありうる
移植性関係無しに危険
0500デフォルトの名無しさん2013/04/27(土) 21:37:33.16
#include <iostream>
enum E { A = 0xFFFFFFFF };
int main() { std::cout << sizeof(E) << std::endl; }

出力 : 4

#include <iostream>
enum E { A = 0xFFFFFFFFFFFFFFFF };
int main() { std::cout << sizeof(E) << std::endl; }

出力 : 8
0501デフォルトの名無しさん2013/04/27(土) 21:38:27.65
なるほど・・・enumキモい
0502デフォルトの名無しさん2013/04/27(土) 21:43:34.09
そのためのenum baseでもある

バイナリで書き込む場合、C++03まではenumは厳禁
C++11ならenum baseとcstdintで頑張れる
0503デフォルトの名無しさん2013/04/27(土) 21:44:58.49
定義変えたらサイズ変わるとか当たり前だろ。
>>499のおつむの方がヤバい。
0504デフォルトの名無しさん2013/04/27(土) 21:50:58.43
>>503
お前のプログラムは怖いから保守したくないわ
0505デフォルトの名無しさん2013/04/27(土) 21:57:05.42
変数のアドレス取ってバイナリで書き込む
バイトオーダー依存しまくりの
KUSOなプログラムは保守したくないわ
0506デフォルトの名無しさん2013/04/27(土) 22:02:11.36
この世に既存のバイナリフォーマットなんて星の数程あるだろw
お前は独自のフォーマットのファイルしか扱わないのか
0507デフォルトの名無しさん2013/04/27(土) 22:03:21.65
エンディアン依存くらい普通じゃないの?
0508デフォルトの名無しさん2013/04/27(土) 22:05:35.18
ファイルフォーマットの
インディアン固定は問題ないけど、
プログラムがバイトオーダ依存
なのはよくないってことでしょ
0509デフォルトの名無しさん2013/04/27(土) 22:06:08.49
つーか、ファイルフォーマットが決まっているのに
バイトオーダーで氏ぬやつって低脳だろ
0510デフォルトの名無しさん2013/04/27(土) 22:09:16.09
バイトオーダを気にする必要があるなら
読む時に現在のバイトオーダに応じて変換すればいいだけ
気にする必要がない環境なら気にするだけ時間の無駄
0511デフォルトの名無しさん2013/04/27(土) 22:16:13.44
どちらかというと環境に依存して
単体試験が増える方が無駄。
バイトオーダー依存のプログラム書く奴は
大抵は漏れなくintサイズ依存
0512デフォルトの名無しさん2013/04/27(土) 22:17:44.80
いや、バイナリで扱おうがテキストで扱おうが
どの環境でも単体試験するのは当然だろ
何を言い出すんだこいつは
0513デフォルトの名無しさん2013/04/27(土) 22:25:49.01
インディアン嘘つかない
0514デフォルトの名無しさん2013/04/27(土) 22:42:09.19
>>512
だよな
0515デフォルトの名無しさん2013/04/27(土) 22:47:47.42
んだんだ
05165112013/04/27(土) 22:48:26.38
>>512
>どの環境でも単体試験するのは当然だろ
んなこたーない。
フォーマット仕様が「2バイト符号無し整数
リトルインディアン」って書かれてたら
unsigned v = a[ofs+0]<<8 |a[ofs+1]
で書いておけばコードは一通り。
わざわざバイトオーダー変換ありと
なしの試験が必用となるコードを
書く方が無駄
05175112013/04/27(土) 22:49:10.39
間違えた。ビッグインディアンね。
0518デフォルトの名無しさん2013/04/27(土) 22:50:35.50
エンディアン試験しない
0519デフォルトの名無しさん2013/04/27(土) 22:52:00.66
>>516
うわぁ
0520デフォルトの名無しさん2013/04/27(土) 22:52:13.34
お前らシリアライズ/デシリアライズライブラリが何のためにあると思ってるんだ
0521デフォルトの名無しさん2013/04/27(土) 23:05:15.97
>>518
ワロタw
0522デフォルトの名無しさん2013/04/27(土) 23:11:17.51
>>516
いや、試験しろよ
動くよ(多分)じゃ製品にならん
お遊びならいいんだろうが
0523デフォルトの名無しさん2013/04/27(土) 23:21:14.18
>>518,>>522
試験しないんじゃなくて
環境非依存の書きかたにすれば
試験項目が減るって話でわ?
>>520のいうとおりライブラリ
を使うのは賛成
0524デフォルトの名無しさん2013/04/27(土) 23:28:12.19
バイトオーダが違うような環境の両方に対応させるのなら
両環境で同じ試験を一通りするもんじゃないの
0525デフォルトの名無しさん2013/04/28(日) 00:45:58.32
>>524
言語仕様で保証された範囲内で書かれてるんなら
リグレッション試験相当で十分じゃね?
高級言語使ってんだから。
0526デフォルトの名無しさん2013/04/28(日) 00:57:47.49
実行されるマシンのアーキテクチャって、だいたい決まってるよな。
エンディアンの変換ロジックをテストしてもエンディアン自体をテストするのはまれじゃないか?

どんな環境でも動くぜ的な趣味で作るようなやつならいざしらず、複数のアーキテクチャに対応するとか、今となっては一般的じゃないな
0527デフォルトの名無しさん2013/04/28(日) 01:28:22.22
言語仕様に従って書いていれば
環境依存なんてそうそう無いぜ

自分のコードが処理系依存かどうか
意識するのはあたり前じゃねーの?
多バイトオブジェクトのメモリ
イメージをそのまま保存とか怖すぎる
0528デフォルトの名無しさん2013/04/28(日) 01:57:52.39
このソースは環境依存って丸ごとifdefでくくってそれで終了だな
あるかどうか分からない移植を考えていちいち対応するのも馬鹿らしい
0529デフォルトの名無しさん2013/04/28(日) 02:02:45.16
いや、試験しろよ
動くよ(多分)じゃ製品にならん
お遊びならいいんだろうが
0530デフォルトの名無しさん2013/04/28(日) 02:38:31.70
>>529はバウンダリ試験したあとに
intの値総当たりで試験しないと気が済まな
そうなタイプだな。

言語仕様を知らないから処理系依存しまくりの
ウンココードを量産して
PCメーカーごと、HDD容量ごと、
ディスプレイの解像度ごとに全単体試験を
やり直してるに違いない。
0531デフォルトの名無しさん2013/04/28(日) 03:01:26.05
(⊃д⊂)コンバン・・・∩・д・∩ワー
0532デフォルトの名無しさん2013/04/28(日) 03:35:27.59
動くよ じゃなくて 後でここを直せば動くよ だろ
0533デフォルトの名無しさん2013/04/28(日) 07:52:34.96
>>531
かわいー♪
0534デフォルトの名無しさん2013/04/28(日) 07:55:01.97
だるいときの定型コンビネーション
#ifndef
#error
0535デフォルトの名無しさん2013/04/28(日) 09:37:24.91
オマエら暇だな。
世間は大型連休だと言うのに
家に引きこもって2ちゃんとオナニーしか
することないんですか?
0536デフォルトの名無しさん2013/04/28(日) 09:53:25.42
>>535
  /⌒ヽ ヤル気でない
 く/・�� ⌒ヽ  
  | 3 (∪ ̄]
 く、・�� (∩ ̄]
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0537デフォルトの名無しさん2013/04/28(日) 10:17:14.08
>>536
かわいー♪
0538 ◆QZaw55cn4c 2013/04/28(日) 11:35:18.35
>>505
でも卵の割り方に依存しない書き方って結構難しかった記憶があります。http://toro.2ch.net/test/read.cgi/tech/1313183984/35
両宗教の流儀とも環境を準備したいんですけれどもビッグエンディアンの環境ってなにがあるんでしょう、ぜひとも手元においておきたいものですが。
0539 ◆QZaw55cn4c 2013/04/28(日) 11:41:03.19
>>535
世界一の放射光施設の一般見学に参加しました。ポスターの前でわけわかんなくてうんうんうなっていると、宗教勧誘の人が酔ってきていろいろ教義解説していただけたんですが余計にわけわかんなくなりました‥‥。
世界一ってすごいんだなあ二番じゃだめなんだなあ、て思いました。

結局ポスターセッションだけで結局一日が終わってしまって、結局設備を見る暇がなかった‥‥‥。
0540デフォルトの名無しさん2013/04/28(日) 12:30:01.76
ビッグエンディアンで入手しやすそうなのは、旧Macあたりか?
…ミドルエンディアンの機械とかって入手できんのかこれ
0541デフォルトの名無しさん2013/04/28(日) 14:00:20.50
Objecttive-Cの質問をしたいんですが、スレチ?
なんか前はスレあったみたいなんだけど、落ちてるみたいで・・。
0542デフォルトの名無しさん2013/04/28(日) 14:07:33.71
mac板になかったっけ
0543デフォルトの名無しさん2013/04/28(日) 14:48:18.70
>>541
ここでもいいんじゃない?もしかすると質問に答えてくれる人がいるかもしれないし
0544デフォルトの名無しさん2013/04/28(日) 15:07:14.84
>>542
見てきましたが今はないぽいですね。
>>543
そうします。

objective-Cを cygwin上でかつ、clangでコンパイルしてる人いませんか?
この時点でかなレアケースだとは思いますが・・・。
0545デフォルトの名無しさん2013/04/28(日) 20:12:52.23
C++あるいはVC++なんかで、
代入や計算結果を自動的に範囲制限(いわゆるClip)(min〜max)してくれたり、
あるいは端を超えると裏回ってくれる(いわゆるWrap)(min〜max<-min〜max->min〜max〜)型ってありませんか?
自分で作れるんですが、標準のものがあればそれを使いたいです。
0546デフォルトの名無しさん2013/04/28(日) 20:15:19.23
なにそれ
0547デフォルトの名無しさん2013/04/28(日) 20:16:05.63
自分で作れ
05485452013/04/28(日) 20:17:28.42
了解ですw
0549デフォルトの名無しさん2013/04/28(日) 21:02:33.32
うおおお、そんなのはCじゃねぇ
たとえおてんとうさまがゆるしても
おいらがゆるさねぇ
0550デフォルトの名無しさん2013/04/28(日) 22:05:21.13
>>545
> C++あるいはVC++なんかで、
> 代入や計算結果を自動的に範囲制限(いわゆるClip)(min〜max)してくれたり、
> あるいは端を超えると裏回ってくれる(いわゆるWrap)(min〜max<-min〜max->min〜max〜)型ってありませんか?
> 自分で作れるんですが、標準のものがあればそれを使いたいです。
なければテンプレートで作るかな。
閉区間や開区間で判定・クランプするテンプレートとか、
clipはclampとかでたまにやってる。warpもやるかな。

なんかboostとかでありそうだけど。
05515452013/04/28(日) 22:15:07.20
>>550
参考になりやす!
やっぱテンプレートっすよね。
0552デフォルトの名無しさん2013/04/29(月) 00:17:29.18
std::listのデータをifstreamとofstreamを使ってバイナリファイルで保存、読込がしたいのですが、たとえば

std::list<hoge> hogeList;
std::ofstream file("test", std::ifstream::binary);
file.write( (char*)&hogeList, sizeof(hogeList) );

とやってもリスト構造の保存はできませんよね、どうすればリスト構造の保存できますか?
0553デフォルトの名無しさん2013/04/29(月) 00:24:21.36
シリアライズ
0554デフォルトの名無しさん2013/04/29(月) 00:31:24.51
昨今、効率を重視したシリアライズライブラリが数多く登場しています。特に、大量の処理を行う大規模な基盤システム向けに開発されていることが多いようです。
少し探してみるだけでも、次のような事例が見つかります:

BERT(githubで採用:Introducing BERT and BERT-RPC)
Thrift(Facebookが開発:Thrift: Scalable Cross-Language Services Implementation)
Avro(Hadoopで採用されそう)
Protocol Buffers(Googleが開発)
BSON(mongoDBで利用)
MessagePack(kumofs などで利用)
http://d.hatena.ne.jp/viver/20100324/p1
0555デフォルトの名無しさん2013/04/29(月) 01:49:56.49
>>553
>>554
ありがとうございます
0556デフォルトの名無しさん2013/04/29(月) 05:07:36.94
どれもキワモノ臭が漂うな
0557デフォルトの名無しさん2013/04/29(月) 22:54:39.24
>>555
hoge厨は二度と来るな
0558デフォルトの名無しさん2013/04/29(月) 22:58:04.47
ほらはよ
0559デフォルトの名無しさん2013/04/29(月) 23:00:33.81
>>558
クスリでもやられています?
0560デフォルトの名無しさん2013/04/29(月) 23:30:26.49
頭でもやられたかw
0561デフォルトの名無しさん2013/04/30(火) 14:34:34.38
struct A
{
 void test(){}
 template<typename T> void test(){}
};

A a;
a.test();
a.test<int>();

この2つのtest()は正しく区別されますか?
0562デフォルトの名無しさん2013/04/30(火) 14:37:13.03
まずオマエの環境の結果を書けよボケナス
0563デフォルトの名無しさん2013/04/30(火) 14:46:41.84
14.5.2『When both exist, a use of that name and type refers to the non-template member unless an explicit template argument list is supplied』
0564デフォルトの名無しさん2013/04/30(火) 14:56:02.54
区別されるかの回答はよ
急いでます
0565デフォルトの名無しさん2013/04/30(火) 14:56:19.16
テンプレートでないtestが優先されるっちゅうこっちゃね
0566デフォルトの名無しさん2013/04/30(火) 14:59:52.16
へー。だから何?って仕様だな
0567デフォルトの名無しさん2013/04/30(火) 15:03:30.74
テンプレートなメンバ関数を型を明示して使う場合、
a.template test<int>(); って書かないとだめなんじゃないの?
非テンプレートな同名のメンバ関数の存在にかかわらず。
0568デフォルトの名無しさん2013/04/30(火) 15:06:00.83
アスぺ「まず561の考える正しいの定義を説明してもらおうか
アスぺ「>>567  明示して使うのが前提ならそうだろう
0569デフォルトの名無しさん2013/04/30(火) 15:12:39.87
>>567
んなこたーない
test<>()でいけるはず
05705692013/04/30(火) 15:26:33.84
>>567 すまん嘘を書いた。
<>と書けるのは引数から推論できる時だけ
だが明示的なtemplateキーワードは無くていい。
0571デフォルトの名無しさん2013/04/30(火) 15:54:06.35
C++は本当にKUSOだな。
上級者でも(むしろ上級者ほど)規格片手にコード
書かなきゃいけない言語はおかしいだろ。
何のためのプログラミング言語だよ
0572デフォルトの名無しさん2013/04/30(火) 16:00:50.90
そんなアホコードを書くやつが悪い
0573デフォルトの名無しさん2013/04/30(火) 16:01:19.06
>>571
使い捨てのプログラムならそんなことしなくていいし、長期間にわたって正しく動くことが
要求されてるプログラムならどんな言語で書いてもそうなると思うんだけど。

本当にC++のせいなのかい?
0574デフォルトの名無しさん2013/04/30(火) 17:12:13.82
規格票を見るのが嫌いな人が、向かない仕事で苦しんでいるのはともかくとして・・・
typename 前置とか private 継承みたいに、マジクソなところは確かにある

しかも C++11 という大改訂のチャンスを逃して残ったのが大量にあるし
0575デフォルトの名無しさん2013/04/30(火) 17:15:44.84
private継承の何がマジクソなのかと
0576デフォルトの名無しさん2013/04/30(火) 17:39:44.43
コンパイラに怒られるのが嫌だから全メンバを公開しろってことだろ言わせんな恥ずかしい
0577デフォルトの名無しさん2013/04/30(火) 17:42:51.13
>>574 お前が提案のチャンスを逃したせいだろ。今さら文句言うなよ。
05785672013/04/30(火) 19:02:09.16
やっぱりtemplate付けないとだめじゃん。
http://d.hatena.ne.jp/faith_and_brave/20080128/1201510970
0579デフォルトの名無しさん2013/04/30(火) 19:27:46.46
おまえらよくそんな膨大な仕様が
あたまに入ってるな
0580デフォルトの名無しさん2013/04/30(火) 19:35:30.46
そらあ、仕様を読まずに書いて失敗したからな
リーマンショックでやばい時期だったから、必死にもなるわ
C#だけどな
0581デフォルトの名無しさん2013/04/30(火) 19:52:00.45
>>578
↓のコメントアウトはずしてエラーメッセージ読んでみ
http://ideone.com/9ogFHt
0582デフォルトの名無しさん2013/04/30(火) 20:06:23.83
aの型がテンプレートパラメーターの時は
a.testが何物かわからないのでtemplateが必用。
aの型がわかっているときは要らない、なのかな。
こんなくだらないことでおまえら大先生の意見が分かれるとは
やはりC++はKUSOだな。
0583デフォルトの名無しさん2013/04/30(火) 20:12:01.02
規格の該当個所はよ
0584デフォルトの名無しさん2013/04/30(火) 20:15:53.53
567はtemplate限定子がどういうものなのか全く分かってない

template限定子はtemplate引数型のtemplateメンバを使う際に付けるもの
template引数型はどんなメンバを持つか分からないから、
とりあえず変数か通常の関数として解釈される
それを曲げてtemplateメンバと解釈させたければtemplate限定子が必要になるし、
型と解釈させたければtypename限定子が必要になる
これ以外のケースでは限定子は使われないし、使えない

入門書にも書いてあるレベルだと思うが
0585デフォルトの名無しさん2013/04/30(火) 20:20:21.97
いや入門書はiostreamと
間違いだらけのクラス概説で終わるから
0586デフォルトの名無しさん2013/04/30(火) 20:23:27.97
限定子も書いてない入門書なんてポイしなさい! ポイ!
0587デフォルトの名無しさん2013/04/30(火) 20:28:09.72
同じキーワードが色々な意味で
使い回されるからこういいった間違いが起こる。
やっぱりC++はウンコだね おウンコ
0588デフォルトの名無しさん2013/04/30(火) 20:28:12.68
>>581 コンパイラが未対応なだけだろ
http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#468
0589デフォルトの名無しさん2013/04/30(火) 20:30:55.03
初心者はまず入門書としてハーブサッターとアンドレイアレクサンドレスクと禿を読みなさい!
0590デフォルトの名無しさん2013/04/30(火) 20:33:53.74
ウンコウンコいいながらこのスレに執着してる奴ってどんだけウンコ好きなんだよ
0591デフォルトの名無しさん2013/04/30(火) 20:45:34.59
今手元の入門書見たら、typename限定子は書いてたけどtemplate限定子は書いてなかった
0592デフォルトの名無しさん2013/04/30(火) 20:47:33.03
おっとーー、ここで規格マニアのアスぺ>>588が登場!
アスぺにはアスペな回答をしてあげよう

誰も付けちゃいけないなんて言ってないよ?
0593デフォルトの名無しさん2013/04/30(火) 20:57:50.53
ロベールだと837ページに書いてあった
0594デフォルトの名無しさん2013/04/30(火) 20:59:38.21
なんて書いてあるの!
0595デフォルトの名無しさん2013/04/30(火) 21:00:58.17
>>594
6つ前のレスくらい嫁よ
0596デフォルトの名無しさん2013/04/30(火) 21:07:13.19
>>578
class hoge って...
これで情報はウンコって決定だな
0597デフォルトの名無しさん2013/04/30(火) 21:10:29.76
C++がKUSOなのは今に始まったことではないね

ファイル1:
extern int g;//外部リンケージ

ファイル2:
static int g;
extern int g;//内部リンケージ

こんな言語がウンコでないなわけがない
0598デフォルトの名無しさん2013/04/30(火) 21:13:02.82
>>597
>C++がKUSO
だからC#なんてのを作ったんだろ
0599デフォルトの名無しさん2013/04/30(火) 21:14:28.23
>>592
C++03まではつけてはいけない
>>588が言ってんのはC++11の話
0600デフォルトの名無しさん2013/04/30(火) 21:21:01.52
>>599
いや、もともと>>567は書く必用があるかどうかの議論でしょ。
なんで>>588は書いてもいいかどうかになっちゃうのさ
0601デフォルトの名無しさん2013/04/30(火) 21:36:28.50
>>600
C++03ではaの型がテンプレート引数なら必須、それ以外は「つけちゃいけない」
C++11では他のケースでも「書いていい」と言ってるのが>>588
0602デフォルトの名無しさん2013/04/30(火) 21:36:40.28
>>597
externって…何だっけ?
0603デフォルトの名無しさん2013/04/30(火) 21:40:11.63
先生、お時間です
0604デフォルトの名無しさん2013/04/30(火) 21:40:40.94
まとめると
C++11では明示的にするために
a.template test<int>(); がOKになった
当然、a.test<int>();もOK
で、C++03(まで?)では明示は駄目だから
a.test<int>(); にしる

こんな感じか
0605デフォルトの名無しさん2013/04/30(火) 21:43:58.17
>>604
aの型がテンプレート引数でない場合は、な

>>603
externなんぞ害悪にしかならんので忘れてよろしい
0606デフォルトの名無しさん2013/04/30(火) 21:54:11.85
aの型がテンプレ引数の時
 ○ a.template test<int>();
 × a.test<int>();
aの型がテンプレでないとき
 △ a.template test<int>();//昔はダメ。G++は今もダメ?
 ○ a.test<int>();

勉強になったよ。奥が深いね…
0607デフォルトの名無しさん2013/04/30(火) 21:55:52.77
>>605
アホなこと聞くけど
aの型がテンプレート引数ってコードだとどんなの
0608デフォルトの名無しさん2013/04/30(火) 21:57:28.37
>>607
>>578をよみなおせ!
0609デフォルトの名無しさん2013/04/30(火) 22:08:01.46
>>606の
aの型がテンプレでないとき
 △ a.template test<int>();//昔はダメ。G++は今もダメ?
はC++11の仕様はNG? それともOK?
0610デフォルトの名無しさん2013/04/30(火) 22:09:53.36
>>609
11もOK。
>>588にあるよう、14.2の第5段落に
ほぼ同じことが書いてある
0611デフォルトの名無しさん2013/04/30(火) 22:21:56.45
おまえらパソコンの大先生だな
どんだけ人生の貴重な時間を
ウンコの時間に割いてるわけ
0612デフォルトの名無しさん2013/04/30(火) 22:23:16.30
FDIS見たらきちんとacceptされてたわ
こんなマイナーな仕様変更とかどこで情報得てるんだ? >>588は
0613デフォルトの名無しさん2013/04/30(火) 22:29:49.03
もう一つのスレで噂になってた
自称アスペさんじゃないの?
GCCも実装漏れするマイナー仕様変更が
ぱっと出てくるなんて
0614デフォルトの名無しさん2013/04/30(火) 22:36:11.95
なんにせよすげえわ
参考になる
0615デフォルトの名無しさん2013/05/01(水) 01:03:40.70
テンプレートなんてヘッダで定義してまでメンバで使ってるのがもうお笑い種
いちいち書かないとTとconst T&の呼び分けすらしてくれない欠陥品をよく使ってるもんだと感心します
プリミティブのconst参照なんて認めて誰が得するんですか?
限定子やら特殊化やらで結局ゴチャゴチャさせんのなら
素直にオーバーロードした方が綺麗で早そうだね^^;
アッタマ悪ぃ言語w
0616デフォルトの名無しさん2013/05/01(水) 01:21:38.39
釣りとしてはイマイチ。
だけどテンプレートを暗黙でインスタンス化
しようとしたらヘッダーが肥大化するし、
翻訳単位ごとに重複したインスタンスを
ODRで一つにする動作も見苦しい。
C#は実行時にインスタンス化だっけ?
0617デフォルトの名無しさん2013/05/01(水) 01:45:32.34
>Tとconst T&の呼び分け
正直、スマンカッタ。反省してる。
今度からf(T &&)とf(T const &)のオーバーロードだけにしてくれ。
0618デフォルトの名無しさん2013/05/01(水) 06:21:00.27
そして、部分特殊化とオーバーロードの議論に
0619デフォルトの名無しさん2013/05/01(水) 17:02:08.29
>>597
ファイル2でコンパイルエラーだろ。
そんな結果になるのならクソなのはコンパイラのほうじゃないの?
0620デフォルトの名無しさん2013/05/01(水) 17:10:16.04
>>619
規格も知らんアホは黙っとけ
0621デフォルトの名無しさん2013/05/01(水) 17:13:26.32
>>620
7.1.1 [dcl.stc] p8 "The linkages implied by successive declarations for a given entity shall agree."
0622デフォルトの名無しさん2013/05/01(水) 17:20:02.47
>>621
http://stackoverflow.com/questions/14403796/can-a-variable-be-declared-both-static-and-extern
0623デフォルトの名無しさん2013/05/01(水) 17:36:33.00
>>619
炎上勉強法はもういいです
0624デフォルトの名無しさん2013/05/01(水) 17:38:32.53
炎上勉強法って何?wwwwwwwwwwwwwwwww
炎上学習法なら知ってるけどwwwwwwwwwwwwwwwwwwwww
0625デフォルトの名無しさん2013/05/01(水) 17:51:53.99
坊主、そんなにたくさん草ばかり生やしてもダメだ
ちゃんと乾燥させておくんだ
0626デフォルトの名無しさん2013/05/01(水) 18:06:38.39
>>622
Cのほうはちゃんと規格の文言に基づいて説明できてるけど、C++のほうには対応する文言が
無いから、やっぱり>>621のルールでアウトなんじゃないの?
0627デフォルトの名無しさん2013/05/01(水) 18:07:36.13
>>622
何でそうなるんだっけ?
CだとISO/IEC 9899:2011の6.2.2-4に明記してある。
if the prior declaration specifies internal or
external linkage, the linkage of the identifier at the later declaration is the same as the
linkage specified at the prior declaration.

C++の7.1.1には確かに例があるけど、定義は3.5を見ろと書いてあって
3.5のどこを読んだらそうなる?
3.5の内部リンケージの定義に該当しないような
0628デフォルトの名無しさん2013/05/01(水) 19:41:52.32
やはりC++はブリブリUNKO
おまえらパソコンの大先生が古文書片手に議論しても
意見がまとまらないなんて、国際標準が意味をなしてない
0629デフォルトの名無しさん2013/05/01(水) 20:20:04.58
C++がウンコだとしても仕事がそのウンコでしか出来ないことも多々あるし、そもそもこれ以上のウンコなんて山ほど転がってる。
0630デフォルトの名無しさん2013/05/01(水) 20:46:53.86
>>627
3.5のパラグラフ3〜4と7.1.1のパラグラフ8を総合した結果だろうな
分かりづらいけど、例もあるし、エラーにならないのは間違いはない
0631デフォルトの名無しさん2013/05/01(水) 21:03:17.14
>>630 これのどこをどう読んだらexternが内部リンケージになるのさ?
国語は苦手なんで教えて欲しい

3.5 段落3
名前空間スコープの名前が内部リンケージとなる条件は以下(俺訳)
a variable, function or function template that is explicitly declared static; or,
a variable that is explicitly declared const or constexpr and neither explicitly declared extern nor
previously declared to have external linkage; or
a data member of an anonymous union.

3.5 段落4
名前空間スコープの名前は前述の内部リンケージでない限り外部リンケージ(俺訳)

7.1.1 段落8
static int b; // b has internal linkage
extern int b; // b still has internal linkage ←???
0632デフォルトの名無しさん2013/05/01(水) 21:04:56.23
>>630
どこをどう読んだら>>597の例が>>621のルールに反していないと言えるのか、詳しく。

例以外に根拠にないなら、例が不正ということになるだろうし。
0633デフォルトの名無しさん2013/05/01(水) 21:07:09.57
文盲がいるな
>>627は定義と例が矛盾してるって言ってんだろ
0634デフォルトの名無しさん2013/05/01(水) 21:15:27.60
・staticで宣言されていれば必ず内部リンケージ(3.5)
・後続の宣言は同じリンケージを持つ(7.1.1)
・externを付けると必ず外部リンケージになるという項目は存在しない

これらを総合すると・・・
0635デフォルトの名無しさん2013/05/01(水) 21:37:42.68
>>634
> ・後続の宣言は同じリンケージを持つ(7.1.1)
こんなことが書いてあるのは見当たらない・・・該当箇所の引用もくれ。
0636デフォルトの名無しさん2013/05/01(水) 21:40:26.05
>>634
>後続の宣言は同じリンケージを持つ(7.1.1)
これは
>each declaration declaring the same variable name or the same overloading of a function name shall imply
the same linkage
のこと?

だとしたら3.5の4-5と7.1.1の8が矛盾してない?
0637デフォルトの名無しさん2013/05/01(水) 21:45:19.24
-----ここまで俺の自演 v(。・ω・。)ィェィ♪-----
0638デフォルトの名無しさん2013/05/01(水) 21:46:44.90
C++、KUSOすぎww
externごときでもめんなよ大先生ども
0639デフォルトの名無しさん2013/05/01(水) 21:47:47.65
extern使ったことないわ
何に使うんだっけ
0640デフォルトの名無しさん2013/05/01(水) 21:51:31.37
cout
0641デフォルトの名無しさん2013/05/01(水) 21:52:23.04
先生、お時間です
0642デフォルトの名無しさん2013/05/01(水) 21:55:55.72
規制されてて携帯からなので引用は難しい
>>636はサンクス

>>597のgを解析する際にも恐らく3.5のパラグラフ3が適用されるのではないだろうか
いつstaticが付けられたかにまで言及してないので
0643デフォルトの名無しさん2013/05/01(水) 21:59:33.24
最後のgを解析する際にも、ね
0644デフォルトの名無しさん2013/05/01(水) 21:59:44.68
>>642
> いつstaticが付けられたかにまで言及してないので

その解釈だと extern が先で static が後のケースも通らないとおかしいんじゃないか?
0645デフォルトの名無しさん2013/05/01(水) 22:02:56.68
>>642
3.5-3 A name having namespace scope (3.3.6) has internal linkage if it is the name of
a variable, function or function template that is explicitly declared static

これを読んで「その変数はexternでも以前の宣言でstaticだった場合も」
と思うのなら国語力が怪しい
0646デフォルトの名無しさん2013/05/01(水) 22:04:22.54
>>645文字化けしてんぞボケ
0647デフォルトの名無しさん2013/05/01(水) 22:14:13.34
>>644
プログラムは上から順番に解析されるので、
その場合はexternを解析する時点ではまだstaticがないので3.5のパラグラフ4に従って外部リンケージになる
staticを解釈すると3.5のパラグラフ3に従って内部リンケージになるけど、7.1.1に反するのでエラー、
じゃないかな

>>645
いや、そんなことはない
その項目は識別子に対する規則であって宣言対する規則ではないから、主語から見て

まあ、Cではすっきり書かれていた規則が
なんでここまで分かりにくくなってるんだろうとは思う
0648デフォルトの名無しさん2013/05/01(水) 22:51:25.28
>>647
>いや、そんなことはない

ではexternは(明示的なstaticがないから)内部リンケージでないということになるのでは?
わかりにくいでなく、3.5の定義からどうしてexternが内部リンケージ足り得るのか、ご教示願いまする
0649デフォルトの名無しさん2013/05/01(水) 23:03:35.10
やはりC++は超ブリブリおUNKO
おまいらパソコンの大先生が古文書片手に議論しても
意見がまとまらないなんて、国際標準が意味をなしていない
スカトロプレイもたいがいにして、仕事が他言語に奪われてレーゾンデートルが無くなった事実を認識したほうがいい
0650デフォルトの名無しさん2013/05/01(水) 23:18:33.58
extern 付いた宣言が外部リンケージになるのは、 extern が付いてるからじゃなくて、
実は先行する宣言含めて static が付いてないから、ってことかー。わかりにくいなー。
0651デフォルトの名無しさん2013/05/01(水) 23:20:52.19
>>648
3.5は主語が識別子なので、
例えば、宣言以外で出てきたgに対しても適用される
こう書けば分かると思う

static int g; ← 内部リンケージ
void foo(){g=1;} ← 3.5により、内部リンケージ
extern int g; ← 3.5により内部リンケージ
0652デフォルトの名無しさん2013/05/01(水) 23:24:49.85
>>650
>わかりにくいな
だから>>597で糞認定された

>>651
わかりやすいな
言語仕様はわかりにくいけど
0653デフォルトの名無しさん2013/05/01(水) 23:38:50.08
>extern int g; ← 3.5により内部リンケージ
ダウト
これはgが前のgと同じと判断する前に外部リンケージ変数の宣言と見なすべきで
結果、同名の異なるリンケージ宣言でエラーとすべき
0654デフォルトの名無しさん2013/05/01(水) 23:46:10.05
>>653
そんなこと書いた規則は存在しない
こう書いた方が分かりやすいか

static int g;
void foo(){g=1;} ← 3.5により内部リンケージ
extern int g;
void bar(){g=2;} ← 3.5により内部リンケージ

先入観を捨てて規格と照らし合わせる事だ
0655デフォルトの名無しさん2013/05/01(水) 23:49:58.12
>>654
static int g;
void foo(){g=1;} ← 3.5により内部リンケージ
extern int g; ←★これは何だったのおかしくね?
void bar(){g=2;} ← 3.5により内部リンケージ
0656デフォルトの名無しさん2013/05/02(木) 00:24:45.41
何だったも何も、何にもならない
規格を厳密に適用するとそうなるんだから仕方がない
0657デフォルトの名無しさん2013/05/02(木) 00:27:36.32
>>655
extern が付いてたら外部リンケージになるっていう規定は無いんだから、
リンケージについては何も関与せず、ただ定義ではないことを示すのみ。
0658デフォルトの名無しさん2013/05/02(木) 00:33:57.19
>>657
>extern が付いてたら外部リンケージになるっていう規定は無いんだから、
>リンケージについては何も関与せず、ただ定義ではないことを示すのみ。

じゃあ
extern int g;
static int g:
これもokだよね?
0659デフォルトの名無しさん2013/05/02(木) 00:34:16.79
俺も最初この仕様を知った時キモッ!って思ったので気持ちは分かる
でもそういうものなので諦めれ
0660デフォルトの名無しさん2013/05/02(木) 00:35:42.11
>>658
>>647
0661デフォルトの名無しさん2013/05/02(木) 00:44:35.34
だから「そういうもの」が3.5のどこに書いてあるのか示せばいいだけだろ
Cとかブロックスコープの3.5p6のような記述を
0662デフォルトの名無しさん2013/05/02(木) 00:47:08.69
おまいら、段落番号で会話すんなよ
0663デフォルトの名無しさん2013/05/02(木) 00:50:58.51
3.5p4に外部リンケージの定義がある
内部リンケージでなく無名名前空間外なら外部リンケージというもの

この定義の中にexternなんて語は1つも出てこない
(constかconstexprがつく場合を除く)
0664デフォルトの名無しさん2013/05/02(木) 00:59:37.33
>>663
内部リンケージかどうかの定義が>>631でそ。
だったら>>597の二つ目はstaticが無いから
外部リンケージだね。
Cにあった「前の宣言に従う」ルールを
C++では削除してんだから。
0665デフォルトの名無しさん2013/05/02(木) 01:11:39.22
>>661
まず3.5は限りなくグレーだ。
Cにあった説明が無いから
前の宣言を引き継ぐか
その宣言内で判断すべきか
が自明ではない。つまり
3.5だけでは完結しない。

一方、7.1.1は明確だ。
これらを総合すると、
3.5の怪しい記述は
「Cと同じルールが適用される」
という結論になる。
これで完璧。
0666デフォルトの名無しさん2013/05/02(木) 01:31:07.65
>>665
Cとはそもそも内部リンケージの定義が違う
Cでは宣言がstaticを含むなら、その宣言内の識別子(the identifier)は内部リンケージを持つと言っている
C++ではある識別子(a name)はstatic付きで宣言されていれば内部リンケージだと言っている
一見微妙な差に見えるけど、C++は宣言以外の位置にも適用できるようになっている・・・と思う
0667デフォルトの名無しさん2013/05/02(木) 02:02:38.53
C++というよりWG21がKUSOだな
難解な上にどうとでもとれる糞記述
仕様の共通化を計るための標準が
目的を果たしていないといっていい
そういう意味では禿の書物は偉大
0668デフォルトの名無しさん2013/05/02(木) 02:35:18.05
(⊃д⊂)コンバン・・・∩・д・∩ワー
ここは入門レベルの高いスレですね・・・
ぜんぜんついていけません(><)
0669デフォルトの名無しさん2013/05/02(木) 03:08:40.43
>>668
回答者が社会の底辺の糞なので気にしないように
0670デフォルトの名無しさん2013/05/02(木) 03:24:58.27
回答者は>>36-37みたいな人です
0671デフォルトの名無しさん2013/05/02(木) 03:56:40.42
>>668
マジレスするとこの辺は高いスルースキルが求められている
誰とは言わないが、不必要だと思われるレスはNG等でフィルタリング必須
名目上は↓が初質スレだが、流れが初心者向けじゃない気がするんだぜ……
【初心者歓迎】C/C++室 Ver.84【環境依存OK】
http://toro.2ch.net/test/read.cgi/tech/1367137639/
0672デフォルトの名無しさん2013/05/02(木) 04:20:07.64
ちょ、除いてみたら基地外スレじゃねーか
そっちの方がスルースキル上級
0673デフォルトの名無しさん2013/05/02(木) 04:36:46.95
水晶NGワード
 KUSO
 UNKO
 糞
 ウンコ
 段落
 オナニー
 www
0674デフォルトの名無しさん2013/05/02(木) 05:25:04.46
               /\___/\
              / ⌒ 俺 ⌒ ;\   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
              | (●), 、(●)、 |  | キンタマ中古C言語命!!”
        ⊂.    |  ,,ノ(、_, )ヽ、,,   | < 今日もキンタマ中古C言語でソース乞食するゾォォオオ〜っ♪”
       ,r----、__|.Javaト‐=‐ァ'   .::::|  | 仕事レポート全部くれくれ乞食するぞォォォオオオオ〜っ!”
      /Ruby     \最強ニニ´  .:::/   \____________________
      (ひま,/¬--v   \____/⌒\     
     /⌒ (    ]  |丶 ̄ ̄  /丿  丿      ─
    (_  _丿    ,ノ--v_\ 糞  ノ   ノ       ─
       ̄      ノ宿敵 リ--─ーARM八      
            〔 マシン語 Python__,ノ′ヽ       ギャハハ!!!! バ〜〜〜カ♪”
          ,ノ'' ー--ー┘■■ ̄\  │     
          /    /  ̄■■■/ \  |        #○&#$△#%&$▼&%#!!!!
         ノ   /]アンチ|■AMD命|\|       \\   (↑意味不明w)
         |  /  .| Intel |  )   ノ    
         |/′   |    .|  |---く       
               |    |  \  ] ※)一部見苦しい部分がありますが御了承下さい。
0675デフォルトの名無しさん2013/05/02(木) 08:19:41.10
>>672
「この辺」と言っただろうに
それの前スレはまだマシだったんだぜ……?
0676デフォルトの名無しさん2013/05/02(木) 10:44:52.00
どうしてJavaやC#使いはC++に憧れるのか
C++を勉強するJavaやC#使いが急増中
C++に男らしさを感じる人が一番多いことが判明
Javaは恥ずかしいと泣きながらC++使いに謝る
JavaがC++の実行速度を上回る!?禁断の-serverオプション
Java/C#使いの半数はC++を使えることが判明

〜勧告ニュース板より〜
0677デフォルトの名無しさん2013/05/02(木) 10:45:24.63
STLのstringで、先頭の1文字を削除するシンプルでエレガントな書き方を教えてください。
0678デフォルトの名無しさん2013/05/02(木) 10:48:28.32
>>677
まずあなたがボツにした案を列挙していただかないことには、何を答えても
「シンプルじゃない」「エレガントじゃない」と言われそうな気がするので、あまり
気が進みませんね。
06796772013/05/02(木) 11:00:52.78
wstring str;

// 文字列取得

str.erase( 0, 1 );

でいけました!
失礼しました。
0680デフォルトの名無しさん2013/05/02(木) 13:16:04.65
STLのstringで、先頭の1文字を削除するシンプルでエレファントな書き方を教えてください。

思いついたのは
string deleter(string s)
{
vector<char> s2(&s[1], &s[s.size()]);
s2.push_bacck(0);
string s3(s2.begin());
retuen move(s3);
}
0681デフォルトの名無しさん2013/05/02(木) 14:17:05.76
>>679
とてもエレガントとはいえないな
0682デフォルトの名無しさん2013/05/02(木) 14:22:30.26
>>677
破壊的でいいなら
str.erace(str.begin());
でいいんでないの
0683デフォルトの名無しさん2013/05/02(木) 15:04:16.11
うるさいゴミ
0684デフォルトの名無しさん2013/05/02(木) 15:29:46.72
>>683
いきなりゴミって、どういう事ですか?君には社会の常識がないのですか?
普通は、『あのう、すいませんけれどもレスしないでくれませんか?』とか
『あなたには、スルーという選択肢もありますよ』とか言うものですよ、
あなたみたいに最初から喧嘩腰だと、
言われた方『じゃぁスルーしてみようかな』とかいう気持ちがなくなるものです。
まずは、親切丁寧に人にROMしてくださいと頼むべきだと思いますよ。
そこから、人の輪と協調が生まれ、『よーしクソレス止めてみるか』という気持ちが生まれるわけです
0685デフォルトの名無しさん2013/05/02(木) 17:44:27.34
>>683
お前「コンロバーナーwww」だろ
0686デフォルトの名無しさん2013/05/02(木) 17:45:01.26
やかましいゴミ
0687デフォルトの名無しさん2013/05/02(木) 17:45:18.74
>>685
0688デフォルトの名無しさん2013/05/02(木) 17:49:35.02
by seikyou.ne.jp
0689デフォルトの名無しさん2013/05/02(木) 19:36:36.45
性教育か
0690デフォルトの名無しさん2013/05/02(木) 21:32:45.09
このスレも初心者歓迎スレやapiスレっぽくなってきたな
hogeキチが普通の人のC/C++スレは荒れてないと面白くないからな
0691デフォルトの名無しさん2013/05/03(金) 01:28:52.86
世の中には「ごみ」という名字の人も居る
0692デフォルトの名無しさん2013/05/03(金) 01:39:45.92
「くず」さんもいた
「アホカス」さん、「メガチンポ」さん、「カタイネン」さん、・・・etc
0693デフォルトの名無しさん2013/05/03(金) 02:05:34.44
「相談」しよーそーしよー
0694デフォルトの名無しさん2013/05/03(金) 15:59:07.81
このメソッドはオーバーライドしています/オーバーロードしています
というのを明示する修飾子ってなんかある?
0695デフォルトの名無しさん2013/05/03(金) 16:01:51.57
override
06966952013/05/03(金) 16:02:55.29
オーバーロードはたぶん無い
0697デフォルトの名無しさん2013/05/03(金) 16:10:02.49
書く順番は
void f() const volatile && final override throw()
であってる?
0698デフォルトの名無しさん2013/05/03(金) 16:15:08.90
-> decltype()もおながいします
0699デフォルトの名無しさん2013/05/03(金) 16:21:42.52
>>695
ありがとう
これってC#にしかない?
0700デフォルトの名無しさん2013/05/03(金) 16:23:27.03
>>699
overrideはBisual C++ 2012でもいけるはずだが
0701デフォルトの名無しさん2013/05/03(金) 16:23:55.94
ごめん俺が勘違いしてたC++11からあj
0702デフォルトの名無しさん2013/05/03(金) 17:12:51.18
Visual C++ 2012だと
auto test() const volatile throw() -> decltype(0) final override
G++ 4.7.3だと
auto test() const volatile throw() final override -> decltype(0)
まあG++の方が正しいんだろうなたぶん
0703デフォルトの名無しさん2013/05/03(金) 17:43:18.34
8.4.1p1-2ではvirt-specifierはtrailing-return-typeの後。
なので順番はこんな感じの筈。
[[noreturn]] inline virtual auto test() const volatile && throw() [[noreturn]] -> decltype((void)0) final override try
{
std::exit(0);
}
catch(...)
{
}
0704デフォルトの名無しさん2013/05/03(金) 21:06:53.47
voidで渡されたポインターから
元のクラスを調べることはできますか?
void * p=get();
if ( pがクラスAか? )
else if ( pがクラスBか? )
0705デフォルトの名無しさん2013/05/03(金) 21:15:30.31
先頭にハッシュでも置いたら?
0706デフォルトの名無しさん2013/05/03(金) 21:21:25.30
基本的には無理
型情報を一緒に渡すか、
データの先頭に型情報を置くかする必要がある
0707デフォルトの名無しさん2013/05/03(金) 21:41:13.59
辞書データ構造のことをハッシュと言う奴は低脳
0708デフォルトの名無しさん2013/05/03(金) 21:43:30.57
お前は突然何を言ってるんだ
0709デフォルトの名無しさん2013/05/03(金) 21:45:46.78
http://stackoverflow.com/questions/6572191/how-to-get-the-typeid-of-a-void-pointer
がんばればvoid*でも取得できそう
0710デフォルトの名無しさん2013/05/03(金) 21:53:21.47
いつも誰かを叩いていないと不安神経症で死んじゃうんです。
お察しください。
0711デフォルトの名無しさん2013/05/03(金) 21:56:12.88
ハッシュドビーフは大好きです
0712デフォルトの名無しさん2013/05/03(金) 22:53:45.89
>>709
ハッシュテーブルを自分で準備して自分でタイプ分けしてね、というのがまっとうで、あと神クラスを作れ、とかもありますね。
0713デフォルトの名無しさん2013/05/03(金) 23:11:51.36
03で書いてるページ全滅しないかな
職場の老害が値渡しにいちいちアレルギー起こして困る
ついでにconstexprすら実装してない腐れVSも
0714デフォルトの名無しさん2013/05/03(金) 23:26:32.08
VS2012でarrayが予約後みたいになってるんですけど
namespace a
{
struct array{};
}
のように新たな名前空間でarrayを使っても平気ですか?
0715デフォルトの名無しさん2013/05/03(金) 23:28:47.04
>>714
std::arrayクラスとかあるんだから
何ら問題無かろう
0716デフォルトの名無しさん2013/05/03(金) 23:39:31.57
>>712
どうしてデータ構造がハッシュテーブル限定なのかkwsk
0717デフォルトの名無しさん2013/05/03(金) 23:46:23.19
>>714
MDSNライブラリ>開発ツールと言語ドキュメント>Visual Studio2012
>Visual C++>C++言語および標準ライブラリ>C/C++言語>C++言語リファレンス
>構文の規則>C++のキーワード
http://msdn.microsoft.com/ja-jp/library/2e6a4at9.aspx
『They cannot be used as identifiers in your program』
0718デフォルトの名無しさん2013/05/03(金) 23:47:45.33
>>716
std::mapかハッシュテーブル(なんでもいいけど)
って書いてある
0719デフォルトの名無しさん2013/05/03(金) 23:50:00.51
STLがイケメンすぎてつらい。
0720デフォルトの名無しさん2013/05/04(土) 00:08:45.87
>>716
ごめんstd::map は平衡二分木だったんだね連想記憶はすべからくハッシュ関数を使っているものだと思い込んでいた
0721デフォルトの名無しさん2013/05/04(土) 00:17:30.86
>>720
他の言語でもそうだけど、何で連想配列が
std::mapとstd::unorderd_mapの
二種類あるのかは知っておかないとやばい。
ただmapはBツリーだなんて決まってないよ
0722デフォルトの名無しさん2013/05/04(土) 01:13:28.48
>>703
これがC++11なのか?
ずいぶんと変態な言語だなおい
07237202013/05/04(土) 04:23:23.56
>>721
同意
0724デフォルトの名無しさん2013/05/04(土) 17:36:30.06
どなたかおしえてください

↓こういう雰囲気でやりたいのですがよく分かりません
codepad.org/KFWuHc9w
0725デフォルトの名無しさん2013/05/04(土) 17:50:03.59
class Line;

class Point {
private:
double x, y;
public:
Point(double x, double y) : x(x), y(y) {}
Line getLine(Point b);
};

class Line {
private:
Point a, b;
public:
Line(Point a, Point b) : a(a), b(b) {}
};

Line Point::getLine(Point b)
{
return Line(*this, b);
}
0726デフォルトの名無しさん2013/05/04(土) 18:15:23.19
ちなみに実行例

http://codepad.org/YJMfuxcI
0727デフォルトの名無しさん2013/05/04(土) 18:16:30.01
y(3.3, 4.4)は不要だったな
07287242013/05/04(土) 18:25:30.04
>>725-727

大変ありがとうございます!
教えて頂きたかった部分以外にも色々と勉強になります
0729デフォルトの名無しさん2013/05/04(土) 18:27:24.38
C#だと前方宣言なんて必要ないんで、とまどうかもね
最悪の場合クラスへのポインタを持っておくとか
あ、でもnewも不完全型には適用出来ないのか
0730デフォルトの名無しさん2013/05/04(土) 18:30:19.27
そこでPimplですよ
あと、どうしてもおかしな循環参照になってしまう場合、クラスの設計をやり直す
0731デフォルトの名無しさん2013/05/04(土) 19:54:26.33
誰か
Line getLine(Point b)
に突っ込めよ
0732デフォルトの名無しさん2013/05/04(土) 20:27:01.76
今言っても分からないんじゃないかと思って黙ってたけど
普通に変換コンストラクタで行けるのにな
0733デフォルトの名無しさん2013/05/04(土) 20:56:56.23
[Mac/NUC] AGK / DarkBASIC / Basic4GL / 99BASIC 2013 Part.1
http://jbbs.livedoor.jp/bbs/read.cgi/computer/43761/1367197701/l100
0734デフォルトの名無しさん2013/05/04(土) 21:14:29.42
C++良く知らないんけど
>>725の
Line Point::getLine(Point b)で
Line(*this, b);
これになんで*thisつけるないといけない?
0735デフォルトの名無しさん2013/05/04(土) 21:20:32.82
は?
0736デフォルトの名無しさん2013/05/04(土) 21:27:19.73
>>734の最後修正
これになんで*thisつけないといけない?
0737デフォルトの名無しさん2013/05/04(土) 21:35:00.84
そんな修正はいらない。
Lineは2つのPointからオブジェクトを生成するから
*thisと引数の二つを使用した。
何か問題でも?
0738デフォルトの名無しさん2013/05/04(土) 21:35:06.43
自分自身のインスタンスを渡したいんだろ
他に意味があるか?
0739デフォルトの名無しさん2013/05/04(土) 21:54:22.04
わざわざ、this渡したの
Line(Point b)がない。つまり
自分自身と引数のPoint bから新たなLineを生成するメソッドがないからってこと?
それを作れって言っているのが>>732の変換コンストラクタ?
0740デフォルトの名無しさん2013/05/04(土) 21:57:31.51
>>739
>自分自身と引数のPoint bから新たなLineを生成するメソッドがないから

それがgetLineなのだが、オマエは何を言っているんだ?
0741デフォルトの名無しさん2013/05/04(土) 22:01:48.53
変換コンストラクターは>>732の世迷い言なので気にしなくていい
0742デフォルトの名無しさん2013/05/04(土) 22:11:50.33
ああ、Line(Point a, Point b)みたいのがあればいいのに
自分自身と引数から作るメソッドなんて不要
0743デフォルトの名無しさん2013/05/04(土) 22:14:54.30
>>742
>みたいのがあれば
いやすでにあるだろう。

Line l = x.getLine(Point(5.5, 6.6));
なんて不要で
Line l(x, Point(5.5, 6.6));
にする。
少なくともPointにgetLineというのは意味的におかしい
0744デフォルトの名無しさん2013/05/04(土) 22:20:41.93
C++ってホントに難しいですね
0745デフォルトの名無しさん2013/05/04(土) 22:35:15.13
効率の良い機械語に落とすために人間が苦労する言語だから仕方がない
楽をしたかったらC#でも使っとけ
0746デフォルトの名無しさん2013/05/04(土) 22:35:52.47
C++のムダのなさは快感。
0747デフォルトの名無しさん2013/05/04(土) 22:40:16.99
不要なアクセサを取り去ってすっきりさせてみた

http://codepad.org/LlcNqUny
0748デフォルトの名無しさん2013/05/04(土) 22:47:44.79
いつも思うんですけど
friend std::ostream& operator<<
って糞コードですよね?
全うな設計者ならpublicなtoString()を作ると思うんです
0749デフォルトの名無しさん2013/05/04(土) 22:57:52.72
>>744
完全に理解してる奴なんてこの地上に存在しないってレベルだからな
0750デフォルトの名無しさん2013/05/04(土) 23:12:12.89
誰も突っ込まないみたいだけど。

>>721
普通、Bツリーって言ったら二分木(Binary tree)のことじゃなくて
特定の多分岐平衡木構造をさすと思うが。
ディスク上のデータによく使われるやつ。

map の実装が二分木なんて決まってないのはその通りなんでいいけど。
0751デフォルトの名無しさん2013/05/04(土) 23:15:58.30
clock_tとint32_tとかの_tってなんですか?
0752デフォルトの名無しさん2013/05/04(土) 23:19:11.48
tits
0753デフォルトの名無しさん2013/05/04(土) 23:24:29.60
big
0754デフォルトの名無しさん2013/05/04(土) 23:41:19.24
>>751
型(type)

昔は(規格内では)typedef型にのみ使われてたけど、
今はwchar_tとか予約語でも使われてる
0755デフォルトの名無しさん2013/05/05(日) 00:47:32.21
void get_string(std::string& result); と std::string get_string(); は、
後者は戻り値で余計なコピーが派生するから前者のほうが速いって、
以前言われたんですが、C++11でも同じですか?
0756デフォルトの名無しさん2013/05/05(日) 00:58:25.83
>>755
C++11なら後者の方が同じか速いし何より書きやすい。
0757デフォルトの名無しさん2013/05/05(日) 00:59:36.22
>>755
get_stringの戻り値で変数を「初期化」するなら、
戻り値最適化が(普通は)働いて
C++03でも後者の方が引数のクリアが必要ない分だけ速い
「代入」するなら確かにC++03だと遅くなるので、
平均的には多分遅くなる(使い方次第だけど)

これはC++11だと右辺値参照引数の代入演算子のおかげで解消される
07587212013/05/05(日) 02:13:39.86
>>750
やや、BはバランスのBと理解しているが

>>757
>「代入」するなら確かにC++03だと遅くなるので、
具体的にどこで遅くなるんだっけか?
この手の話で関連するのは
・初期化先への直接コンストラクト(初期化の話なので関係なし)
・関数内ローカルから戻り値tmpのコピー(関数内なので関係なし)
・戻り値tmpから受け取り側へのコピー(03でも省略許可されていたような)
0759デフォルトの名無しさん2013/05/05(日) 02:45:30.38
>>748
それはすべてのオブジェクトが神オブジェクトから派生することを前提に使える仕様、C++ なら自分でそうすればいい
0760デフォルトの名無しさん2013/05/05(日) 02:56:42.49
>>758
3つ目
省略可能なのはコピーコンストラクタのみ
代入は省略できない
0761デフォルトの名無しさん2013/05/05(日) 03:03:59.38
>>760
代入は確かにコピコンじゃないわな。
でも11だと省略できるのん?
0762デフォルトの名無しさん2013/05/05(日) 03:21:32.05
戻り値にあったバッファ所有権を初期化先へ移動させることにより
バッファ自体のコピーなしで実現できるようになった
0763デフォルトの名無しさん2013/05/05(日) 03:25:01.41
>>761
できない
その代わり、代入がコピーでなくムーブになるので速い

ただ、それでも引数から渡した方が若干速くなるケースもある
引数に既に中身がある場合、
バッファの再確保が避けられる事があるので

中身が空の場合はほぼ同じ速度かな
0764デフォルトの名無しさん2013/05/05(日) 03:31:31.39
RVOを実現しているコンパイラなら名前なしオブジェクトを返却値にすればC++03でもでも効率は悪くならない。
例:
string get_string(){
return string(...);
}
07657642013/05/05(日) 03:37:40.58
途中で送ってしまった。

NRVOを実現できるコンパイラなら名前付きオブジェクトを返却しても効率は悪くならない。
例:
string get_string(){
string ret;
ret = ...
return ret;
}

C++11で委譲代入演算子のオーバロードが定義されているクラスなら、RVO、NRVOが効かなくても
効率は悪くならないはず。
0766デフォルトの名無しさん2013/05/05(日) 03:38:27.40
おまいらアスペだな。
03と11の違いじゃなくて
前者と後者の差について答えてやれよ
0767デフォルトの名無しさん2013/05/05(日) 03:49:35.66
代入時の話なんだからRVOとか関係なくね?って思うんだけどどうだっけ
0768デフォルトの名無しさん2013/05/05(日) 04:00:22.01
俺の想像によるまとめ:
結果が関数内で生成される場合
 初期化の場合
  03: RVOにより直接が期待できる
  11: RVOにより直接
 代入の場合
  03: 最低1回のコピー
  11: ムーヴなので中身のコピーなし★違い

結果が関数内で生成されない場合
 初期化の場合
  03: 最低1回のコピー
  11: 最低1回のコピー
 代入の場合
  03: 最低1回のコピー
  11: 最低1回のコピー
0769デフォルトの名無しさん2013/05/05(日) 04:02:42.02
>>767
多分、前者の内部で代入するケースと比較してるのだと思うが、
前者では通常わざわざ代入前にstringをコンストラクトする必要がないので
前者のが速い
0770デフォルトの名無しさん2013/05/05(日) 04:05:31.30
と老害が申しております
0771デフォルトの名無しさん2013/05/05(日) 04:31:25.65
ムーブも万能の特効薬じゃないから
効率悪い場合もある
引数のバッファを直接再利用できる場合とか

http://ideone.com/x6Guc3

ただ、少なくともコピーよりは効率がいいし、
再利用できない場合はムーブで上等

結局どう使われるかだね
0772764 7652013/05/05(日) 04:35:06.97
前者は参照のコピーだけなのでstringオブジェクトの無駄なコピーは発生しない。
後者は
1.get_string関数内でstringオブジェクトを生成。
2.get_string関数内から関数外部にオブジェクトをコピーするために
コピーコンストラクタもしくは代入演算子のオーバロードが実行される。
(受け取る側のオブジェクトが既に初期化されているかどうかによる。)
3.get_string関数内のstringクラスのオブジェクトがデストラクタで削除される。

コンパイラが愚直に解釈すると上記3ステップが実行されることになるため、動作効率が
悪くなってしまう。

C++03ではコンパイラが
・RVO(戻り値最適化の促進)
・NRVO(名前付きオブジェクトの戻り値最適化の促進)
という仕様に対応していれば上記3ステップを、get_string関数外でstringオブジェクト
を直接生成するという1ステップに置き換えられるため、無駄なstringオブジェクトの
コピーと削除が行われなくなるので動作効率の低下は起こらない。但しこれは最適化
してもいいよという仕様であり、必ずそうしなければならないと言うものでは無いため、
最終的にはコンパイラに依存していた。

C++11だと右辺値参照があるため、委譲コンストラクタ、委譲代入演算子のオーバロードが
定義されているクラスなら、RVO、NRVOが効かなかったとしても無駄なコピーは発生しない。
但しget_string関数内のstringクラスのオブジェクトのデストラクタは実行されてしまうので
わずかながら効率が低下するから、RVO、NRVOが効く場合はそちらが優先される。

コンパイラがC++03ならRVO、NRVOが効いているかを考慮する、C++11なら何も気にせず後者で書く。
0773デフォルトの名無しさん2013/05/05(日) 04:56:10.63
自分の環境で何回コピーされるかは
こんな所で聞かなくても自分で確認できるでしょ
↓はRVOが効いてる例
http://ideone.com/pEMjxW
0774デフォルトの名無しさん2013/05/05(日) 04:56:52.26
.
               /\___/\
              / ⌒ 俺 ⌒ ;\   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
              | (●), 、(●)、 |  | キンタマ中古C言語命!!”
        ⊂.    |  ,,ノ(、_, )ヽ、,,   | < 今日もキンタマ中古C言語でソース乞食するゾォォオオ〜っ♪”
       ,r----、__|.Javaト‐=‐ァ'   .::::|  | 仕事レポート全部くれくれ乞食するぞォォォオオオオ〜っ!”
      /Ruby     \最強ニニ´  .:::/   \____________________
      (ひま,/¬--v   \____/⌒\     
     /⌒ (    ]  |丶 ̄ ̄  /丿  丿      ─
    (_  _丿    ,ノ--v_\ 糞  ノ   ノ       今日も見にくい小文字でプログラミングするぞ〜!!(ギャハハ!!wwww”
       ̄      ノ宿敵 リ--─ーARM八      
            〔 マシン語 Python__,ノ′ヽ       ギブ・ミー・レポート!!!! ギブ・ミー・ソース!!!!
          ,ノ'' ー--ー┘■■ ̄\  │     
          /    /  ̄■■■/ \  |        #○&#$△#%&$▼&%#!!!!
         ノ   /]アンチ|■AMD命|\|       \\   (↑意味不明w)
         |  /  .| Intel |  )   ノ    
         |/′   |    .|  |---く       
               |    |  \  ] ※)一部見苦しい部分がありますが御了承下さい。
.
0775デフォルトの名無しさん2013/05/05(日) 04:58:19.14
>>772
うん、まあなんだ
他の人の話はよく聞こうね

http://ideone.com/Wx8T03

ローカルだとコピーのがムーブより遅いのだが、
ideoneだとなぜか同じだな

バッファが再利用できる場合はそれが常に最速
再利用できない場合がほとんどならムーブが楽チン
0776デフォルトの名無しさん2013/05/05(日) 05:03:39.75
>>775
>ideoneだとなぜか同じだな
理由が本気でわからないんですか?
0777デフォルトの名無しさん2013/05/05(日) 05:03:44.05
どうでもいい話だろうけどmoveを委譲と訳すのには違和感がある
プログラミングで委譲って言ったらdelegationあたりがメジャーだからか

あとはまあ意味的に移譲のほうがいい気もするし
0778デフォルトの名無しさん2013/05/05(日) 05:06:09.46
目的が委譲
手段が移動
何ら問題はない
0779デフォルトの名無しさん2013/05/05(日) 05:12:32.49
規格の用語がmove constructorなのに
委譲コンストラクタでは
他人とのコミュニケーションが
難しくなりますよ?
0780デフォルトの名無しさん2013/05/05(日) 05:20:16.90
うわっ、つまんねw
0781デフォルトの名無しさん2013/05/05(日) 05:24:41.86
>>748
クッソ遅いし普通はね
つか、相互参照を見た瞬間に掻き毟りたくなった

>>755
http://d.hatena.ne.jp/yohhoy/20120524/p1

11の難しさは内容よりも03ジジイの説得にある
あいつら英語読めないからな
hogeやfooで書かれた化石のような書籍が連中のバイブル
0782デフォルトの名無しさん2013/05/05(日) 05:32:21.80
>>781
friend std::ostream& operator<<
がイケてないのは
「オブジェクトの内容を文字列に変換」
と言う極めてありがちな処理の
汎用性を放棄しているところ。
こんなことも出来るぜアピールとしてはいいけど
cout << obj.toString() << endl;
の方が100倍マシ
0783デフォルトの名無しさん2013/05/05(日) 05:37:15.23
>>782
>>759
0784デフォルトの名無しさん2013/05/05(日) 05:37:28.03
>>781
英語の前に実測値を読めるようになった方がいいよ

コピーとムーブではムーブのが速いというだけで、
それ以外のケースよりムーブのが速いとは限らない

速度を非常に気にするケースでは
ムーブが最適解にならないケースがあることを知るべき
(いずれにせよコピーは論外だけどね)
0785デフォルトの名無しさん2013/05/05(日) 06:24:03.72
std::to_stringが入ったんだし
T::toStringよりもstd::to_string(T)にしたほうがいいと思う
0786デフォルトの名無しさん2013/05/05(日) 08:08:46.48
>>775
http://ideone.com/KUI8Bl
http://ideone.com/Ddh0Nj
0787デフォルトの名無しさん2013/05/05(日) 08:24:23.73
>>782
C#に頭毒されすぎ
そんなにtoStringが欲しかったら自分で作れ

「オブジェクトの内容を文字列に変換」するオーバーヘッドが馬鹿にならないので
C++は便利さを捨てて「自分でやれ」式になってるんだろ
Cの精神を踏襲している
0788デフォルトの名無しさん2013/05/05(日) 08:24:53.70
>>786
上はわざわざtest2をコストアップさせて何がしたいの?
馬鹿なの? 死ぬの?

ムーブを利用する場合は
新しくメモリを確保してからswapになる
どうしてもメモリ確保が入るので
バッファの再利用ができる場合は遅い

一方、バッファの再利用ができない場合はムーブで良い
例えば、str::ostringstreamを使って文字列を作る場合とか

ケースバイケースなんだよ
基本的には気にせずムーブしていいけど、
シビアな場合はムーブを過信しちゃいけないという事だ
0789デフォルトの名無しさん2013/05/05(日) 09:44:27.88
ムーブ以前の問題だな。
警戒するまでもなく、こんな冗長なキャストを見た時点で設計の失敗を確信する。
便所の中で如何に清潔に飯を食うかを苦心するようなもんだ。
0790デフォルトの名無しさん2013/05/05(日) 09:49:28.73
ムーブさせないようにする説明用のキャストを見て
設計とか言っちゃう男の人って……
0791デフォルトの名無しさん2013/05/05(日) 10:14:46.95
だったらもう少しキャスト已む無しと思えるようなものを提示しなさい。
ムーブの方が遅くなる時点で、既に効率化とかいうレベルにないコードであることが分からないか。
0792デフォルトの名無しさん2013/05/05(日) 10:26:13.71
C++03的動作との比較なんだから強引なのは当然

ムーブと速度が変わらないのは謎
gcc 4.6.0 だと明らかにコピーのが遅いんだが、
gcc 4.7.2 だと同じになるようだ
0793デフォルトの名無しさん2013/05/05(日) 10:59:44.04
コンパイラ進歩してるんだな
0794デフォルトの名無しさん2013/05/05(日) 11:27:28.25
進歩か?
怪しい動きに見えるんだが……
0795デフォルトの名無しさん2013/05/05(日) 11:28:30.16
お前ごときがコンパイラ様にケチつけるとは
0796デフォルトの名無しさん2013/05/05(日) 11:31:24.24
コンパイラオプションにmoveが使えるところには使うってオプションがあるとか?
いちいち読んでないけど
0797デフォルトの名無しさん2013/05/05(日) 12:11:08.14
彼らはBASICから得られた体験を ” タブー視 ” しなければいけないため、常に孤立を要求される。
0798デフォルトの名無しさん2013/05/05(日) 13:06:46.63
797 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
0799デフォルトの名無しさん2013/05/05(日) 13:54:13.35
質問なのですが、std::queue<T>に格納されている要素へのアクセスってどうやれば効率的でしょうか。
少なくともVS2010のSTLだと、front()とback()はあってもbegin()、end()、operator[]()のどれも存在しないので、
全要素を別のコンテナにpop()して、read modify語に同じ順序で全要素をpushし直すとか
別のstd::queue<T>に移し変えつつread modifyする、ぐらいしか思いつきません…
実は随時要素アクセス可能なFIFOは全く別の手段で実現すべきもの?
08007992013/05/05(日) 14:00:00.18
まあ目下具体的に悩んでいる対象なのはキューの長さが固定でTはbittable(ていうかint)なので
単純に生の配列を使って自前でキューイングしようと思いますが、今後常にそうとも限らないし、
0801デフォルトの名無しさん2013/05/05(日) 14:01:58.48
>>799
キュー構造というのは本来そういうもの(純粋にFIFOするもの)だ。

FIFO以外の機能が欲しければ deque なんか使って自作するしかないが、
それはもう純粋なキューじゃないな。
0802デフォルトの名無しさん2013/05/05(日) 19:50:36.55
C++11では
my_string(my_string &amp;&amp;other)
operator=(my_string &amp;&amp;other)
も書けよになったのか。C++複雑になりすぎ
0803デフォルトの名無しさん2013/05/05(日) 21:18:31.24
面倒なら
my_string(my_string other)
my_string &operator =(my_string other)
でまとめても良い
0804デフォルトの名無しさん2013/05/05(日) 23:23:00.12
乱数ほしいんだけどcstdlib使うのってダサい?
0805デフォルトの名無しさん2013/05/05(日) 23:26:25.11
メルセンヌツイスター使え
0806デフォルトの名無しさん2013/05/05(日) 23:27:34.50
乱数は /dev/urandom から取得するのが普通。
0807デフォルトの名無しさん2013/05/05(日) 23:30:53.10
まず、
可搬性の要否
再現性の要否
周期
をはっきりさせなさい
0808デフォルトの名無しさん2013/05/05(日) 23:32:16.35
std::random使え
0809デフォルトの名無しさん2013/05/05(日) 23:32:20.04
>>804
ダサすぎ。C++11になんか格好良い奴があるんじゃないのか
0810デフォルトの名無しさん2013/05/05(日) 23:34:44.76
C++11ってカッコイイの多いよな。
0811デフォルトの名無しさん2013/05/05(日) 23:42:37.74
ラムダの仮引数の型を書くのが面倒なんだけど、C#みたいに型推論できないの?
0812デフォルトの名無しさん2013/05/05(日) 23:46:46.67
C++はゆとり・へたれ用言語じゃない
0813デフォルトの名無しさん2013/05/05(日) 23:54:27.41
>>811
C++1yからできるようになる予定
0814デフォルトの名無しさん2013/05/05(日) 23:56:30.14
>>812涙目www
0815デフォルトの名無しさん2013/05/06(月) 00:09:39.42
>>813
そうなんだ。
じゃあ最初からできるようにしとけよハゲ。
0816デフォルトの名無しさん2013/05/06(月) 00:10:36.49
Cから見ればC++もゆとり用言語で、ゆとり様のために拡張しまくりだからな
0817デフォルトの名無しさん2013/05/06(月) 00:17:27.58
でもC++使ってもさ、ちっともゆとれないよな
0818デフォルトの名無しさん2013/05/06(月) 00:29:06.98
>>815
じじいの多いC++屋が忘れていた。爺には良くあること
現状のC++は、C++屋が年をとり介護か必要になり、自分で色々出来なくなった。
それを補うためにゆとり拡張を気合を入れてするようにしたって感じかな
0819デフォルトの名無しさん2013/05/06(月) 00:32:04.75
彼らはBASICから得られた体験を ” タブー視 ” しなければいけないため、常に孤立を要求される。
0820デフォルトの名無しさん2013/05/06(月) 00:51:42.52
禿も年なんだから許せよ禿
0821デフォルトの名無しさん2013/05/06(月) 00:54:07.47
POKE, PEEK, USR
0822デフォルトの名無しさん2013/05/06(月) 02:39:35.02
>>816
Better Cと呼ばれる(ことがある)所以である
0823デフォルトの名無しさん2013/05/06(月) 03:15:10.76
いいから黙ってC++使いこなせよ
代替はないんだから
0824デフォルトの名無しさん2013/05/06(月) 11:48:23.13
代替?
オナニー以外でC++を使うというのか?
0825デフォルトの名無しさん2013/05/06(月) 11:59:50.31
逆にオナニーだけでC++使ってる人って、何考えてるのか分からん

どういう意味があるの?
0826デフォルトの名無しさん2013/05/06(月) 12:03:52.59
普通にC++は現役でいろんな制御システムで使ってるから。
つい最近CからC++に移行したのもやってるし
そいつ無職かITドカタなんだよ、察してやれ
0827デフォルトの名無しさん2013/05/06(月) 12:04:32.11
Qとかオナニーで使ってるんだろ
本当はCしか分からない(それも糞コードしか書けない)のにC++になると
よりいっそうその糞さが目立って見てられない
0828デフォルトの名無しさん2013/05/06(月) 12:48:22.00
オナニーだけで使うなら普通はCかC#、JAVAあたりになるわな。
複雑怪奇なC++を選ぶ理由はあんまりない。
0829デフォルトの名無しさん2013/05/06(月) 12:51:54.95
>>828
標準化委員会ェ・・・
0830デフォルトの名無しさん2013/05/06(月) 13:01:40.62
>>828
Qの自己愛性パーソナリティ障害の「僕ちゃんってすごいでしょ」病が出ていてアイタタタ
だよな
0831デフォルトの名無しさん2013/05/06(月) 15:00:59.32
PS3ゲームの体験版とかでSTLのライセンスが表示されてるのたまに見るな
0832デフォルトの名無しさん2013/05/06(月) 15:03:38.15
STLって何ですか?
C++しか使ったことがないのでわかりません
0833デフォルトの名無しさん2013/05/06(月) 15:05:55.83
>>832
C++をやっていればSTLを知らないはずがない
嘘乙
0834デフォルトの名無しさん2013/05/06(月) 15:19:12.61
>>833
ほう、ではそのSTLとやらの定義を伺おうか。
と荒れるからやめれ
0835デフォルトの名無しさん2013/05/06(月) 15:30:41.47
普通に STL でぐぐればいいだけでしょ。

http://ja.wikipedia.org/wiki/Standard_Template_Library
0836デフォルトの名無しさん2013/05/06(月) 15:31:31.49
>>834
馬鹿発見
ISO/IEC 14882:2003も読んでない奴はすっこんでろ
0837デフォルトの名無しさん2013/05/06(月) 15:40:53.48
>>836
ISO/IEC 14882:2003のどこに書いてあるの?
1998でも2011でもいいけど
0838デフォルトの名無しさん2013/05/06(月) 15:43:47.58
>>837
自分で「規格票は読んでいません」と告白しなくてもいいよ
0839デフォルトの名無しさん2013/05/06(月) 15:47:16.37
読んだけど見あたらなかったな
0840デフォルトの名無しさん2013/05/06(月) 15:52:18.74
企画は読んでないけれど(汗)、
wikiが『STLの定義(何がSTLの一部であるか)には 様々な意見があり、人によりその解釈は違ってい ることがある。ここではC++標準ライブラリのコ ンテナ、イテレータ、アルゴリズム、関数オブ ジェクトを指すものとする』
って書いてある以上、企画にSTLという用語の定義が無いってこと?
0841デフォルトの名無しさん2013/05/06(月) 15:54:56.97
企画って何?番組の企画でもするのか?
0842デフォルトの名無しさん2013/05/06(月) 15:55:28.97
>>893
だろうな
馬鹿には見えないから
0843デフォルトの名無しさん2013/05/06(月) 15:56:15.32
×>>893
○>>839
読みたかったら利口になりたまえ
0844デフォルトの名無しさん2013/05/06(月) 15:57:13.37
なんでSTLのライセンス表示っているの?業務で使うのやめないとダメ?
STLportだけとかじゃなく全部なの?

SDLの間違いとかだったら>>831は死罪な
0845デフォルトの名無しさん2013/05/06(月) 15:58:00.89
ライセンス表示があるってことは
誰かの著作物ってこったろ。
0846デフォルトの名無しさん2013/05/06(月) 16:02:40.80
>>841
荒らすなボケ
>>843
「書かれていない」系のレスには
書かれているページを答えろよカス
0847デフォルトの名無しさん2013/05/06(月) 16:03:13.83
>>846
規格票を持ってない奴に説明しても無駄
0848デフォルトの名無しさん2013/05/06(月) 16:12:25.64
>>847
さて、どこに書いてあるか答えてもらおうか。

[PDF] ISO/IEC 14882:2003(E)
http://cs.nyu.edu/courses/spring13/CSCI-GA.2110-001/downloads/C++ Standard 2003.pdf
0849デフォルトの名無しさん2013/05/06(月) 16:15:08.38
見れるんなら自分で分かるだろ
分からないならお前が低脳なだけ
0850デフォルトの名無しさん2013/05/06(月) 16:18:00.26
スルーすればいいのに、流石にこれは恥ずかしい
0851デフォルトの名無しさん2013/05/06(月) 16:18:18.06
それでも教えてほしいというなら金払え

100万ほどでいいよ
0852デフォルトの名無しさん2013/05/06(月) 16:19:44.26
Qがご迷惑をお掛けしておりますm(o´・ω・`o)mペコリン
0853デフォルトの名無しさん2013/05/06(月) 16:20:12.64
>>849
読んだ結果が>>839なんだろカス
つまりSTLは妄想ってことでFA
0854デフォルトの名無しさん2013/05/06(月) 16:24:51.10
規格に大きく貢献したので妄想は言い過ぎだが
そろそろSTLという言葉は避けた方がいいのかも試練
0855デフォルトの名無しさん2013/05/06(月) 16:24:53.48
>>852
きゃわっ☆
0856デフォルトの名無しさん2013/05/06(月) 16:27:46.79
boostも標準ライブラリに取り込まれたやつはboostって呼ばれないのと同じこと
0857デフォルトの名無しさん2013/05/06(月) 16:29:31.33
iostreamとauto_ptrはSTLですか?
0858デフォルトの名無しさん2013/05/06(月) 16:33:17.19
833フルボッコワロタ
0859デフォルトの名無しさん2013/05/06(月) 16:47:04.82
C++の標準ライブラリでテンプレート使ったもの=STL
これマメチな
0860デフォルトの名無しさん2013/05/06(月) 16:49:16.09
そんなオレオレ定義はチラシの裏にでも書いとけよ。
0861デフォルトの名無しさん2013/05/06(月) 16:57:19.26
>>858
>>858
>>858
0862デフォルトの名無しさん2013/05/06(月) 17:02:07.82
↑これどういう意味?
0863デフォルトの名無しさん2013/05/06(月) 17:15:37.12
STLの定義くらいどうでも良いものも珍しい
0864デフォルトの名無しさん2013/05/06(月) 17:24:23.77
さあさあ世間様の連休も今日までですよ。
明日からは曜日感覚と書き込み時間に少しだけ気を付けてね。
身分がばれちゃうからw
0865デフォルトの名無しさん2013/05/06(月) 17:29:01.78
>>859
C++の標準ライブラリ(Cから引き継いだものを除く)=STL
0866デフォルトの名無しさん2013/05/06(月) 17:38:24.29
>>846
消えろゴミクズ
質問したら荒らし扱いかキチガイ
0867デフォルトの名無しさん2013/05/06(月) 17:52:16.71
↑気に障ったらしい
0868デフォルトの名無しさん2013/05/06(月) 18:21:56.06
自分のレスの愚かさにようやく気づいて
恥ずかしさをごまかすために
暴れた奴がいるふりをしているんです。
お察しください。
0869デフォルトの名無しさん2013/05/06(月) 18:49:08.61
boostからホイホイバクってくるってチョンすぎじゃね
0870デフォルトの名無しさん2013/05/06(月) 19:27:11.35
>>827
>本当はCしか分からない
へえQのCを認めているんだ、あり得ない‥‥
0871デフォルトの名無しさん2013/05/06(月) 19:30:34.98
>>869
パクってるんじゃねーよ
boostの開発者にC++標準化委員会が極めて多いだけだ
0872デフォルトの名無しさん2013/05/06(月) 19:31:05.26
>>870
>(それも糞コードしか書けない) とちゃんと書いてあるだろwww
0873デフォルトの名無しさん2013/05/06(月) 20:16:12.91
>>872
あんなものを「分かる」とかいってる分だけお前のお里も知れるというもの
あやつは「根本的に何一つ分かっていない」
0874デフォルトの名無しさん2013/05/06(月) 20:19:05.51
>>873
文法だけは辛うじて分かっているようだけど、とにかく無駄が多いよな
0875デフォルトの名無しさん2013/05/06(月) 20:20:23.92
Q
ってなんだ?
0876デフォルトの名無しさん2013/05/06(月) 20:22:19.10
http://toro.2ch.net/test/read.cgi/tech/1313183984/
0877デフォルトの名無しさん2013/05/06(月) 20:24:26.78
アルファベットたった一文字で本人が特定出来るとか、よほど嫌われてるんですね
0878デフォルトの名無しさん2013/05/06(月) 20:27:38.46
struct A{
 void func0(){}
 void func1(){}
};
template<typename T> struct B{
 void func(){
  T t;
  t.func2();
 }
};

B<A> b;
//b.func();

この場合b.func()を呼ばなければコンパイルエラーにはなりませんか?
0879デフォルトの名無しさん2013/05/06(月) 20:29:10.09
Things You Can Tell Just by Looking at his Code.
0880デフォルトの名無しさん2013/05/06(月) 20:31:07.32
実体化した時点で終わりです
0881デフォルトの名無しさん2013/05/06(月) 20:33:29.65
>>877
Qは下手ながらも一応プログラムを書いている中年ニート
uyは宿題スレの回答をそのまま提出して留年したバカでプログラムも書けなくて
荒らしているだけの真性キチガイ
片山も相当きてるが頭は良さそう
0882デフォルトの名無しさん2013/05/06(月) 20:36:12.06
まとめるとこうか?

一般マ≫片>Q>u
0883デフォルトの名無しさん2013/05/06(月) 20:38:22.55
>>878
クラスAにfunc2()がないんだからコンパイル通らないっしょ
0884デフォルトの名無しさん2013/05/06(月) 20:41:43.92
>>882
どこかに《超えられない壁》を挿入してくれないか?
0885デフォルトの名無しさん2013/05/06(月) 20:41:58.11
>>883
VS2012では通ってます。
0886デフォルトの名無しさん2013/05/06(月) 20:42:40.98
Exceptiona C++ 項目31 を読め馬鹿ども
0887デフォルトの名無しさん2013/05/06(月) 20:44:59.81
gcc4.8では通らないなあ

>>886
読んだけどどうもVS2012のバグっぽいな
0888デフォルトの名無しさん2013/05/06(月) 20:46:10.04
>>878
ならない。14.7.1p2参照
0889デフォルトの名無しさん2013/05/06(月) 20:47:49.45
項目32じゃないの?
0890デフォルトの名無しさん2013/05/06(月) 20:50:23.12
あ、ごめん質問を

B<A> b;
b.func();

コンパイルが通りません

と読み間違えていた

//でコメントアウトするとgcc4.8でも通る
0891デフォルトの名無しさん2013/05/06(月) 20:50:34.18
どうでもいいけどこのスレってコピーコンストラクタを実装なしでprivateに置いとくテクニックも知らない連中ばっかなん
0892デフォルトの名無しさん2013/05/06(月) 20:52:00.34
昔、そんなコードを書いてた時期もありました。
0893デフォルトの名無しさん2013/05/06(月) 20:53:33.43
>>878
ならない
使われないメンバ関数は実体化されない

>>891
今は = delete の時代だよ
0894デフォルトの名無しさん2013/05/06(月) 20:55:07.77
>>884
普通の人《超えられない壁》一般マ≫片>Q>u
0895デフォルトの名無しさん2013/05/06(月) 20:56:01.23
>>894
ワロス
0896デフォルトの名無しさん2013/05/06(月) 20:58:16.40
>>893
11が出る前はprivateに置いてたろ?それを知らないとしたら問題だろ?
0897デフォルトの名無しさん2013/05/06(月) 21:01:20.09
11の後に学習を始めた人は無視ですか?
と揚げ足の揚げ足をとってみる
0898デフォルトの名無しさん2013/05/06(月) 21:01:39.29
>>896
そんなテクニックはboost::noncopyableでとっくに使われていた
0899デフォルトの名無しさん2013/05/06(月) 21:02:39.46
>>896
boost::noncopyable かそれに類するものを private 継承だな
0900デフォルトの名無しさん2013/05/06(月) 21:16:58.14
>>899は会話の出来ないアスペ
0901デフォルトの名無しさん2013/05/06(月) 21:27:03.97
>>898-899
なんか論点がずれてるんだけど大丈夫?
0902デフォルトの名無しさん2013/05/06(月) 22:18:56.72
>>899
何でprivateなの?
0903デフォルトの名無しさん2013/05/06(月) 22:23:05.98
>>902
横レス。ダイアモンド継承回避だお
0904デフォルトの名無しさん2013/05/06(月) 22:32:38.35
ダイヤモンドって高級だけど、
プログラムでは「死の」なんだよなw
0905デフォルトの名無しさん2013/05/06(月) 22:33:43.09
11の後に学習を始めた人とか初心者の方に行けよ
0906デフォルトの名無しさん2013/05/06(月) 22:34:59.58
化石03マはさっさと滅べよ
冗長な慣習ばかり残しやがって
0907デフォルトの名無しさん2013/05/06(月) 22:36:04.78
11の後に勉強を始めたとしても現状はdeleteで自動生成抑制できる環境が使えるのは大方個人開発だけだしなあ
09089022013/05/06(月) 22:38:34.60
>>903
すみませんちょっと理解できませんでした。
noncopyable がpublic継承だと問題が起きるのは
どんなコードでしょうか?
むしろnoncopyableであることをpublicに
主張すべきではないかと思うのです
0909デフォルトの名無しさん2013/05/06(月) 22:41:38.90
C++11の新機能が便利すぎて最高w
0910デフォルトの名無しさん2013/05/06(月) 22:56:11.39
bind2ndとは何だったのか
0911デフォルトの名無しさん2013/05/06(月) 23:03:11.64
C++11怖すぎ
0912デフォルトの名無しさん2013/05/06(月) 23:04:30.59
冷凍したC++11規格書でプログラマを殴り続けると死ぬ
0913デフォルトの名無しさん2013/05/06(月) 23:07:32.04
bindさんの万能感は異常
0914デフォルトの名無しさん2013/05/06(月) 23:12:47.72
>>908
いらないよそんなの
特に関係性のないクラスを全部
boost::noncopyable& に渡せるとかキモいだけ
0915デフォルトの名無しさん2013/05/07(火) 00:39:23.63
C++の規格を読みたいんですが、タダで読めますか?
0916デフォルトの名無しさん2013/05/07(火) 00:52:02.84
>>915
>>848で世界中に共有されてるじゃないか
0917デフォルトの名無しさん2013/05/07(火) 00:57:02.09
今更03を勧めるってのもね
俺は11のFDIS持ってるけど、
もう公開されてないみたいね
0918デフォルトの名無しさん2013/05/07(火) 01:04:50.12
そのぐらい買えよ
http://www.webstore.jsa.or.jp/webstore/Com/FlowControl.jsp?lang=jp&;bunsyoId=ISO%2FIEC+14882%3A2011&dantaiCd=ISO&status=1&pageNo=0
>原本冊子をお求めの場合は、CD-ROMでのお届けとなります
0919デフォルトの名無しさん2013/05/07(火) 01:24:36.50
冊子を注文してCD-ROMが届いたら
返品ものなのだが
0920デフォルトの名無しさん2013/05/07(火) 12:14:51.75
FDISならその辺でキャッシュに残ってそうなものだけど
だがドラフトはあまりオヌヌメできないかな
0921デフォルトの名無しさん2013/05/07(火) 12:16:14.12
PDFも大学に行けば普通に共有されていたりするけどな
0922デフォルトの名無しさん2013/05/07(火) 17:47:38.83
最近は自宅で共有する人も多いみたいだよ
0923デフォルトの名無しさん2013/05/07(火) 20:02:57.66
リソースから.wav形式のものを再生したいのですが、
どうすればいいでしょうか。
また、プログラム起動時再生するようにして、
ボタンでON/OFFを切り替えることは可能でしょうか
0924デフォルトの名無しさん2013/05/07(火) 20:03:45.61
すれち
0925デフォルトの名無しさん2013/05/07(火) 20:16:18.68
>>923
C++11にそれを実現するSTLがあったような
0926デフォルトの名無しさん2013/05/07(火) 20:21:56.33
どちらかというと必用なのは
オンオフ情報をレジストリに
読み書きするSTL
0927デフォルトの名無しさん2013/05/07(火) 23:22:32.66
>>原本冊子をお求めの場合は、CD-ROM
のCD-ROMを原本冊子にswapするSTLを探してるんだけど
0928片山博文MZパンク ◆0lBZNi.Q7evd 2013/05/07(火) 23:22:44.58
>>923
多重再生が不必要で単純にWAV再生したいなら、PlaySound関数を使う。
ON/OFFの状態は、INIファイルかレジストリに記録しておく。
0929デフォルトの名無しさん2013/05/08(水) 04:12:06.57
>>923
Win32API質問箱 Build114
http://toro.2ch.net/test/read.cgi/tech/1363042502/
0930デフォルトの名無しさん2013/05/08(水) 05:02:02.34
以下の簡単なプログラムがエラーになります
誰か助けて下さい
http://ideone.com/4F1kmr
0931デフォルトの名無しさん2013/05/08(水) 06:30:46.25
>>930
http://rarara.cafe.coocan.jp/cgi-bin/lng/vc/vclng.cgi?print+200905/09050032.txt

これだろ
0932デフォルトの名無しさん2013/05/08(水) 08:28:08.81
y1がグローバル変数とか糞過ぎる
0933デフォルトの名無しさん2013/05/08(水) 19:20:03.40
変数とか関数とかクラスとかの
頭文字って全部大文字にで良い?
名前のルールが分からん……
0934デフォルトの名無しさん2013/05/08(水) 19:29:10.63
>>933
C++の規格書に載っている。C++11を規格書読め
趣味なら俺ルールで良いけど、仕事なら規格書のスタイルが規範
0935デフォルトの名無しさん2013/05/08(水) 20:01:54.42
ぷっ
0936デフォルトの名無しさん2013/05/08(水) 20:04:42.73
趣味でもありえない
0937デフォルトの名無しさん2013/05/08(水) 20:51:22.36
仕事なら指定されたコーディング規約に従うでしょ

あと、規格書の「T*」スタイルは
臭い物にフタをしただけの一貫性のない書き方
なので好きじゃない
0938デフォルトの名無しさん2013/05/08(水) 22:16:11.19
> 規格書の「T*」スタイル
ってたとえばどんなやつ?
0939デフォルトの名無しさん2013/05/08(水) 22:40:21.25
linux/windows 環境です。

通信相手のユーザーから渡されたバイト配列が
「正当なUTF8かどうか?」をチェックしたいです。

調べて見たところ、ICU、iconv、法則を元に自前で実装 等色々手段が
ありそうなのですが、「これつかっとけ」みたいなおすすめライブラリはありますか?
0940デフォルトの名無しさん2013/05/08(水) 23:17:18.20
正当ってどれのことー?とか考えると色々ダルいね
・UTF-8として解釈不可能
・UTF-8として解釈可能だが冗長
・サロゲートペアが冗長
・文字の結合その他規則により冗長
・正規化された文字列

一番上は弾く以外ないけれど、他のは受け入れるかどうかや受けれてから変換するかとか色々…
使うシステム側が受け入れ可能な"正当"によっても何処まで正規化するかは変わるだろうなぁ
最後の奴とかは、自前で検査を実装するのは変態か馬鹿しか居ないレベルでダルそう
0941デフォルトの名無しさん2013/05/08(水) 23:28:29.63
上3つは規格上不正だったような
0942デフォルトの名無しさん2013/05/08(水) 23:31:20.91
>>940
ありがとうございます。
なるほど、まずその定義が必要なのですね。

・データベースに読み書きが正しくできること
・不正なUTF8を許可してしまい、ハングアップしたり、セキュリティーホールにならないこと

あたりのアバウトな認識でやってました

2010用のICUビルドが2012で利用できたので
まずはこれからいじり倒してみようと思います
0943デフォルトの名無しさん2013/05/09(木) 00:17:24.77
>>941
3つ目はUTF-16を前提としたシステムの互換性のために敢えて採用する場合があって、
その場合はCESU-8とかModified UTF-8とかいう名前になるけど、それをUTF-8と呼んじゃう場合があるから一応な
DBで古いOracleだかMySQLだかはそれ使わんとダメだった筈で、942の条件としては意識はしたほうが良いかもしれない
不正だろうが受け入れるシステムは受け入れてしまうし、吐き出すシステムは吐き出してくるからなぁ…

>>942
セキュリティホールって意味では「受けれてから変換する」動作でアレコレあるから特に注意したほうが良いかも
ダメ文字判定をUTF-8の冗長表現で突破とか、「それUnicodeで」で書かれてるようなUnicode自体のアレコレとか
0944デフォルトの名無しさん2013/05/09(木) 07:21:53.02
>>943
>CESU-8とかModified UTF-8とかいう名前になる
Unicode規格のどこにそんなことが書いてあるのかね?
0945デフォルトの名無しさん2013/05/09(木) 08:16:24.04
>944
COMPATIBILITY ENCODING SCHEME FOR UTF-16: 8-BIT (CESU-8)
http://www.unicode.org/reports/tr26/tr26-1.html
0946デフォルトの名無しさん2013/05/09(木) 08:18:57.23
ごめん。最新版こっち。 http://www.unicode.org/reports/tr26/
0947デフォルトの名無しさん2013/05/09(木) 12:27:52.29
struct super{};
template<typename T> struct A{};
A<super> a;

C++03でTがsuperを継承してるかコンパイル時に調べる方法ありますか?
0948デフォルトの名無しさん2013/05/09(木) 12:43:55.26
>>946
>Status This is a draft document
提案中のドラフトですか
0949デフォルトの名無しさん2013/05/09(木) 12:48:11.68
BOOST_STATIC_ASSERT + boost::is_base_and_derived
0950デフォルトの名無しさん2013/05/09(木) 21:06:39.55
>>938
int* a, b;
ってやつじゃない?

ただそこまで言ったら
const intも本当は
int constにすべきなんだろうけど。。
0951デフォルトの名無しさん2013/05/09(木) 21:28:19.12
複数の変数を一行で定義するからダメなんだよ
変数毎に行を変えればそんな事を気にする必要は無い
0952デフォルトの名無しさん2013/05/09(木) 21:36:16.63
enum・・・いや何でもない
0953デフォルトの名無しさん2013/05/09(木) 22:27:49.67
>>951
>変数毎に行を変えれば
それは正に「臭いものにふた」だよ。
もともと左から右に読む文法じゃないんだから、
変数ごとにしたって
 const int* p;
 const int* const* const (* const p[1])();
はやっぱり誤解を招く。
0954デフォルトの名無しさん2013/05/09(木) 22:30:50.86
そう思ってるのはお前だけ
0955デフォルトの名無しさん2013/05/09(木) 22:32:36.48
ポインタの宣言間違えてもコンパイルで気付くし別にいいでしょ
0956デフォルトの名無しさん2013/05/09(木) 22:37:27.78
些末な事だよね
0957デフォルトの名無しさん2013/05/09(木) 22:40:07.93
X const *const *const (*const p[1])();
void (__stdcall *pf)()
これが一貫性があって最強
だがオススメしない
0958デフォルトの名無しさん2013/05/09(木) 22:43:22.61
typedefさん(´・ω・`)…
0959デフォルトの名無しさん2013/05/09(木) 22:46:19.88
p が const なのだから const は * にくっついてほしくないな
0960デフォルトの名無しさん2013/05/09(木) 22:54:52.13
>>959
>p が const なのだから
んなこたーない。
constはconst Xの例外を除いて常に左に掛かる
0961デフォルトの名無しさん2013/05/09(木) 23:31:06.64
void * const f();
そんなことよりBASICやろうぜ
0962デフォルトの名無しさん2013/05/09(木) 23:46:15.29
>>960
int * const p = NULL;
これ、p が定数でしょ

int *const p = NULL;
より
int* const p = NULL;
の方が分かりやすい
0963デフォルトの名無しさん2013/05/10(金) 03:40:42.03
ぬるぽ
0964デフォルトの名無しさん2013/05/10(金) 04:58:59.43
template<typename T>
struct tmpclass
{
template<typename X>
X operator()(X x)
{return x;}
};
これの特殊化がgccだと
tmpclass<double>().operator()<double>(5)
で出来てしまうのだけど他でもちゃんと動くのだよね?
0965デフォルトの名無しさん2013/05/10(金) 05:08:25.52
もちろん
0966デフォルトの名無しさん2013/05/10(金) 07:38:37.39
>>963
ガッ!
0967デフォルトの名無しさん2013/05/10(金) 12:13:32.56
>>958
僕は好きやで、typedefちゃん
0968デフォルトの名無しさん2013/05/10(金) 19:37:46.75
>>944
実際使われてんだから意識しなきゃ不味いって話なんで、正規のUnicode規格かどうかは関係あるのかね?
0969デフォルトの名無しさん2013/05/10(金) 22:59:11.93
Modified UTFが規格で規定された表現であるとも
取れる書き方だから噛みつかれたんだろ。
規格厨は「それは規格違反」って他人を避難
することに命を懸けるアスペだからな。
0970デフォルトの名無しさん2013/05/11(土) 22:07:17.81
質問です。
struct B1 {};
struct B2 {};
struct D : public B1, B2 {};
D ar[2];

&(B2&)ar[0] と &ar[1] が同じアドレスに
なるのですが、何故でしょうか?
0971デフォルトの名無しさん2013/05/11(土) 22:15:46.26
要素ないからじゃね
0972デフォルトの名無しさん2013/05/11(土) 22:17:13.69
ここでエスパーな俺が回答。
マイクロソフトに訊け。
0973デフォルトの名無しさん2013/05/11(土) 22:34:16.00
>>970
「同じアドレスになる」をどうやって確認したんだ?
09749702013/05/11(土) 22:40:59.89
>>973
(unsigned long long)(void*)式
をcoutに出力です。
0975デフォルトの名無しさん2013/05/11(土) 23:09:29.25
D{B1, B2} から何も考えずにsizeof(B1)==1分だけずらしてんだろうな
ま、これが問題になるような場面はねーな
0976デフォルトの名無しさん2013/05/11(土) 23:18:42.49
オブジェクトのスラッシングの時に楽だからね
0977デフォルトの名無しさん2013/05/11(土) 23:19:25.44
スライシングだったorz
ビール飲むとやっぱり頭が鈍るな
0978デフォルトの名無しさん2013/05/11(土) 23:20:04.17
sizeof ar[0] はいくつなんだぜ?
0979デフォルトの名無しさん2013/05/11(土) 23:24:52.33
struct B1
struct B2
struct D
のsizeofっていくつになるんですか
0980デフォルトの名無しさん2013/05/11(土) 23:25:31.88
0より大きい
これは規格で決められている
0981デフォルトの名無しさん2013/05/11(土) 23:36:00.80
何でそんなウンコな仕様なの?
0982デフォルトの名無しさん2013/05/11(土) 23:46:00.46
C++はCとは違い特殊な事情があって、インスタンスのアドレスを得ると
そのサイズがゼロじゃ都合が悪いんだよ

具体的にどういう理由だっけ
違うインスタンスは必ず違うアドレスになるようにしたとD&Eに書いてあった
0983デフォルトの名無しさん2013/05/11(土) 23:48:48.70
配列が困るな。
イテレーターがいきなりループ抜けそう。
やはりC++にもinterfaceを入れるべきだった。
0984デフォルトの名無しさん2013/05/12(日) 00:24:14.55
>>970
ttp://ideone.com/IetmJ6
そのコンパイラの不具合だと思うけどな
EBOのあるなしでsizeof(D)が変わることはあっても
> &(B2&)ar[0] と &ar[1] が同じアドレスに
これはおかしいだろ
0985デフォルトの名無しさん2013/05/12(日) 00:30:05.86
横だけど
type&へのキャストってどういう意味?
0986デフォルトの名無しさん2013/05/12(日) 00:40:04.32
参照へのキャスト
0987デフォルトの名無しさん2013/05/12(日) 00:48:17.29
それってなんかありがたいことがあるんか?
0988デフォルトの名無しさん2013/05/12(日) 00:50:22.81
template<typename T> struct aaa
{
 typedef T value_type;
};
template<typename T> struct bbb : public aaa<T>
{
 bbb()
 {
  value_type t = 0; // error: expected ‘;’ before ‘t’
 }
};

bbb<int> b;
というエラーが出ます。bbbからvalue_typeを使うにはどういう方法があるでしょうか
g++4.5.3です。
0989デフォルトの名無しさん2013/05/12(日) 00:55:46.88
>>984
コンパイラの問題なのは>>972も指摘
してるようにその通りなのだけど、
B1サブオブジェクトとB2サブオブジェクトが
同じアドレスってありなの?そのGCCの結果
0990デフォルトの名無しさん2013/05/12(日) 00:57:36.20
>>988
typename aaa<T>::value_type ?
0991デフォルトの名無しさん2013/05/12(日) 01:42:16.63
>>987 この例ならわかる?
struct B{ char c; };
struct D1L:B{};
struct D1R:B{};
struct D2:D1L,D1R{};
D2 d;
B & rbl = (B &)(D1L &)d;
B & rbr = (B &)(D1R &)d;
0992デフォルトの名無しさん2013/05/12(日) 01:49:38.98
>>991
いや、全然
多重継承を使わないと理解できないありがたみだとすると、多重継承使ったことないから
わからなくて当然なのかもしれないが
0993デフォルトの名無しさん2013/05/12(日) 02:18:31.52
構造体D2に構造体D1L、D1Rにそれぞれ継承されているBを含んでいる。
rblはD1L側、rbrははD1R側が継承した構造体Bの参照を取っている。

でも多重継承の利点て、インターフェイスを継承させる事ではないのか?
0994デフォルトの名無しさん2013/05/12(日) 02:31:13.84
>>993
そんなことができるんか
これもまた参照とポインタとの違いなんだな
0995デフォルトの名無しさん2013/05/12(日) 03:11:50.39
いや、ポインタでも同じ。俺的には参照の方がコード組みやすいな。
ポインタの方が機能は多いけど
0996デフォルトの名無しさん2013/05/12(日) 08:12:35.60
>>992
多重継承だけの問題じゃない。
struct B {};
struct D : virtual B {};
D d;
D * pd = &d;
B * pb = pd;
ここでpdとpbのアドレスは違う。
代入時の型変換でアドレス変換が行われる。
(T&) は *(T*)&と意味的に同じだから
裏ではアドレス調整が行われている。
0997デフォルトの名無しさん2013/05/12(日) 08:14:37.92
最近のC++での多重継承はメタ関数の実装継承に使われる事が多い気がする
0998デフォルトの名無しさん2013/05/12(日) 08:16:18.70
多重継承って、サイズ非ゼロの縛りがあるから
継承の度にどんどんサイズおっきくなるよね?
0999デフォルトの名無しさん2013/05/12(日) 08:23:20.20
>>984
http://ideone.com/ZQtLvW
1000デフォルトの名無しさん2013/05/12(日) 08:31:49.40
>>996
マジか、初めて知った
これもstatic castの一つ?
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。