5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

C++相談室 part102

1 :デフォルトの名無しさん:2013/05/12(日) 08:19:43.22
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part101
http://toro.2ch.net/test/read.cgi/tech/1365231795/

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

■長いソースを貼るときはここへ。■
 http://codepad.org/
 http://ideone.com/

2 :デフォルトの名無しさん:2013/05/12(日) 08:56:55.80
template <class T> T& operator >> (T&, int&&);
thx >>1;

3 :デフォルトの名無しさん:2013/05/12(日) 09:00:06.12
>>2
整数型に&&使うなんて、どうかと思うんです
そこはintにすべきじゃないかと

4 :デフォルトの名無しさん:2013/05/12(日) 09:11:20.64
前スレ1000
>static castの一つ?
()キャスト,暗黙キャスト,static_cast,dynamic_cast
で行われる普通の変換。
コンパイル時に調整量が決まる
という点ではstaticだけどね

5 :デフォルトの名無しさん:2013/05/12(日) 09:17:15.52
なるほど、で思ったんだがvirtual継承って2重継承時以外使うことないよな
結局2重継承関係の時に注意が必要か

6 :デフォルトの名無しさん:2013/05/12(日) 09:26:43.06
>>5
>virtual継承って2重継承時以外使うことない
他の言語のinterfaceを移植するときに
使いまくりじゃないか

7 :4:2013/05/12(日) 09:33:34.45
ごめんウソを言った
dynamic_castは具象クラスが不明なので
コンパイル時には決まらない

8 :デフォルトの名無しさん:2013/05/12(日) 10:31:00.93
> 985 名前:デフォルトの名無しさん[sage] 投稿日:2013/05/12(日) 00:30:05.86
> 横だけど
> type&へのキャストってどういう意味?
>
> 986 名前:デフォルトの名無しさん[sage] 投稿日:2013/05/12(日) 00:40:04.32
> 参照へのキャスト
>
> 987 名前:デフォルトの名無しさん[sage] 投稿日:2013/05/12(日) 00:48:17.29
> それってなんかありがたいことがあるんか?

参照へのキャストは参照のダウンキャストやクロスキャストをしたいときにも必要
ttp://ideone.com/MaYOhX

9 :デフォルトの名無しさん:2013/05/12(日) 10:33:57.23
>クロスキャストをしたいときにも必要
あ、ポインターで間に合ってます

10 :デフォルトの名無しさん:2013/05/12(日) 10:39:46.40
STLつかうと一気に実行ファイルサイズが10倍に?!

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

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

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

#include <stdafx.h>
後死ね。

言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。

>>1

11 :デフォルトの名無しさん:2013/05/12(日) 11:09:08.03
>#include <stdafx.h>
これいつも思うんだけど本当は
#include "stdafx.h"
の間違いだよな

12 :デフォルトの名無しさん:2013/05/12(日) 11:30:21.20
その地鎮祭レスはいつからあるんだっけ?
数年前からあるような

13 :デフォルトの名無しさん:2013/05/12(日) 11:46:24.33
2006年の時点で既に新参が笑われる状態

14 :デフォルトの名無しさん:2013/05/12(日) 12:08:36.52
>>12 たぶんだけど
STLは2003年
http://ir9.jp/prog/ayu/datlog/tech_cpp/1045746245/1045746245_01.html
stdafxは2004年
http://ir9.jp/prog/ayu/datlog/tech_cpp/1096304546/1096304546_01.html

15 :デフォルトの名無しさん:2013/05/12(日) 16:57:21.34
質問
STLのiostreamを使うとき、自作クラスFooの入出力演算子を
istream& operator>> (istream& istr, Foo& input)とか
ostream& operator<< (ostream& ostr, const Foo& output)とかいった
シグネチャで実装するシチュがたまにあると思いますが、
これってエラーを返す場合はどうすでば良いの?
badビットでも立てる?立てて良い?その方法は?

16 :デフォルトの名無しさん:2013/05/12(日) 16:59:04.92
STLって何ですか?

17 :デフォルトの名無しさん:2013/05/12(日) 17:08:08.08
>>15
例外

18 :デフォルトの名無しさん:2013/05/12(日) 17:22:21.91
出力ぐらいでロジックエラーになるのかよ

19 :デフォルトの名無しさん:2013/05/12(日) 17:42:24.19
NuttXの質問はこのスレで出来ますでしょうか?

20 :デフォルトの名無しさん:2013/05/12(日) 17:51:53.21
納豆?

21 :デフォルトの名無しさん:2013/05/12(日) 18:18:47.19
その納豆とやら固有の話なら
>>1にある姉妹スレをオヌヌメするが

22 :デフォルトの名無しさん:2013/05/12(日) 18:33:21.41
タヒネ

23 :デフォルトの名無しさん:2013/05/12(日) 18:39:30.86
>>15
istr.setstateでストリームのフラグを立てる

24 :デフォルトの名無しさん:2013/05/12(日) 18:48:47.79
このスレの納豆の臭いがする

25 :デフォルトの名無しさん:2013/05/12(日) 19:02:53.85
俺の大好物

26 :デフォルトの名無しさん:2013/05/12(日) 19:12:39.30
納豆が旨いのに理由もねえだろ!

27 :デフォルトの名無しさん:2013/05/12(日) 19:14:17.81
先日会った外国人がterrible!と言っていたぞ

28 :デフォルトの名無しさん:2013/05/12(日) 20:08:14.29
納豆ってほんとうまいよな。
プログラミングも捗る。

29 :デフォルトの名無しさん:2013/05/12(日) 20:10:40.40
個人はともかく会社の職場で納豆
食べながら仕事してたら殺害だね。
っていうか19はどこ行った?

30 :デフォルトの名無しさん:2013/05/12(日) 20:24:57.12
おれんとこの職場では個人デスクでカレーなんて日常茶飯事だぞ
これがホントの食場か

31 :デフォルトの名無しさん:2013/05/12(日) 20:47:15.70
このスレはbind1stについて語るスレとなりました

32 :デフォルトの名無しさん:2013/05/12(日) 20:59:39.14
カリーか?

33 :デフォルトの名無しさん:2013/05/12(日) 21:05:32.77
納豆カレー食べたことあるけど結構いけるぞ

34 :デフォルトの名無しさん:2013/05/12(日) 22:13:53.85
納豆カレーはココイチで初めて知って、家で試してみたら美味しいと思った

しかし家の他の人はドン引き
食べてみれば美味しいのに

35 :デフォルトの名無しさん:2013/05/12(日) 22:41:36.04
とある格闘ゲームで納豆スパゲティなるものを知った。

36 :デフォルトの名無しさん:2013/05/12(日) 23:34:35.66
納豆とスパゲティを混ぜるだけとか
パンに挟むだけでも結構食える

37 :15:2013/05/12(日) 23:35:52.04
レスdクス、
>>17
おk
確かにストリーム以外のエラーをストリームのエラーであるかのように返すのは邪道であることは認識しています

>>23
ありがd

38 :デフォルトの名無しさん:2013/05/13(月) 01:42:48.05
何で納豆スレになってんだw

39 :デフォルトの名無しさん:2013/05/13(月) 10:33:10.68
isocketstream openSocket();
std::ifstream openFile();

std::istream readData(std::string datasource)
{
 if (datasource == "net")
{
  return openSocket();
}
 else {
  return openFile();
 }
}

みたいなことをやりたいのですが、何か上手い手はないでしょうか?
std::unique_ptr<std::istream>としても良いのですが、見栄えがあまりよろしくなくて、、、

40 :デフォルトの名無しさん:2013/05/13(月) 10:51:31.53
見栄えってなんだよ

41 :デフォルトの名無しさん:2013/05/13(月) 10:53:22.19
if文で分岐か・・・・

禁じ手だけどstdの名前空間の中にiosocketstreamを入れて仮想関数で
呼び出すようにすればすっきりするんだが

42 :デフォルトの名無しさん:2013/05/13(月) 12:47:50.59
リソース確保だけ違って後は
透過的に扱いたいなら
>>39が一番素直だと思うけど。
ifstreamは意味的にコピー出来ないんだから
unique_ptrは適切だと思う。

43 :デフォルトの名無しさん:2013/05/13(月) 22:32:22.36
抽象クラスのコンストラクタって呼ばれることある?

44 :デフォルトの名無しさん:2013/05/13(月) 22:38:06.00
もろちん

45 :デフォルトの名無しさん:2013/05/13(月) 22:38:32.06
いやむしろ呼ばれないことがない

46 :デフォルトの名無しさん:2013/05/13(月) 22:57:06.79
純粋仮想関数すら呼ばれる事も
例えばコンストラクタ内で呼ぶとか

47 :デフォルトの名無しさん:2013/05/13(月) 23:14:10.50
むしろコンストラクタ以外で
純粋仮想関数を呼び出す方法を知りたい

48 :デフォルトの名無しさん:2013/05/13(月) 23:19:31.46
つ ですとらくたー

49 :デフォルトの名無しさん:2013/05/14(火) 07:40:12.99
デストラクタだな

50 :デフォルトの名無しさん:2013/05/14(火) 19:34:01.79
static関数ではstaticなデータしか扱えないって聞いたけど
普通に扱えるんだけどどうなってるの?

51 :デフォルトの名無しさん:2013/05/14(火) 19:39:00.35
「(クラスの)staticな(メンバ)関数はstaticなデータ(メンバ)しか扱ない。非static(なメンバ)変数は(this経由では)扱えない」
>>50
普通に扱えたという例を晒してもらおうか

52 :デフォルトの名無しさん:2013/05/14(火) 19:42:09.74
自動変数はもちろん扱えるよ
thisが使えないだけ

53 :デフォルトの名無しさん:2013/05/14(火) 19:57:04.46
s/自動変数/非staticメンバ/

54 :デフォルトの名無しさん:2013/05/14(火) 20:00:44.37
sって何ですか?
/って何ですか?
日本語でおながいします

55 :デフォルトの名無しさん:2013/05/14(火) 20:03:06.30
在日うざ

56 :デフォルトの名無しさん:2013/05/14(火) 20:32:29.98
viの文字列置換だっけ?
C++スレでUnix固有の表現を使うなとは
思うけど、わかってて噛みつくかね

ところでstatic関数でどうやって
非staticメンバを扱うのよ

57 :デフォルトの名無しさん:2013/05/14(火) 20:33:19.54
普通の正規表現だろ
perlとかsedとかviだけじゃないしUnix固有でも何でも無い

58 :デフォルトの名無しさん:2013/05/14(火) 20:37:23.21
どうみてもUnix臭がぷんぷんですはい

59 :デフォルトの名無しさん:2013/05/14(火) 20:39:59.21
馬鹿を生贄にstaticおじさんを召喚

60 :デフォルトの名無しさん:2013/05/14(火) 20:49:47.12
perlも使った事無い男の人って……

61 :デフォルトの名無しさん:2013/05/14(火) 20:50:06.38
>>56
from ed

62 :デフォルトの名無しさん:2013/05/14(火) 20:52:55.69
むしろPerlでの実装を提案すると
「何でパールなの?」
ときかれて返答に困るでござる
俺の中では
 Perler=負け組
 Perler=20世紀末に活躍したジジィ

63 :デフォルトの名無しさん:2013/05/14(火) 20:59:40.31
perlは文法が相当キモいからね
でもそんくらい基礎知識

64 :デフォルトの名無しさん:2013/05/14(火) 21:00:33.52
PCREすらわからないようじゃ生きてるのもつらいだろうな

65 :デフォルトの名無しさん:2013/05/14(火) 21:05:43.21
s/x/y/ という文法に組み込まれた正規表現による置換の話だから
ライブラリの話とかどうでもいいです

66 :デフォルトの名無しさん:2013/05/14(火) 21:13:51.50
C++の<regex>にも
s/正規表現/置換後/
なんてのは無いな

67 :デフォルトの名無しさん:2013/05/14(火) 21:35:38.64
ただいま64 がregex標準ヘッダを調べています

68 :デフォルトの名無しさん:2013/05/15(水) 00:00:56.97
vector<T> vVal;



for( auto& Val : vVal )
{
  ・・・
}

上記の場合、順方向トラバースになりますが、
逆方向トラバースはrange-based forでは書けないのでしょうか??

69 :デフォルトの名無しさん:2013/05/15(水) 00:01:17.22
はい

70 :デフォルトの名無しさん:2013/05/15(水) 00:01:36.07
突っ込むべきは、置換パターンでレスする文化がスラドとかUnix寄りの文化で有ることの方だろう。
正規表現自体がUnixやPerlで発展してきた文化なのだから、
正規表現による置換パターンレスを受け入れた時点でUnixだからどうたらって言うこと自体が野暮。

そもそも53のツッコミ自体、50にも51にも52にも適用できないし変じゃねぇか?

71 :デフォルトの名無しさん:2013/05/15(水) 00:06:44.61
>>68
アダプタ書けば良い

72 :デフォルトの名無しさん:2013/05/15(水) 00:31:50.23
既出も含めて基本のおさらい

struct X
{
 int var1;
 static int var2;
 static void f(X &);
private:
 int var3;
};

int X::var2;

void X::f(X &x)
{
 // staticメンバ関数では
 //var1 = 1;    // error. 非staticメンバを直接は使えない
 //this;      // error. thisも使えない
 //this->var1 = 1; // error. よってthis経由でも非staticメンバは使えない
 var2 = 20;    // staticメンバなら使える
 x.var1 = 10;   // もちろんインスタンス経由なら非staticメンバを使える
 x.var2 = 20;   // インスタンス経由の形でもstaticメンバを使える
 x.var3 = 30;   // そのクラスのインスタンスならprivateメンバにもアクセスできる
}

int main()
{
 X x;
 X::f(x);
}

73 :50:2013/05/15(水) 01:19:23.56
>>51
DXライブラリの関数がstatic関数の中で普通に使えるのだけど
static関数で使えないのはメンバ変数だけで
他の変数は制限なしで使えるってこと?

74 :デフォルトの名無しさん:2013/05/15(水) 01:26:33.83
普通の関数が使えないと困るだろ常識的に考えて…

75 :デフォルトの名無しさん:2013/05/15(水) 01:28:25.39
>>73
static 関数は this が使えない
従って this-> が省略されているものも使えない
それ以外は使える状態にあれば使える

76 :68:2013/05/15(水) 01:29:07.02
>>69
>>71
ありがとうございました。

77 :デフォルトの名無しさん:2013/05/15(水) 01:59:02.49
rbeginとrendをbeginとendとして返すアダプタくらい
標準で用意してくれって思う

78 :デフォルトの名無しさん:2013/05/15(水) 02:52:52.47
逆にそんなUNKOなもの標準に入れるなって思う

79 :デフォルトの名無しさん:2013/05/15(水) 04:08:48.97
>x.var2 = 20;   // インスタンス経由の形でもstaticメンバを使える

なんでC++ってこんな書き方が許されてるの?
教えてエロい人

80 : ◆QZaw55cn4c :2013/05/15(水) 04:30:02.16
>>79
単に struct X だから public プロパティ/メンバ変数ということだけなのでは?
static メンバかどうかはこの場合はどうでもいい話

81 :デフォルトの名無しさん:2013/05/15(水) 05:04:08.77
他の言語は許されないの?

82 :デフォルトの名無しさん:2013/05/15(水) 07:09:54.58
>>78
UNKOなのはお前だよばーか

83 :デフォルトの名無しさん:2013/05/15(水) 07:24:01.71
>>81
C#ではムリダナ
書ける理由は特にないんじゃない?
メンバだからなんとなく使えるようにしたんじゃね

84 :デフォルトの名無しさん:2013/05/15(水) 17:42:24.83
C++=うんこ

85 :デフォルトの名無しさん:2013/05/15(水) 18:36:59.57
>>83
>メンバだからなんとなく使えるように
C++、KUSO過ぎる

86 :デフォルトの名無しさん:2013/05/15(水) 18:45:07.18
UNKOとかKUSOとかワロタw

87 :デフォルトの名無しさん:2013/05/15(水) 19:40:38.34
朝鮮人は本当に糞が好きだなあ

88 :デフォルトの名無しさん:2013/05/15(水) 20:06:30.93
だからC/C++大好き

89 :デフォルトの名無しさん:2013/05/15(水) 20:12:01.04
トンスルトンスル!

90 :デフォルトの名無しさん:2013/05/15(水) 20:34:41.30
C++のおかげでUNKOが好きになりました。

91 :デフォルトの名無しさん:2013/05/15(水) 20:43:33.49
C++が糞まみれの言語仕様であることは間違いないよな

92 :デフォルトの名無しさん:2013/05/15(水) 21:35:28.17
やっぱりJAVA >>>>>> C++だな

93 :デフォルトの名無しさん:2013/05/15(水) 21:41:18.44
えっ?!

94 :デフォルトの名無しさん:2013/05/15(水) 22:31:17.64
for( auto& pObj : vpObj )
{
  if( pObj->Func() )
  {
    return true;
  }
}

これを括弧を省略して、

for( auto& pObj : vpObj ) if( pObj->Func() ) return true;

というふうに書いたら、上記と同じような動作になってくれました。
ちょっと怖い気もする書き方ですが、
制御構文の括弧を省略できる条件の「1文のみ」というのは、最初の「;」が現れるまでという解釈でよいですか?

95 :デフォルトの名無しさん:2013/05/15(水) 23:03:15.98
ifは、if (式) 文、または、if (式) 文 else 文、で全体で一つの文

96 :デフォルトの名無しさん:2013/05/15(水) 23:05:11.17
文の定義をちゃんと理解すれば
それで答えは出る

ただ、{ } は省略しない方が無難

97 :デフォルトの名無しさん:2013/05/15(水) 23:11:53.75
{}を省略したりしなかったり一貫性が無いのは駄目だ
一貫性を保て

98 :デフォルトの名無しさん:2013/05/15(水) 23:13:04.45
  ∧_∧
  (´・ω・) いやどす
  ハ∨/~ヽ
  ノ[三ノ |
 (L|く_ノ
  |* |
  ハ、__|
""~""""""~""~""~""

99 :デフォルトの名無しさん:2013/05/15(水) 23:16:26.47
やっぱり朝鮮人

100 :94:2013/05/15(水) 23:22:34.84
参考になりました。
ありがとうございました。

101 :デフォルトの名無しさん:2013/05/15(水) 23:26:53.77
なりすまし乙
だからIDは必要なんだよ

102 :デフォルトの名無しさん:2013/05/16(木) 00:07:30.71
for( auto&amp; pObj : vpObj )
{
  if( pObj->Func() )
でpObjってポン助ですよね。それをauto"&amp;”で受ける意味あるんですか
てか、ポン助をautoする時ってauto&amp;が常識?

103 :デフォルトの名無しさん:2013/05/16(木) 00:15:00.19
ばーか

104 :デフォルトの名無しさん:2013/05/16(木) 00:27:49.43
ポン助って何だよ

105 :デフォルトの名無しさん:2013/05/16(木) 00:52:25.60
日本語でおk

106 :片山博文MZパンク ◆0lBZNi.Q7evd :2013/05/16(木) 01:47:33.65
>>102
ポインタを書き換えるときに参照にする。

107 :デフォルトの名無しさん:2013/05/16(木) 01:55:00.39
ポン助じゃねーよ
for ( auto & item : vec1 )
  item.v = 100;
その例だとshared_ptrなんだろうな

108 :デフォルトの名無しさん:2013/05/16(木) 02:08:54.83
>>102
unko *ar[n];
for ( int i = 0; i < n; i++ )
{
  auto &pObj ★
    = ar[i];
  {
    pObj->Func();
  }
}

★の部分をどう書くかは好きにしろ
スマポなら&にしておくのが無難

109 :デフォルトの名無しさん:2013/05/16(木) 07:21:59.87
そこは規格を引用しなくてどうする
for ( for-range-declaration : braced-init-list ) statement
 ↓

{
  auto && __range = range-init;
  for ( auto __begin = begin-expr,__end = end-expr; __begin != __end; ++__begin ) {
    for-range-declaration = *__begin;
    statement
  }
}

なのでポインターの配列でポインターを変更したい場合は
「for-range-declaration = *__begin;」を
「auto && pObj = *__begin;」にする必要がある。

110 :デフォルトの名無しさん:2013/05/16(木) 11:38:01.10
template<typename T> struct aaa
{
template<typename U> void test(){}
template<typename U> void moge(){ this->test<U>(); } // エラー: (10114) '(' expected
};
aaa<int> a;
というエラーが出ます。this->を消すとコンパイルが通ります。this->付けないのが正しいのでしょうか
CodeWarrior5.9.0です。

111 :デフォルトの名無しさん:2013/05/16(木) 12:04:12.58
>>110
ttp://ideone.com/NyEQDS
そのコンパイラを窓から投げ捨てるか確実にエラーが再現できるソースにしろ

112 :デフォルトの名無しさん:2013/05/16(木) 12:09:37.55
>>111
そのコードで確実にでます。

113 :デフォルトの名無しさん:2013/05/16(木) 12:11:01.52
>>110
gcc4.7.2でノーエラー

template <typename T>
struct aaa
{
template <typename U>
void test() {
std::cout << "test" << std::endl;
}
template <typename U>
void moge() { this->test<U>(); }
};

int main()
{
aaa<int> a;
a.moge<int>();
}

114 :デフォルトの名無しさん:2013/05/16(木) 12:24:21.22
>CodeWarrior
なんか15年位前にそんなのあったな

115 :デフォルトの名無しさん:2013/05/16(木) 12:44:46.73
>>94
それ、boolの戻り値なんだよな?
ifのあとに「return false;」ないけど

116 :デフォルトの名無しさん:2013/05/16(木) 12:46:28.77
あ、ごめん
forか、fooに見えたわ、疲れてんな

117 :デフォルトの名無しさん:2013/05/16(木) 12:52:14.54
俺はhogeに見えたけど

118 :デフォルトの名無しさん:2013/05/16(木) 15:31:48.10
グラフを構造してるけど、どう構造していいか悩んでいるので教えてくれませんか?
グラフの構造としては1つの頂点(ノード)に対して、そこから辺(エッジ)で結ばれる頂点全体を含む
配列を持つ構造を選びました。この配列の集合の構造をSと呼ぶことにします。
グラフの頂点はデータを持たしたいんですよ。でもデータの型は1つじゃないんですよね。
そこで考えたのがデータを整数としてもち、その整数にデータを対応させようと思っているんですよ。
また、辺の種類は1つではなく複数の種類の辺を持ちたいんですよ。それには二つのSを持たせるのか、
あるいはSではなく1つの頂点に対して、そこらから辺で結ばれている頂点とその辺の種類の組全体を含む
配列を持つ構造を選ぶのか分らないです。
また、辺に俗に言う重みというデータを持たせたいんですよ。
ということなのでよろしくお願いしますね。

119 :デフォルトの名無しさん:2013/05/16(木) 15:45:50.80
(´・ω・`)

120 :デフォルトの名無しさん:2013/05/16(木) 16:08:14.80
重み付きグラフでいいじゃん
あと隣接行列を併用

有向か無向かでも違うし
グラフ理論は基礎が出来てるかな?

121 :デフォルトの名無しさん:2013/05/16(木) 16:29:09.76
一応グラフ理論は初歩的な書物一冊とディスティールを少々読んだくらいで基礎が出来ているとは分りません。
整数でデータを持たせるよりアドレスでもたせたほうが効率的なはずなんですけど
データをアドレスと型二つの情報を持たせるなんてことC++で可能なんですか?

122 :デフォルトの名無しさん:2013/05/16(木) 16:34:14.24
>>121
>データをアドレスと型二つの情報を持たせるなんてことC++で可能なんですか?
おい誰かこいつに構造体(クラス)を教えてやれ

123 :デフォルトの名無しさん:2013/05/16(木) 16:38:31.02
いやいやいや、C++はアドレス自体に型情報が付属してるないですか?
すなわち、データにはvoid型の型情報を持たないアドレスと
型情報だけの組み(ペア)を持たせなければならないことを意味しますよね。
しかし、型情報だけを持たせるなんてことはC++にはできないんじゃないですか。
解決策はありますか?

124 :デフォルトの名無しさん:2013/05/16(木) 16:42:02.49
template・・・・

125 :デフォルトの名無しさん:2013/05/16(木) 16:43:26.86
traitsを使ってもいいな
conceptはまだだからお楽しみ
decltypeとか

126 :デフォルトの名無しさん:2013/05/16(木) 17:15:01.73
variant使えばいいじゃん

127 :デフォルトの名無しさん:2013/05/16(木) 17:44:36.92
traits template variant
この3つのどれかを使いでどうやってやるのか教えてくれませんか

128 :デフォルトの名無しさん:2013/05/16(木) 17:47:56.28
それ書いたら一冊の本になるぞ

129 :デフォルトの名無しさん:2013/05/16(木) 18:12:23.63
variantを使うとまさに「複数の型の値を持ち得る型」を宣言できる
取り得る型をT,U,...とするとvariant<T,U,...> data;のように宣言すればよい

variantの実装はboostにあるから自分で調べて

130 :デフォルトの名無しさん:2013/05/16(木) 18:25:23.85
>>129
boostにはグラフ用ののライブラリがあるんですがそれは
https://sites.google.com/site/boostjp/tips/graph

131 :デフォルトの名無しさん:2013/05/16(木) 18:36:44.47
>>130
一つの頂点に複数の型の値を持たせたいのなら、variantが良いよというだけ
グラフの方は知らない

132 :デフォルトの名無しさん:2013/05/16(木) 18:42:42.26
Boost.Graph使えで済むならいいけど
「グラフを構造してるけど、どう構造していいか悩んでいる」
らしいからそれじゃダメっぽいし
たぶんソース見ても理解できないよ

133 :デフォルトの名無しさん:2013/05/16(木) 21:38:04.88
構造的には正に adjacency_list だと思うし、property 使えば幸せになれる気がするが。

134 :デフォルトの名無しさん:2013/05/16(木) 22:36:21.74
Aという名前のクラスに
Bという名前のクラスをメンバーでもって
Aをnewでインスタンス生成した場合
AをdeleteすればBも問題なく解放される?

135 :デフォルトの名無しさん:2013/05/16(木) 22:40:59.13
だからなぜ書籍なども見ようとせず自分で実験しようともせず質問をするのだ

136 :デフォルトの名無しさん:2013/05/16(木) 22:46:01.55
実験してわかるのはその環境でそうであるという事だけだもん

137 :デフォルトの名無しさん:2013/05/16(木) 23:15:10.35
ここで聞いたって、その環境とやらですらその通りである保証はない。

138 :デフォルトの名無しさん:2013/05/16(木) 23:18:18.15
こうしてまた一人VC++信者が作り出された

139 :デフォルトの名無しさん:2013/05/16(木) 23:47:06.93
>>136
どこまでがC++の規格かの判別は難しいかもしれないが
C++の規格どおりに動かないなら環境に文句言っていいだろ

140 :デフォルトの名無しさん:2013/05/16(木) 23:54:05.14
>>134
Bを値で持ってればBのデストラクタは呼ばれる
問題なく解放されるかどうかはプログラム次第

141 :デフォルトの名無しさん:2013/05/17(金) 00:41:47.21
>>140
>問題なく解放されるかどうかはプログラム次第
そんな糞な環境はお前だけ

142 :デフォルトの名無しさん:2013/05/17(金) 01:01:06.35
デストラクタとoperator deleteが
自分の環境で呼ばれるかどうかを
確認した上ででなおせ!

143 :デフォルトの名無しさん:2013/05/17(金) 01:20:38.21
>>141
デストラクタが呼ばれることと
プログラマの意図どおりの(=問題をおこさない)動作をするクラス設計・実装になっていることとは
等価じゃないですよ

144 :デフォルトの名無しさん:2013/05/17(金) 01:23:04.41
>>143それが>>134の質問と何の関係が?

145 :デフォルトの名無しさん:2013/05/17(金) 01:24:14.95
>>143
で?

146 :KUSO KOTE:2013/05/17(金) 02:26:18.51
>>134
これ見たらKUSOして寝なさい
http://ideone.com/uimMTz
キチンと解放される

147 :デフォルトの名無しさん:2013/05/17(金) 16:57:30.97
LinusによるC++ dis
http://cpplover.blogspot.jp/2013/05/linus-torvalsc.html
一部引用

> C++を使うとめちゃめちゃクソな設計の選択に追いやられる。必ず、最初は「よさげ」な言語のライブラリ機能、
> たとえSTLたとえばとかBoostとか他の完全なクソを使い始める、それはプログラムに「役立つ」かもしれない。
> だがしかし、それによって引き起こされるのは:
>
>  ・動かない場合の無限の苦痛(しかも、STLとか、特にBoostが安定していて移植性があるなんて言うやつは
>   クソまみれだし全然面白くもなんともない)
>
>  ・非効率的な隠匿プログラミングモデル、二年ほど開発を続けて、始めて一部の隠匿設計が非効率的な
>   ことに気がつくが、その時点では、もうオマエのコードはよさげなオブジェクトモデルに依存しきっていて、
>   書きなおす以外に修正の方法がない。

148 :デフォルトの名無しさん:2013/05/17(金) 17:19:23.22
>>147
いつの話題だよ・・・

149 :KUSO KOTE:2013/05/17(金) 17:48:45.53
基地外に嫌われたところで別になんとも

150 :デフォルトの名無しさん:2013/05/17(金) 18:03:08.99
自分が苦労して最高の出来でやっていたことが普通の出来だけど誰でも簡単に出来るようになると不満を持つ人は珍しくない
そして自分の不満の正当化のため全体的な質が悪くなったことを理由にすることもあるが
そのいう元々の質が単なる自己満足レベルのものでしかないこともまた珍しくない

151 :デフォルトの名無しさん:2013/05/17(金) 18:31:47.97
いつからこのスレは江添とその取り巻きスレになった?

152 :デフォルトの名無しさん:2013/05/17(金) 19:16:57.61
>>96
文の定義を知ると ラベルステートメントという
C++の言語仕様の糞さに憤慨です

153 :デフォルトの名無しさん:2013/05/17(金) 19:31:47.68
はいはいサイナラ
ところでラベルステートメントって?何ソレ?

154 :デフォルトの名無しさん:2013/05/17(金) 22:23:09.86
>>152が何を問題視してるか知らないがラベルステートメントは
たぶんラベル付きステートメントのことでgotoの飛び先やcaseとかのこと
もちろんC++固有でなくCから持ってきたものだけど

155 :デフォルトの名無しさん:2013/05/17(金) 22:57:09.64
クソがこの業界では流行ってるのか?
それともC++がクソ文化なの?

156 :デフォルトの名無しさん:2013/05/17(金) 23:19:24.67
C++はクソだと思っている人が関連スレを荒らしまわっているだけ

157 :デフォルトの名無しさん:2013/05/17(金) 23:34:23.55
590 デフォルトの名無しさん sage 2013/04/30(火) 20:33:53.74
ウンコウンコいいながらこのスレに執着してる奴ってどんだけウンコ好きなんだよ

571 デフォルトの名無しさん sage 2013/04/30(火) 15:54:06.35
C++は本当にKUSOだな。
上級者でも(むしろ上級者ほど)規格片手にコード
書かなきゃいけない言語はおかしいだろ。
何のためのプログラミング言語だよ

628 デフォルトの名無しさん sage 2013/05/01(水) 19:41:52.32
やはりC++はブリブリUNKO
おまえらパソコンの大先生が古文書片手に議論しても
意見がまとまらないなんて、国際標準が意味をなしてない

158 :デフォルトの名無しさん:2013/05/17(金) 23:48:35.03
>>146
信じていいんだな?
信じるぞ

159 :デフォルトの名無しさん:2013/05/17(金) 23:57:01.17
C#最高!C++は糞!

160 :デフォルトの名無しさん:2013/05/18(土) 00:02:24.77
>>158
君が正しくプログラムを書いていればな
例えば解放が必要なリソースを持っているクラスのデストラクタに解放処理を書くのを忘れたりすれば
デストラクタが呼ばれてそのクラス自体は解放されたとしても問題なく解放されたとはいえない

161 :デフォルトの名無しさん:2013/05/18(土) 00:12:57.11
>>158
>>135
コンストラクタとデストラクタにログ入れて
対になっているか確認してから出直せ

162 :デフォルトの名無しさん:2013/05/18(土) 00:21:02.72
C++できる人はかっこいい。
C#やる人はダサい。

163 :デフォルトの名無しさん:2013/05/18(土) 00:40:12.25
C++できるけど普段はしまっておいてC#やってる人はかっこいいw

164 :デフォルトの名無しさん:2013/05/18(土) 02:14:20.50
ポインタのアドレスを指定バイトにアラインメントしたいのですが
どうすればいいですが

void* p = ...;
void* p32 = alignment( p, 32 );

こんな感じでやりたいです。

165 :KUSO KOTE:2013/05/18(土) 02:31:14.41
>>164
何がしたいのかよくわからないけど
こんな感じ?
http://ideone.com/IWrHRr

166 :KUSO KOTE:2013/05/18(土) 03:11:34.14
反応が無いな…
分岐と乗算除算は発狂する人がいるので
書き直してみた。寝る。
http://ideone.com/1HHyPq

167 :デフォルトの名無しさん:2013/05/18(土) 03:24:04.28
c標準ライブラリの識別子をstd名前空間の外に置くのを止めさせる方法はありませんか?

168 :デフォルトの名無しさん:2013/05/18(土) 05:24:02.53
グローバルネームスペースでのusing namespace std;も止めさせたいな。

169 :デフォルトの名無しさん:2013/05/18(土) 06:51:36.18
>>167
#include "my.h" //using namespace std;

これでok

170 :デフォルトの名無しさん:2013/05/18(土) 07:18:56.92
inline namespace unko {
 using namespace std;
}

これでok

171 :デフォルトの名無しさん:2013/05/18(土) 07:26:14.32
よし今度から
void fun(std::size_t)

void fun(decltype(sizeof(0)))
でok

172 :デフォルトの名無しさん:2013/05/18(土) 07:34:41.59
ちょっと>>167-171
何言ってんのかイミフ

173 :デフォルトの名無しさん:2013/05/18(土) 08:00:54.85
using namespace std;//←これをヘッダに移動した奴は死刑

これでいいだろ
これ以上は自分のコーディングstyleの
押しつけでしかない

174 :デフォルトの名無しさん:2013/05/18(土) 09:49:33.09
vector<CUnko> vpUnko;

shared_ptr<CUnko> pUnko( new CUnko );

vpUnko.push_back( pUnko );

remove( vpUnko.begin(), vpUnko.end(), pUnko );

これでなぜかvpUnkoの要素数が1のまま変わらず、削除が行われません。
なぜpUnkoを見つけて削除することができないのでしょうか?

175 :デフォルトの名無しさん:2013/05/18(土) 09:50:04.64

すみません、最初は

vector<shared_ptr<CUnko>> vpUnko;

です。

176 :174:2013/05/18(土) 10:00:02.33
すみません、eraseで解決しました。
removeでは要素を詰めるだけでというのは覚えていたんですが、
要素数まで同じというのは把握していませんでした(汗)

177 :デフォルトの名無しさん:2013/05/18(土) 10:04:12.13
よくあるまちがいだけど
本っっ当にC++はKUSOだな

178 :デフォルトの名無しさん:2013/05/18(土) 10:09:43.76
>>172
俺にも>>169-172はイミフだ
167は文字通り読んでstdio.hとかが名前空間を汚染することについてか、
直前のコードから「using namespace std;」の話でc++標準ライブラリを脱字したかのどちらかだと思う。
(前者と仮定して168では後者の話を振った)

>>173
.cppにusing namespace std;書いてstd::minと衝突して学習者が爆死しかける教本書いた奴も死刑だと思うんだ。

179 :デフォルトの名無しさん:2013/05/18(土) 10:15:11.52
最近、IUnknownがIUnkoに見えてきた・・・

180 :デフォルトの名無しさん:2013/05/18(土) 10:19:23.40
>>56
えっthisポインタを引数で渡す
同じクラスのメンバであれば、渡されたthisポインタ経由で非publicなメンバに特にキャストもせずにアクセスし得る

181 :デフォルトの名無しさん:2013/05/18(土) 10:23:50.11
>>178
>std::min
<algorithm>のアレか……(std::swap、std::max)
「グローバル名前空間空間にusing namespace std;」はホントに危険だよな……

182 :デフォルトの名無しさん:2013/05/18(土) 10:25:27.41
>>180は「privateなメンバには他クラスからアクセスできません」
にも「それは違うとか言いだしそうな奴だな」

183 :デフォルトの名無しさん:2013/05/18(土) 10:39:58.37
>>182
ちょっ何を言っているのかわからない
class Foo {
 int x;
public:
 static int GetX(Foo* p) { return p->x; }
};

class Bar {
 Foo obj;
public:
 void ShowFooX() { std::cout << Foo::GetX(&obj) << std::endl; }
};

184 :デフォルトの名無しさん:2013/05/18(土) 10:45:01.22
staticメンバ経由でprivateなメンバ(とか)にアクセスするというのは、
例えばスレッドをクラス化したりするときの基本テクニックなんやな

185 :デフォルトの名無しさん:2013/05/18(土) 12:42:01.18
using namespace std;が破壊力高いのは
ヘッダに入れた時に、意図していない他人に
まで迷惑をかけるからだろ。
自分でわかっててcppに入れるのまで
文句を言われる筋合いはない。
それにstd::maxと被る問題なら
グローバルでなく関数スコープでusingしても同じ。

186 :デフォルトの名無しさん:2013/05/18(土) 12:51:51.26
>static関数ではstaticなデータしか扱えないって聞いたけど

>自動変数はもちろん扱える
>s/自動変数/非staticメンバ/

>どうやって非staticメンバを扱うのよ

>thisポインタを引数で渡す
static int GetX(Foo* p) { return p->x; }

>「privateなメンバには他クラスからアクセスできません」
にも「それは違うとか言いだしそうな奴だな」

>何を言っているのかわからない

どちらかというと>>183
何を言っているのかわからない

187 :デフォルトの名無しさん:2013/05/18(土) 13:05:11.84
内容はともかくfoo/barを使う>>183はウンコ確定。
ところでinline namespaceって何ソレうまいの?

188 :デフォルトの名無しさん:2013/05/18(土) 14:31:59.66
民主党は、パナソニック(ガンバ)やシャープ、ソニーを潰す気だった?
http://www.youtube.com/watch?v=rycI46jG_Rg
.
円高デフレと産業の空洞化は、在日の戦略だった?
http://www.youtube.com/watch?v=iOKGvBsWtgg

189 :デフォルトの名無しさん:2013/05/18(土) 15:49:53.75
あー、そーか
staticが「他のクラス」だからprivateにアクセスできないと思っているんだな

もう、どこから突っ込んでいいやらw

190 :デフォルトの名無しさん:2013/05/18(土) 15:54:21.03
GUIで、コンポーネントを選択することを「フォーカス」と言いますが、
他のコンポーネントを選択するなどして、フォーカスが外れることを何て言うんでしょうか?
「デフォーカス」?「アウトフォーカス」?

191 :デフォルトの名無しさん:2013/05/18(土) 15:58:39.90
スレチガイカス

192 :デフォルトの名無しさん:2013/05/18(土) 16:13:30.20
static = うんこ

193 :デフォルトの名無しさん:2013/05/18(土) 17:57:17.15
スレチがイカス?

194 :デフォルトの名無しさん:2013/05/18(土) 18:07:58.26
すれ違いキス

195 :167:2013/05/18(土) 19:33:06.14
>>167です
分かりにくくてすいません

ようするにこういうコードが書きたかったんです…
#include<cstdlib>
namespace command{
enum Command{
exit ='c'
};
};

void some(const char *s){
using namespace command;
switch(s[0]){
case exit: // 関数exit(int)と衝突する
std:exit(0);
}
}

196 :デフォルトの名無しさん:2013/05/18(土) 19:39:03.30
>>195
なんなら

const int Exit = 'c';

といったように大文字で逃げたら?

197 :KUSO KOTE:2013/05/18(土) 19:51:23.14
>>196
逃げるならスコープenumがオヌヌメ。
だが質問者は逃げ方を訊いているわけではないぞよ。

198 :KUSO KOTE:2013/05/18(土) 20:00:03.71
>>195
衝突した所だけ command::exit にするのではいかんの?
絶対衝突させたくないならusingを使うこと
自体がおかしいと思う。
あとC++でexitはマジやめて。

199 :デフォルトの名無しさん:2013/05/18(土) 20:03:06.93
using namespaceって使ったことないわ。禁止されてるところも多いし

200 :デフォルトの名無しさん:2013/05/18(土) 22:07:24.11
>>197
>逃げ方を訊いているわけではない
ああそれもそうか
と言うかC的にはexitとreturnは(main関数内では)同義だから使ったこと無いや……
using云々以前に例外投げるとかすべきやね、C++なんだし

201 :デフォルトの名無しさん:2013/05/18(土) 22:29:15.14
CだろうとC++だろうと
exit使う奴は低脳

202 :デフォルトの名無しさん:2013/05/18(土) 23:38:54.62
>>195
using command::exit; を足しちゃダメ?

203 :デフォルトの名無しさん:2013/05/19(日) 00:01:53.12
>>185
「using namespace std;はおまじない」と教える/覚えるのはヘッダに入れるよりもヤバイだろ
分かっててusing namespace std;してるなら問題ないが、それを区別する手段が…

204 :167:2013/05/19(日) 00:29:51.57
>>196
とりあえず今までそれで逃げてました

>>198
command::exitだと見づらく感じてしまうんですよね…
あと、実際のコードはマイコンの制御プログラムで、開発中マイコンをぶら下げっ放しにするのがウザいのでPC上でもビルドして動かせるようにしたものです。本体には終了という概念がなく、そのためのロジックも存在しないので、手っ取り早くexitしとけという発想です。

>>202
おおー、衝突が無くなりました
ありがとうございます
using宣言にはこんな効果もあるのですね

結局、ライブラリ関数がグローバルスコープにぶち撒けられる問題はいかんともしがたいのでしょうか

>>202の解法で問題は無くなりそうなんで、もういいのですが

205 :デフォルトの名無しさん:2013/05/19(日) 00:55:58.77
>>204
今時のマイコンはC++でも大丈夫なのか……
つか、usingディレクティブとusing宣言は別物だけどな↓
http://www.geocities.jp/ky_webid/cpp/language/018.html

206 :デフォルトの名無しさん:2013/05/19(日) 01:05:28.32
ガラケーなんかでもC++で作られているものはあるよ。

207 :デフォルトの名無しさん:2013/05/19(日) 01:15:16.88
>>205
Cで作れるものにC++が使えない理由が無いだろ。
「今時の」とか、何言ってんの?

208 :デフォルトの名無しさん:2013/05/19(日) 01:17:18.17
ちなみにパフォーマンスで言うとCとC++の差はほとんどなくて、
じゃあ何が問題かっていうとROMサイズ。だから組み込み系は
Cが長かったんだけど、ROM単価が劇的に下がった今はもう
コードサイズの問題はほとんどなくなった。

209 :デフォルトの名無しさん:2013/05/19(日) 01:29:26.56
>>207
C言語対応してる→C++対応している、にはならないと思うけど?

210 :デフォルトの名無しさん:2013/05/19(日) 02:04:58.66
C++だとテンプレートとかコード量膨れやすいしオーバヘッドも増えやすいからねぇ…

>>209
マイコンメーカの提供するCコンパイラではどーにもならんけど、gcc使えるマイコンであればバックエンド流用でg++も通るんじゃね
標準ライブラリの移植状況がまんま制約になるし、可能であるかとやるかどうかは別だろうが
ROMサイズだの処理速度だのコンパイラの性能向上だのでやりやすくはなってきてる…のかな

211 :デフォルトの名無しさん:2013/05/19(日) 03:09:35.55
>>208,210
C++使うことによって発生するコードサイズの問題って何のこと言ってるの?
同じコードコンパイルして差が出ることはないだろうし。
テンプレート使うようなコードをCでマクロやコピペで書けばコードサイズが減らせるわけでもないだろ。

212 :デフォルトの名無しさん:2013/05/19(日) 03:23:59.17
同じコードコンパイルするならC++使う意味も無いだろ。
同等のロジックをクラス使って書くとオーバヘッドやバイナリコード量がちょっぴり増加する。

テンプレートは状況次第では一気に増える
・派生クラスを基底クラスにキャストして処理する
・同等のことをCでキャストやunion使って処理する
・同等のことをテンプレートで処理する
3つ目のケースで上2つと同等のバイナリコード量に潰せるコンパイラを期待するのは高望みじゃねぇかな?

213 :デフォルトの名無しさん:2013/05/19(日) 03:25:27.93
自分に有利な前提条件を勝手にでっち上げるのが
2ちゃんの流行なのか。
世間一般ではそういうのを屁理屈って言うんだがな。

214 :デフォルトの名無しさん:2013/05/19(日) 03:31:54.98
>>208
記憶容量の単価というよりは単にアドレス空間の絶対量の問題では?

215 :デフォルトの名無しさん:2013/05/19(日) 03:39:51.37
>>213
「コードサイズが膨れるテンプレートの使い方をしない」って前提を置いてる211に対して言ってるんだよな?
>>214
空間だけあっても中身ないと駄目だし結局ROM/RAM容量の問題じゃないのかそれ

216 :デフォルトの名無しさん:2013/05/19(日) 04:00:40.21
コードサイズ増やせない環境で不必要にサイズが増えるようなテンプレートの
使い方するような奴がバカだっていうだけだよなあ
そんな奴はどんな言語を使ったってダメだろう

217 :デフォルトの名無しさん:2013/05/19(日) 04:05:04.66
>>212
> 同じコードコンパイルするならC++使う意味も無いだろ。
同等のコードでも名前空間、型チェック、オーバーロードとか使って読みやすく、安全に
書けるようになるよ。

> 同等のロジックをクラス使って書くとオーバヘッドやバイナリコード量がちょっぴり増加する。
相当ひどいコンパイラ実装じゃないとそんなことにならないはずだけど・・・。
一般的に言えるってことならコード例を見せて欲しいな。

> テンプレートは状況次第では一気に増える
> ・派生クラスを基底クラスにキャストして処理する
> ・同等のことをCでキャストやunion使って処理する
> ・同等のことをテンプレートで処理する
> 3つ目のケースで上2つと同等のバイナリコード量に潰せるコンパイラを期待するのは高望みじゃねぇかな?
コードサイズを優先するならC++で書いても一番上のやつ選べばいいじゃん。

218 :デフォルトの名無しさん:2013/05/19(日) 05:01:16.36
>>217はClangかG++を持ってこないと
そんな糞は捨てろとか言い出しそうだな。
埋め込みコンパイラ舐めんなよ。

219 :デフォルトの名無しさん:2013/05/19(日) 05:32:29.89
>>216
実際問題マイコンでのC++は放置されてたんだからその判断した当時の各種ベンダに言えよ。
「テンプレートによるコードサイズへの影響を正しく予測できない奴はCもダメなんで配慮の必要なし」て。

>>217
> 同等のコード
同等≠同じ、だから名前空間とかオーバーロード使ったコードはCでは通らんだろ。
その辺のみ使ってCと同等のコードを書く制約ならバイナリコード量にほぼ(名前修飾除く)影響は出ないが、
制約なく書いたら普通にそれ以外も使ってしまってサイズを膨らます要因にはなるわな。
> 一般的に言えるってことなら
thisポインタを渡す処理とか仮想関数テーブルとか名前修飾とか例外初期化とかが、ちょびっと。
そのちょびっとをケチりたいって要求は今でも8bitマイコンなら現役だと思うけど
> コードサイズを優先するならC++で書いても一番上のやつ選べばいいじゃん。
STL含め、それを全開発者に常に意識させない限りはコードが膨れるのが問題なんだよ。

一々「テンプレート(含むSTL)使用禁止」「仮想関数使用禁止」「クラス使用は最低限」
とかしないとC++採用でのバイナリコード量の増加を押さえられないのなら、
それを理由にC++自体を回避するのも十分有効な手段だろ。

C++の利点を活用できない状態でCに加えてC++ライブラリの移植の面倒まで見たいって企業は少ないだろうな。

220 :デフォルトの名無しさん:2013/05/19(日) 05:47:31.70
まあ どっかの基地外さんじゃないけど
素人に使わせると糞になりがちで、
企業としてはそれをコントロールするコストを
加味するとCが無難。
名前空間、型チェック、オーバーロード
の為だけにC++を導入するメリットは少ない。
C++は規格オナニーだけにしてください。

221 :デフォルトの名無しさん:2013/05/19(日) 06:33:01.93
>>204
>結局、ライブラリ関数がグローバルスコープにぶち撒けられる問題はいかんともしがたいのでしょうか
如何ともしがたい。
規格は<cstdlib>がexitをグローバル名前空間に
導入されることを禁止していないし
それを抑制するための言語機能もない。

222 :217(=211):2013/05/19(日) 09:15:37.63
>>219
> 制約なく書いたら普通にそれ以外も使ってしまってサイズを膨らます要因にはなるわな。
> thisポインタを渡す処理とか仮想関数テーブルとか名前修飾とか例外初期化とかが、ちょびっと。
この「ちょびっと」って数%って感じだよね?それが致命的になるレベルのコードサイズ制約を
実際に相手にしたことはないんで感覚的にはわかんないけど、あると言われれば否定はで
きないな。

> STL含め、それを全開発者に常に意識させない限りはコードが膨れるのが問題なんだよ。
そんなに制約がキツイ環境なら開発者みんな気をつければいいだろうとは思うけど、それが
簡単な話じゃない場合(人数とか資質とか)もあるのは、まぁわかる。

両方が問題になる場合にはC縛りがちょうどいいケースがあり得ることは理解したよ。ありがとう。

223 :デフォルトの名無しさん:2013/05/19(日) 09:51:33.60
2chに有益な情報なんてない

224 :デフォルトの名無しさん:2013/05/19(日) 09:58:43.35
こんなところで他人を言い負かそうとか、持論を押しつけようとかしても時間の無駄。
お互い言いたいことしか言わずに、他人の話は基本的に否定がデフォルト設定だから。

225 :デフォルトの名無しさん:2013/05/19(日) 10:11:03.18
>>195,204
終わった話のようだが自分がグローバルにばらまくのはかまわないのか?
まあ外にさらさない実装部分なら好きにしていいというのは基本ではあるんだけど
ttp://ideone.com/6MFJV4

226 :デフォルトの名無しさん:2013/05/19(日) 12:43:07.60
ttp://ideone.com/yGlxuk

227 :デフォルトの名無しさん:2013/05/19(日) 13:01:24.56
ミンスとは政治色が強いですね

228 :デフォルトの名無しさん:2013/05/19(日) 14:42:55.84
>>223
>有益な情報なんてない
え?結構このスレ勉強になるんですけど

229 :デフォルトの名無しさん:2013/05/19(日) 15:40:22.99
質問です
iostreamはSTLに入るのでしょうか?

230 :デフォルトの名無しさん:2013/05/19(日) 15:41:40.27
STLというのは規格で定義されたものではなく
皆が適当に呼んでるだけの呼称なので
どれが何に入ると決まっているわけではない

231 :デフォルトの名無しさん:2013/05/19(日) 15:49:30.97
なるほど。ありがとうございます
この前coutとauto_ptrはSTLじゃない
と言われてえぇっと思ったので
質問させていただきました
定義は曖昧ということですね

232 :デフォルトの名無しさん:2013/05/19(日) 16:08:06.24
iostreamはあまりSTLと呼ばれる事は少ないが
テンプレート使ってるのでSTLと呼んでも悪い事も無い

auto_ptrはC++11でdeprecatedなのでキニスンナ

233 :デフォルトの名無しさん:2013/05/19(日) 16:16:06.43
>>232
横だけどthreadは?
処理の多くが環境依存だから
ヘッダーだけテンプレートで
本体は.cppになると思うのだけれど
これもテンプレートライブラリでいい?

234 :デフォルトの名無しさん:2013/05/19(日) 16:22:13.00
テンプレートが含まれる奴は全部STLでいい

235 :デフォルトの名無しさん:2013/05/19(日) 16:33:10.26
C++ Standard Library

236 :デフォルトの名無しさん:2013/05/19(日) 16:35:12.31
STLは慣用的に使われてるだけだから
あまり気にするとハゲるぞ

237 :デフォルトの名無しさん:2013/05/19(日) 16:36:46.60
ストラウス先生はSTLにご執心だもんな

238 :デフォルトの名無しさん:2013/05/19(日) 17:00:02.01
STLなかったら軽くしねる。

239 :デフォルトの名無しさん:2013/05/19(日) 17:02:32.48
互換性気にしすぎてハゲちゃったかー

240 :デフォルトの名無しさん:2013/05/19(日) 17:22:15.40
無能同士の会話ですからね

241 :デフォルトの名無しさん:2013/05/19(日) 17:53:57.09
無毛同志だからしょうがない

242 :デフォルトの名無しさん:2013/05/19(日) 17:58:45.50
用語としてではなくライブラリとしてのSTLは曖昧ではなくデファクトスタンダードとなってる規格が定義されてて実装も存在してる

243 :デフォルトの名無しさん:2013/05/19(日) 18:00:07.14
用語としてではなくライブラリとしてのSTLは曖昧ではなくデファクトスタンダードとなってる規格が定義されてて実装も存在してる

244 :デフォルトの名無しさん:2013/05/19(日) 18:00:40.15
同じ事2回言うな無毛

245 :デフォルトの名無しさん:2013/05/19(日) 18:00:59.19
>>242
>規格が定義され
参考までにその規格の名前を教えてください

246 :デフォルトの名無しさん:2013/05/19(日) 18:01:54.11
髪の毛を生やす能力が無いとか
いじめるのも大概にして下さい!

247 :デフォルトの名無しさん:2013/05/19(日) 18:02:09.13
>>245
無毛に用はない

248 :デフォルトの名無しさん:2013/05/19(日) 18:04:40.33
毛を生やす力はC++に全振りしたのがハゲ

249 :デフォルトの名無しさん:2013/05/19(日) 18:05:52.83
おまいらどんだけハゲの事好きなんだよ

250 :デフォルトの名無しさん:2013/05/19(日) 18:06:29.88
そりゃC++なんてやってちゃハゲになるよな

251 :デフォルトの名無しさん:2013/05/19(日) 18:08:44.17
で結局 STLを定義した規格は無いの?

252 :デフォルトの名無しさん:2013/05/19(日) 18:08:55.81
ハゲにもヒゲはあるんだよな…

253 :デフォルトの名無しさん:2013/05/19(日) 18:10:23.13
横も後ろもフサフサじゃボケ
http://www.stroustrup.com/

254 :デフォルトの名無しさん:2013/05/19(日) 18:13:08.98
おまいら、毛が好きだなw

255 :デフォルトの名無しさん:2013/05/19(日) 18:14:29.52
横?・・・ (つд⊂)ゴシゴシ
後ろしか無いじゃないか!

256 :デフォルトの名無しさん:2013/05/19(日) 18:25:05.07
Java使ってる奴はフサフサだよ
俺が知ってる同僚はそう

257 :デフォルトの名無しさん:2013/05/19(日) 18:42:15.02
C++使いは白髪が多いな。

258 :デフォルトの名無しさん:2013/05/19(日) 20:20:51.56
>>245,251
ttp://www.sgi.com/tech/stl/table_of_contents.html

259 :デフォルトの名無しさん:2013/05/19(日) 21:28:58.14
ハゲの回答です

260 :デフォルトの名無しさん:2013/05/19(日) 21:34:15.60
おまえら貶しすぎや

261 :デフォルトの名無しさん:2013/05/19(日) 22:04:14.70
髪の毛晒せよ

262 :デフォルトの名無しさん:2013/05/19(日) 22:27:39.05
ぬけぬけと・・

263 :デフォルトの名無しさん:2013/05/19(日) 22:47:32.73
std::stringはコンテナに含まれますか?

264 :デフォルトの名無しさん:2013/05/19(日) 23:15:30.36
ふくまれません

265 :デフォルトの名無しさん:2013/05/19(日) 23:35:55.06
コンテナ要件満たしててコンテナの一種なのかと思ってたけど気のせいだったか

266 :デフォルトの名無しさん:2013/05/19(日) 23:42:25.69
ハゲは信じる

267 :デフォルトの名無しさん:2013/05/19(日) 23:49:45.54
>>262
これ以上抜かないで下さい

268 :デフォルトの名無しさん:2013/05/20(月) 00:46:41.64
>>265
コンテナの要件って何か知らないけど
stringって文字列以外を格納できたっけ?

269 :デフォルトの名無しさん:2013/05/20(月) 00:48:06.12
>>268
0x00〜0xffを格納できるし、\0ターミネーターも存在しない
string::c_str()はそうじゃないだろうけど

270 :デフォルトの名無しさん:2013/05/20(月) 00:57:57.47
>>269
いやcharやwchar_t以外のクラスとか突っ込んで
ちゃんと動くようになってんのかなぁと

271 :デフォルトの名無しさん:2013/05/20(月) 01:01:18.02
俺もコンテナの要件って知らないけど、
それを満たしているなら文字列専用コンテナ
って言えるだろ

272 :デフォルトの名無しさん:2013/05/20(月) 01:04:23.00
>>258
SGIという会社の「Standard Template Library Programmer's Guide」って文書で定義された「SGI Standard Template Library」がデファクトスタンダードなSTLの規格と申すか。
ま、お前の中ではそうなんだろうな。

273 :デフォルトの名無しさん:2013/05/20(月) 01:10:23.94
charとwchar_t以外で突っ込めて嬉しいのって何だろう
UTF-32とかUTF-9とか、charやshortのtypedef突っ込む用途あたりか?

274 :KUSO KOTE:2013/05/20(月) 01:15:18.61
むしろunsigned charを突っ込みたいところ。
なんでcharがsigned charと異なる処理系定義型
なのか理解に苦しむ。

275 :デフォルトの名無しさん:2013/05/20(月) 01:47:18.57
>>258
そう言うの参照するまでもなく、ISO規格の中で一般にSTLと呼ばれるライブラリは定義されてる
ただそこでは全てひっくるめてC++ Standard Libraryとなっていて、Standard Template Libraryとは呼ばれて居ないとかだと思う
STLそのものがデファクトだ云々だってことではなく「STLは俗称、使う奴は死刑」って原理主義者が騒いでるだけ
探せば別の規格文書の中でSTLって呼び方してるかも知れんけど、探してまで相手する話じゃないよ

>>271
ISO/IEC 14882:1998/2003をググって出てくるPDFのなかの17.3.1だと
コンテナと文字列は別のカテゴリ扱いらしいから所謂コンテナではない

って事になると思う
ただそれとは別にキャラクタコンテナって単語も使われてるが、これはcharとかwchar_tの事っぽいw
ていうかこのPDF丸上げして大丈夫なのか?ニューヨーク大学さんよ

>>274
歴史的経緯とかそういうのじゃね

276 :デフォルトの名無しさん:2013/05/20(月) 01:54:02.23
文字列扱わないなら「vectorでよくね?」ってなる

277 :デフォルトの名無しさん:2013/05/20(月) 02:09:10.37
>>269
s[s.size()] で '\0' 出てくるよ。

278 :デフォルトの名無しさん:2013/05/20(月) 02:10:57.87
>>275
>「STLは俗称、使う奴は死刑」って原理主義者が騒いでるだけ
そうかなあ
STLがISOで定義された規格であるかのように
説明してたら突っ込まれるのは仕方ないんでは
Wikipediaの説明とかおかしいし

それにSTLがISOに入る前の元の定義をこえて
>>15のように拡大解釈する人が多くいるように
人によって範囲が違うわけで、
>>16のようなレスを付けたくなるのも気持ちはわかる

279 :KUSO KOTE:2013/05/20(月) 02:22:06.56
>>277
うそつけ。
と思ったらその通りで、さらに2011で
data()の仕様が変わっていたでござる。

280 :デフォルトの名無しさん:2013/05/20(月) 02:38:18.83
>>275
「一般にSTLと呼ばれる」が、ただの思い込み、勘違いだとは思わないのかね?
現状でも「STL」って言っただけじゃ「どこまでを指して言ってるの?」と疑問に思われる
ことがあるのが現実だし、その可能性は今後もどんどん高くなる一方だ。

「C++標準ライブラリ」あるいは単に「C++の」と呼ばずに敢えて「STLの」なんて呼ぶ
必要性もメリットも無いだろ。

281 :KUSO KOTE:2013/05/20(月) 02:42:11.26
>ISO/IEC 14882:1998/2003をググって出てくるPDFのなかの17.3.1だと
>PDF丸上げして大丈夫なのか?ニューヨーク大学さんよ
お巡りさんこいつです。

282 :デフォルトの名無しさん:2013/05/20(月) 02:49:05.23
Effective STL読んでから言え

283 :デフォルトの名無しさん:2013/05/20(月) 02:52:55.94
STLという言葉を用いる人のおつむが
弱く、キレやすいいことは
このスレでよくわかりました

Effective STL何ソレうまいの?

284 :デフォルトの名無しさん:2013/05/20(月) 04:43:54.44
やっぱりモヒカン族やなぁ…

>>278
> STLがISOで定義された規格であるかのように
どこからどこまでSTLって定義が含まれてないだけで、そう呼ばれるものは一式含まれている。
定義が無い/定義が失われた言葉に一々そんな言葉は無いとか言って回るのは只の原理主義。
書いたの俺じゃないけど>>236のとおりだな。

>>280
> 「一般にSTLと呼ばれる」が、ただの思い込み、勘違いだとは思わないのかね?
STLの範囲がどこまででも結局C++ Standard Libraryの一部だって言ってるだけ。
そしてC++ Standard Libraryに内包されないライブラリをSTLと呼ぶとは思わない。
STLの定義がどこまで、は何の関係もない。
> 敢えて「STLの」なんて呼ぶ必要性もメリットも無い
言いたいことは判るが、便利な略語としては必要性もメリットも有る。
C++だと言語全体を含むし、C++SLとか書いてもハァ?だし、標準ライブラリとか一々書くのも長い。
良い言い方ではないにしても、より良くて普及してて便利な言い方が有るわけでもなし

>>281
これがドラフトかどうかは知らんけど、ドラフトとかは大丈夫なんじゃね?

285 :デフォルトの名無しさん:2013/05/20(月) 04:49:15.84
>>283
弱いのはともかくキレてる奴いたか?
というか、俗語に「〜って何?」って喧嘩売る奴も大概だって気づけ
弱い者いじめ同然でただただ下衆い

286 :デフォルトの名無しさん:2013/05/20(月) 07:06:55.51
>>284
これはDIS(ドラフト)でなく正式版ですよ

287 :デフォルトの名無しさん:2013/05/20(月) 07:23:18.97
>STLの範囲がどこまででも結局C++ Standard Libraryの一部だって言ってるだけ

長文乙。
君がそう考えているものをそう考えない人がいるから反発されるのであって、
自分の考えを根拠なく繰り返したところで会話は成立しないぞ。

288 :デフォルトの名無しさん:2013/05/20(月) 07:26:12.72
古い規格は無償公開されてるのはよく見るからそういうやつじゃね

289 :デフォルトの名無しさん:2013/05/20(月) 08:57:14.77
>>284
>必要性もメリットも有る
必要性?
・STLは標準ライブラリの一部をさす
・その範囲は明確出なくどうでもいい
この状況下で敢えてライブラリをSTLと言う
必要性が「長いから」なのか?

最近のレスでは逆に冗長なのだが
「stlのstd::equals」→ただのstd::equalsだろ?
「stlのstd::maxが」→ただのstd::maxだろ?
「stlに複素数あるけど」→標準の複素数クラスだろ
「stlのstring」→stringでわかるだろ
「VS2010のSTLだと」→VS2010だと、でいいだろ
「STLのiostreamを」→iostreamでいいだろ
「STLつかうと一気に実行ファイルサイズが10倍」→printfをiostreamにしたんだろiostreamと言え
「STLマンセ〜」
なんかもう、STLが馬鹿の象徴に思えてならない

290 :デフォルトの名無しさん:2013/05/20(月) 09:08:35.98
http://en.wikipedia.org/wiki/Standard_Template_Library
> The Standard Template Library (STL) is a C++ software library that influenced many parts of the C++ Standard Library.
http://ja.wikipedia.org/wiki/Standard_Template_Library
> Standard Template Library (STL) は、プログラミング言語C++の規格で定義された標準ライブラリの一つ。

この日本語版、おかしいよな。

291 :デフォルトの名無しさん:2013/05/20(月) 09:14:46.88
STL信者はおつむが弱いからね
都合のいいように訳してしまったんだね

292 :デフォルトの名無しさん:2013/05/20(月) 10:18:05.90
>>284
> C++だと言語全体を含むし、

言語全体のことなのかライブラリのことなのかわからなくて困る場面がよくわからないな。
組み込み配列とstd::arrayとか?そういう場面で「STL」がなんの役に立つのかもわからん。

> 標準ライブラリとか一々書くのも長い。
> 良い言い方ではないにしても、より良くて普及してて便利な言い方が有るわけでもなし

短くしたいなら>>289の言うように何もつけなくていい場面が多いし曖昧な場面でもstd::を
つければ十分で正確。

逆に、C++標準ライブラリの話をしてるときに「STLの」と限定を付けて呼ぶことが役に立つ
具体的な例を何か挙げられる?少し考えたけど思いつかない。

293 :デフォルトの名無しさん:2013/05/20(月) 12:04:08.51
アルゴリズムだけは別だな
「STLのアルゴリズム」と言わないとすっきりしない

294 :デフォルトの名無しさん:2013/05/20(月) 15:38:06.63
C++プログラマ雑魚杉

295 :デフォルトの名無しさん:2013/05/20(月) 20:19:19.97
ごめんね(´・ω・`)

296 :デフォルトの名無しさん:2013/05/20(月) 20:26:51.23
>>294
ありがとうございます

297 :デフォルトの名無しさん:2013/05/20(月) 21:05:53.76
std::arrayの使いどころがわかりません
何に使うのでしょうか?

298 :デフォルトの名無しさん:2013/05/20(月) 21:08:19.12
逆に生配列を何のために使うのかがわからない

299 :デフォルトの名無しさん:2013/05/20(月) 21:33:29.89
二次元配列とか std::array 使うとかなりうるさいよね
配列を std::array のシンタックスシュガーにすればいいのに

300 :デフォルトの名無しさん:2013/05/20(月) 21:38:50.08
>>298
バカか?

301 :デフォルトの名無しさん:2013/05/20(月) 23:31:04.57
>>297
・コンストラクタやoperator=で全体のコピーができる配列
・ムーブはできないけど要素数が固定のvector
が欲しいときに使う

302 :デフォルトの名無しさん:2013/05/21(火) 00:15:11.11
コンテナ要件も満たしてんだよなarray

303 :片山博文MZパンク ◆0lBZNi.Q7evd :2013/05/21(火) 01:16:23.66
仮想関数を関数ポインタみたいに使いたい。ナルかどうか確認したり、関数のアドレスに直接アクセスしたりしたい

304 :デフォルトの名無しさん:2013/05/21(火) 01:16:35.64
>>287
「C++の規格範囲に含まれない物をSTLと呼ぶ奴が居る」とかならともかく、自分の発言の解釈は自分の考えるもので構わんだろ。
他人の発言を俺々解釈してから否定して、「お前の発言は俺による俺々解釈が正しいから間違い」とか言い出すとか訳わからんわ。

305 :デフォルトの名無しさん:2013/05/21(火) 01:35:31.65
>>289
> 必要性が「長いから」なのか?
通りが良い場合もある。範囲が明確でなくても文脈で伝わることはあるし、現に使われている以上効用はあるんだろ。
メリットゼロだと思うならなぜ使われていると思ってるんだ。
> 最近のレスでは逆に冗長なのだが
STLという言葉を使うと必ず冗長性が減るとか、STLって言葉を使う馬鹿が居ないなんて誰も言ってないのに。
ってことで後は蛇足だが…
> VS2010だと、でいいだろ
大抵は良いにしても、(その発言の場合も違うのだろうけど)STLportとかと比較したい場合は良くない。
> printfをiostreamにしたんだろ
それ以外にも使ってないと10倍行くことは珍しい気がするが、原因を憶測で限定するより余程マシ。
iostreamにしてもC++ Standard LibraryのTemplateなLibrary使った結果なわけだからそのまんま。

>>292
> 言語全体のことなのかライブラリのことなのか
不勉強で生データ構造使って苦労してる奴に簡潔に助言するなら
「C++の標準ライブラリのコンテナ使え」
「C++のコンテナ使え」
「標準ライブラリのコンテナ使え」
「std::のコンテナ使え」
「コンテナ使え」
「STLコンテナ使え」
検索キーワードとしても使い勝手が良い。
> C++標準ライブラリの話をしてるときに
その前提だと俺も思いつかないな。その前提だと。

306 :デフォルトの名無しさん:2013/05/21(火) 01:51:50.27
長髪でスタイルのいい人がorzしたらSTLになる

307 :デフォルトの名無しさん:2013/05/21(火) 02:05:18.49
orzはどう見ても小学生の体型

308 :デフォルトの名無しさん:2013/05/21(火) 02:31:55.46
>自分の発言の解釈は自分の考えるもので構わんだろ

いや止めてくださいマジで

309 :KUSO KOTE:2013/05/21(火) 03:15:37.47
>>303
イマイチやりたいことがわからないけど
http://ideone.com/EXYDUk
関数ポインターをnullチェックしたり、
reinterpret_castで整数にして
好きなだけアドレス値を取るがいい。

310 :デフォルトの名無しさん:2013/05/21(火) 03:26:24.73
ウンコ出る…ファイナル

311 :デフォルトの名無しさん:2013/05/21(火) 03:30:01.27
>>308
解釈した結果に異論が有るならちゃんとそこポイントして言えよ。
自身の発言への解釈・補足行為自体にケチ付けるとか意味わからんわ。

312 :デフォルトの名無しさん:2013/05/21(火) 03:48:15.51
>>311
>自身の発言への解釈・補足行為自体にケチ付けるとか意味わからん
お前のオナニー用語で他人とのコミュニ
ケーションを試みないでください

あとSTLを連呼すると初心者が真似して
iostreamとかstringとかcomplexとか
元々のSTLの範囲を逸脱した誤用が
散乱するので不愉快です

313 :デフォルトの名無しさん:2013/05/21(火) 03:50:57.30
>>309
プログラム読んでたら気のせいかバキュームカーの匂いがしてきた

314 :デフォルトの名無しさん:2013/05/21(火) 03:55:42.92
>>313
「->*」が意味深だな

315 :デフォルトの名無しさん:2013/05/21(火) 04:15:47.56
C++キモすぎる

316 :デフォルトの名無しさん:2013/05/21(火) 04:16:52.11
お前の親ほどじゃないさ

317 :デフォルトの名無しさん:2013/05/21(火) 06:23:04.60
>>312
どの用語か具体的に書けよ…と思ったが別にいいや
原理主義者にとっては世の中オナニー用語塗れだったりしそうだしキリがねぇ

後半は分かるけど、なら最初からそれだけ言ってりゃいいんじゃねぇの?
変な煽りを入れるから斜め上の斜め下の斜め右みたいなアホなことになる。

318 :デフォルトの名無しさん:2013/05/21(火) 07:30:13.22
>>310
マジレスすると
ウ○コが出るんじゃなくて
ウ○コのデリケートと思われ

319 :デフォルトの名無しさん:2013/05/21(火) 07:30:50.06
間違えた。デリゲートね

320 :デフォルトの名無しさん:2013/05/21(火) 07:43:52.33
下痢gate、下痢の門、と来ればanalか

321 :デフォルトの名無しさん:2013/05/22(水) 11:48:06.85
>>309 ありがと

322 :デフォルトの名無しさん:2013/05/22(水) 12:08:27.57 ID:kEnSD/aE!
1. Turn in: hw5.cpp
This assignment uses functions to process arrays.
In main, define an array called original with 20 integer values.
Define two additional arrays of size 20 called positive and negative.
Fill the original array by prompting the user to enter values until they either fill all 20 elements or enter an 999.
Write a void function called split() that reads the array and puts all positive values (including zero) into an array called positive, and puts all negative values into an array called negative.
split() will have three integer array parameters.
Write a integer function called sortArr() which sorts the two arrays into ascending order.
sortArr() will have one integer array parameter, and will return the count of the array.
Write a void function called display() that will print the array out to the screen.
display() will have one integer array parameter.
In main, display a message telling the count value for each array in a meaningful message.

だれか頼む

323 :デフォルトの名無しさん:2013/05/22(水) 12:50:21.45
お前はプログラミングをやめたほうがいい

324 :片山博文MZパンク ◆0lBZNi.Q7evd :2013/05/22(水) 15:34:58.20
1. hw5.cppに寄ってみよう。この割り当て(代入)は、配列たちを処理するために関数を使う。
mainにおいて、20個の整数値を持つoriginalと呼ばれる配列を定義せよ。
positiveとnegativeと呼ばれる、サイズが20の追加的な2つの配列を定義せよ。
ユーザにすべての20要素か、999を入力するまで、original配列を埋めよ。
split()と呼ばれるvoidの関数(その配列を読み、全ての正の値(ゼロを含む)を、
positiveという配列に置き、すべての負の値をnegativeという配列に置く)を書け。
split()は、三つの整数配列の引数を持つものとする。
sortArrと呼ばれる整数関数(二つの配列を昇順に並べる)を書け。
sortArr()は、一つの整数配列を持ち、配列の和を返すものとする。
display()と呼ばれるvoid関数(スクリーンにその配列を出力する)を書け。
display()は、一つの配列引数をもつものとする。
mainでは、メッセージ(それぞれの配列について数えた値を、
意味のあるメッセージで伝える)を表示せよ。

325 :デフォルトの名無しさん:2013/05/22(水) 15:40:10.46
いやいや、読めるのは当たり前でしょ・・・
読んだ上でどうしたらいいかが質問の内容で・・・

326 :デフォルトの名無しさん:2013/05/22(水) 16:10:27.55
>>322
C/C++の宿題片付けます 164代目
http://toro.2ch.net/test/read.cgi/tech/1364700745/

327 :167:2013/05/22(水) 19:16:49.57
マジメに疑問なんだけど、
開発者全員にvirtual関数の不使用を徹底するの大変!ってプロジェクトは、どんな規約なら守らせられるんだろう

それともそういうプロジェクトでは規約というものが有名無実化してるのか?

328 :デフォルトの名無しさん:2013/05/22(水) 19:35:45.23
>>327
ソースコミットメントに、条件でvirtualがあったら不許可にすればOK

329 :デフォルトの名無しさん:2013/05/22(水) 19:39:10.53
#define virtual

330 :デフォルトの名無しさん:2013/05/22(水) 19:53:46.60
virtual void shukkin(void) = 0;

331 :デフォルトの名無しさん:2013/05/22(水) 19:57:52.47
virtual不使用ってどんな拷問だよ

332 :デフォルトの名無しさん:2013/05/22(水) 19:58:14.12
キーボード入力をフックして、virtualって入力しようとしたら部屋中に響き渡る警告音を鳴らせばいい。

333 :デフォルトの名無しさん:2013/05/22(水) 19:59:23.45
全く苦にならんだろ

334 :デフォルトの名無しさん:2013/05/22(水) 20:04:08.20
>>327
iostream(cin,cout,cerr)の使用禁止

335 :デフォルトの名無しさん:2013/05/22(水) 20:18:43.64
>>327
>virtual関数の不使用を徹底するの大変!ってプロジェクトは、どんな規約なら守らせられるんだろう

マジレスすると質問内容が無毛。
不使用の目的が不明なので
答えようがない。
「そういうプロジェクト」も
どういうプロジェクトなのか不明。

336 :167:2013/05/22(水) 20:20:10.24
誰が得するのか分からない謎規約を
徹底させるノウハウのあるところなら、
virtualの不使用を徹底させるくらい
造作もないことではなかろうか

337 :デフォルトの名無しさん:2013/05/22(水) 20:20:42.66
強制virtualなJavaを使ったら発狂するのかな

338 :167:2013/05/22(水) 20:24:17.87
なんか誤解されてるみたいだけど、
>>327の真意は>>336

339 :デフォルトの名無しさん:2013/05/22(水) 20:27:46.20
>>336
マジレスすると>>327の内容と>>336の内容
との論理的関係が無毛

340 :デフォルトの名無しさん:2013/05/22(水) 20:32:11.84
エロいなちょっと

341 :デフォルトの名無しさん:2013/05/22(水) 20:35:25.26
>>340
お巡りさんこいつです

342 :デフォルトの名無しさん:2013/05/22(水) 20:35:25.64
virtual不使用とか誰得規則だし

343 :デフォルトの名無しさん:2013/05/22(水) 20:39:30.52
>>342
「実行時に呼ばれる関数が変わって
デバッグに苦労したので仮想関数と
C++は糞」
と暴れた奴が以前いたような

344 :デフォルトの名無しさん:2013/05/22(水) 20:43:42.05
C#のようなoverride/newがないのが糞なのはまあ確かだが
C++11のoverrideも糞いし

345 :デフォルトの名無しさん:2013/05/22(水) 20:47:02.15
>>344
C#のoverrideが糞でなくて
C++のoverrideが糞な具体例を
教えてください

346 :デフォルトの名無しさん:2013/05/22(水) 20:49:15.64
>>337
発狂したわ。JAVAはC++よりクソ

347 :デフォルトの名無しさん:2013/05/22(水) 20:59:26.52
>>345
C++の派生クラスでのvirtualは必須ではないから
派生クラスにvirutalを書かなくても仮想関数になる
virtualを書いてなくても仮想関数かどうか気にしないといけないという糞仕様

C++11でもvirtualもoverrideも書かなくてもやはり仮想関数になる
あくまでoverrideが付いてるなら仮想関数でなければならないだけで、
仮想関数にoverrideを付けなくてはならないわけではない
強制されないoverrideとか糞にも程がある

348 :デフォルトの名無しさん:2013/05/22(水) 21:19:25.11
ジャバてバーチュアル強制なんか
プライベートメソッドはどうしてるんだろう
知らぬ間にオーバーライドしたら困るよ

349 :デフォルトの名無しさん:2013/05/22(水) 21:23:37.74
C#のようにoverride/new強制なら
事故が一切起こらない
後発言語なだけに研究されている

350 :デフォルトの名無しさん:2013/05/22(水) 21:34:47.63
事故ってなんだ

351 :デフォルトの名無しさん:2013/05/22(水) 21:37:20.13
原発事故の事だよ
あれもくだらない理由で発生するだろ

352 :デフォルトの名無しさん:2013/05/22(水) 21:44:27.96
仮想関数だと思わなくて同名の関数定義してしまうとか

353 :デフォルトの名無しさん:2013/05/22(水) 23:12:46.46
そこで、interfaceですよ!
C#のそれは、C++のvirtual並に面倒なことよ

354 :デフォルトの名無しさん:2013/05/23(木) 04:39:01.94
std::stringはなんで.c_str()でC文字列を返す仕様なの?
キャスト演算子がオーバーロードされてれば楽なのにって思うんだけど・・・・・・

355 :デフォルトの名無しさん:2013/05/23(木) 05:54:28.56
バカほど暗黙キャストしたがる

356 :デフォルトの名無しさん:2013/05/23(木) 06:24:37.38
そこでC#のimplicit,explicit登場

357 :デフォルトの名無しさん:2013/05/23(木) 07:16:35.91
>>354
キャストに頼ってちゃprintfに使えないからじゃない?
まあCStirngみたいにトリッキーな実装すればできるけど

358 :デフォルトの名無しさん:2013/05/23(木) 09:36:30.45
>>356
explicit はc++でも普通に使うけどな

359 :デフォルトの名無しさん:2013/05/23(木) 11:17:38.41
次はスマポはなんでget()が要るんだとか言い出しそう

360 :デフォルトの名無しさん:2013/05/23(木) 19:33:04.33
なぜコンストラクタはexplictがデフォルトでなかったのか

361 :デフォルトの名無しさん:2013/05/23(木) 19:41:05.80
vector<T> vVal;



for( auto& Val : vVal )
{
  ・・・
}

上記の場合、順方向トラバースになりますが、
逆方向トラバースはrange-based forでは書けないのでしょうか??

362 :デフォルトの名無しさん:2013/05/23(木) 19:47:32.72
なぜ>>68のコピペを
コピペ荒らしスクリプトか?

363 :デフォルトの名無しさん:2013/05/23(木) 19:50:01.35
>>361
アダプタ書けば良い

364 :KUSO KOTE:2013/05/23(木) 19:52:25.49
>>361
>>109の「begin-expr」はクラス型の場合
__range.begin()
と決まっているから、
begin()が逆のイテレーターを返す細工が必要。
つまりそのままではできない。

365 :デフォルトの名無しさん:2013/05/23(木) 19:54:38.79
wcsncpy_sについて教えてください。
今、次のようなコードがあるとします。

wchar_t * src = L"aabbcc";
wchar_t dest[3];
size_t lenToCpy = 2;
wcsncpy_s(dest, 3 * sizeof(wchar_t), src, lenToCpy);
dest[6] = L'\0';

"aa"だけコピーしたいんですけど。
使い方はこれであってますか?

なんか、wcsncpy_sでsrcの長さ(この場合6文字xsizeof(wchar_t) = 12バイト)だけdestが0xfeで埋められてから
len文字分だけコピーされているように見えます。@VS2008

なのでdestでヒープが壊れるってデバッグ終了時に言われるんですが。。
(この例ではdestはローカルだけど、実際にやってるコードだとヒープです。)

366 :デフォルトの名無しさん:2013/05/23(木) 20:05:51.99
コピペやめろクソ虫

367 :デフォルトの名無しさん:2013/05/23(木) 20:16:59.04
>>366
お前が出ていけ

368 :KUSO KOTE:2013/05/23(木) 20:25:02.08
>>365
>使い方はこれであってますか?

少なくとも「3 * sizeof(wchar_t)」は
APIの説明にあるnumberOfElements
ではないぞよ。

369 :デフォルトの名無しさん:2013/05/23(木) 20:28:27.05
using namespace std;
はできるだけ書かずにstd::cout, std::endlのように書いていったほうが良いと考えておkですか?
スタティックなインポート?に恐怖を感じます

370 :KUSO KOTE:2013/05/23(木) 20:33:18.05
wchar_t dest[3];
dest[6] = L'\0';
なんだこのUNKOコードは…

371 :デフォルトの名無しさん:2013/05/23(木) 20:36:22.81
>>369
少なくともヘッダには書くなよ?
スコープに気をつければ関数内で使うのはアリかと

372 :デフォルトの名無しさん:2013/05/23(木) 20:37:20.32
>なんだこのUNKO
おまえが言うな

373 :デフォルトの名無しさん:2013/05/23(木) 20:38:24.60
>ヘッダには書くなよ
ヘッダって何ですか?

374 :デフォルトの名無しさん:2013/05/23(木) 20:38:56.15
すみません早速質問です。

class Test {

public: Test getThis() { return this; }

};

のように自身を帰したい場合C++ではどのようにかくのですか?

375 :デフォルトの名無しさん:2013/05/23(木) 20:40:01.02
>>374
Test &getThis() { return *this; }

376 :デフォルトの名無しさん:2013/05/23(木) 20:40:54.49
*thisを返すんじゃ
むぎのように*thisを返すんじゃゲンよ

377 :デフォルトの名無しさん:2013/05/23(木) 20:43:22.29
コピペやめろクソ虫

378 :デフォルトの名無しさん:2013/05/23(木) 20:43:33.28
仮想関数を持ったスーパークラスのポインタに派生クラスを入れて、
仮想関数を呼び出したいんだけどどうすればいいでしょうか?

class SuperC{
virtual bool func()=0;
};

class SubC{
virtual bool func(){ 何らかの処理 }
};

int main(){
SuperC* super=new SubC();
return 1;
}

インスタンス化する予定はないのにSuperCのポインタは宣言できませんって言われる

379 :デフォルトの名無しさん:2013/05/23(木) 20:50:39.34
http://toro.2ch.net/test/read.cgi/tech/1361435828/
http://toro.2ch.net/test/read.cgi/tech/1345823164/
また過去ログコピペ荒らしかよ
答えが欲しいなら転載元のスレ見れば書いてあると思うぞ

380 :デフォルトの名無しさん:2013/05/23(木) 20:52:45.05
>378
SuperCは純粋仮想関数を持ってるから抽象クラス
だからこれを継承してそれをポインタとして使わないとエラーになるよ

381 :デフォルトの名無しさん:2013/05/23(木) 20:52:55.53
>>378
public:ですよ

382 :デフォルトの名無しさん:2013/05/23(木) 20:53:32.55
>>380
ありがとうございます

383 :KUSO KOTE:2013/05/23(木) 20:54:56.44
>>373
> >ヘッダには書くなよ
>ヘッダって何ですか?
恐らく「いわゆるヘッダーファイル」のこと。
C++のheaderとは関係ない。

384 :デフォルトの名無しさん:2013/05/23(木) 20:57:21.89
C++だけの話じゃないんでここで聞いていいかわからないんですけど
メンバ関数ってなんでわざわざ
struct Obj {
void Method(void);
};
Obj obj;
obj.Method();
っていうふうにドットつけて書くんですかね?
struct Obj {
void Method(Obj & obj);
};
Obj obj;
Method(obj);
みたいな仕様ではダメな理由でもあったんでしょうか?

385 :デフォルトの名無しさん:2013/05/23(木) 20:58:47.44
>>384
オブジェクト指向言語の記法のはやりだったから

386 :デフォルトの名無しさん:2013/05/23(木) 21:03:07.31
>>378
あせるな
http://codepad.org/gmOwFe54

387 :デフォルトの名無しさん:2013/05/23(木) 21:05:26.48
早速のご回答ありがとうございます

388 :デフォルトの名無しさん:2013/05/23(木) 21:07:40.05
>>384
引数が複数ある場合を考えてみろ

389 :KUSO KOTE:2013/05/23(木) 21:11:42.25
>>386
おぬしこそ焦るでない
http://ideone.com/AZarFm

390 :デフォルトの名無しさん:2013/05/23(木) 21:11:48.14
コピペに答えんな死ね

391 :デフォルトの名無しさん:2013/05/23(木) 21:17:53.22
shared_ptr<IHoge> make_hoge(int id) {
switch(id) {
case HOGE0: return shared_ptr<IHoge>(new Hoge0);
case 〜
}
}

上のようにポリモーフィックな返り値を返す関数があるんだけどnewのコストを削りたい
アロケーターを使う他になにかいい手はないですか?
標準で可変長のスタック領域を扱えたりすると便利なんですが…

392 :デフォルトの名無しさん:2013/05/23(木) 21:20:14.97
>>391
>ポリモーフィックな返り値を返す関数があるんだけどnewのコストを削りたい

むりです

393 :デフォルトの名無しさん:2013/05/23(木) 21:24:09.35
質問
OpenGLだけど
const char* pVer = glGetString(GL_VERSION);
printf("version is %s¥n",pVer);
これだとOKで
printf("version is %s¥n",glGetString(GL_VERSION));
これだとダメだったんだが、もしかして返り値の寿命が関係してるの?
だとすると寿命はどう捉えるべき?

394 :デフォルトの名無しさん:2013/05/23(木) 21:28:05.33
>>393
>返り値の寿命が関係してるの?
いいえ

>だとすると寿命はどう捉えるべき
リファレンスに static 
とかいてありませんか?

395 :デフォルトの名無しさん:2013/05/23(木) 21:28:09.62
マルチスレッド関連の問題ではなくて

396 :デフォルトの名無しさん:2013/05/23(木) 21:36:37.72
> glGetString(GL_VERSION)
何て糞なシグネチャーなんだ
設計した奴はJavaに転職するか死んだ方がいい

397 :デフォルトの名無しさん:2013/05/23(木) 21:40:33.73
むしろJavaっぽい

398 :デフォルトの名無しさん:2013/05/23(木) 23:41:32.61
STLのmapで、Keyによる検索ではなく、並んでいる順のインデックスで値を取ってきたいのですが、
現状では、begin()で先頭イテレータを取得し、取りたいインデックス回だけ++しています。
もっと一発で取れるようなエレガントな書き方はないでしょうか?

399 :デフォルトの名無しさん:2013/05/23(木) 23:43:45.47
std::advance(i,10);

400 :398:2013/05/23(木) 23:47:44.21
>>399
じつにエレガント!!
あざーす!!!!

401 :デフォルトの名無しさん:2013/05/24(金) 01:33:18.27
>>373
C++の前にCの勉強だな。

402 :デフォルトの名無しさん:2013/05/24(金) 03:07:42.11
プログラムで
hoge-util.c
というファイルがどんどん巨大化していくのだけど
どんな名前つけてファイル分割すればいいですか?

hoge-util-base.c
hoge-util.c

とか?

403 :デフォルトの名無しさん:2013/05/24(金) 03:33:14.15
>>389
pure virtual destructor か、thx

404 :KUSO KOTE:2013/05/24(金) 05:23:02.94
>>401
そういう話だったの?
「STLって何」的な規格上の突っ込みと理解したけど。

405 :デフォルトの名無しさん:2013/05/24(金) 05:53:58.34
>>403
super_unko d-tor
スーパーうんこ、出たーブリブリ

406 :デフォルトの名無しさん:2013/05/24(金) 06:09:48.00
>>402
原則1クラス1ファイルが良いと思います。
クラス名をファイル名にするのが良いかと(^^)

あとutilityという名前のものは、
適切な概念または機能分類に
設計を見直した方がよいと思います。

407 :デフォルトの名無しさん:2013/05/24(金) 07:47:53.10
>>404
だとしたらCの前に会話のお勉強だなって返すだけじゃね?
モヒカン族をモヒカンするみたいであれだけど、バカの一つ覚えにはこれで良い

408 :デフォルトの名無しさん:2013/05/24(金) 10:35:08.68
数字を入力するプログラムで下のように書いたとき
「-1」と入力すると”数が正しくありません〜”とでて次の”数を入力してください->”に戻るけど
「a」と入力すると”数が正しく〜”と”数を入力〜”がずっとでつづけます
なぜなんでしょうか?

while(1) {
cout << "数を入力してください->";
cin >> num;
state =cin.rdstate();
if (num <= 0 || state != std::ios_base::goodbit){
cout << "数が正しくありません。最初に戻ります。\n" << endl;
continue;
}


}

409 :デフォルトの名無しさん:2013/05/24(金) 10:41:22.44
>>408
ストリームにはエラーフラグというものがあってな、一度入力(出力)エラーになると
clear() するまでその後の操作は全部即エラーになるんだよ。

410 :デフォルトの名無しさん:2013/05/24(金) 11:24:59.54
http://www.logsoku.com/r/tech/1329512856/320-

411 :デフォルトの名無しさん:2013/05/24(金) 12:13:40.05
エラー復帰してないから
エラーを clear() してから a を読み捨てないと、
永遠に先まで読み進められない

412 :デフォルトの名無しさん:2013/05/24(金) 12:17:46.96
>>408(>>410)みたいに断続的にコピペ投下してる人は何がしたいの?

413 :デフォルトの名無しさん:2013/05/24(金) 12:58:09.20
>>412
AA荒らしだと荒らし報告されるので、一見質問を装って過去の質問をコピペする
荒らしに切り替えたと思われる

削除人も指摘してるけど、荒らしにレス付けちゃうと、削除依頼を出してもそこは
削除されない

まず過去ログを検索して、そのURLを貼って行くと削除依頼しやすい

414 :デフォルトの名無しさん:2013/05/24(金) 14:36:35.44
http://toro.2ch.net/test/read.cgi/tech/1368740939/829
http://toro.2ch.net/test/read.cgi/tech/1368740939/831

415 :デフォルトの名無しさん:2013/05/24(金) 15:55:23.40
知らん顔して回答してあげればいいんよ
そうやって雰囲気を保ちつつ真の質問者がめざめるその日を待つべし

416 :デフォルトの名無しさん:2013/05/24(金) 15:59:20.73
>>415
大人ですね感心しました

417 :デフォルトの名無しさん:2013/05/24(金) 16:05:12.00
継承元のoperator=を使用したい時は、継承したoperator=の中でキャストして呼ぶしか無いでしょうか?
CBaseAを継承し、CSpecとします。

CSpec CSpec::operator=(const CSpec &obj ){
CBaseA *p1 = dynamic_cast <CBaseA *> ( this );
CBaseA *p2 = dynamic_cast <const CBaseA *> ( &obj );
if( (p1 != nullptr) && (p2 != nullptr) ) *p1 = *p2;
}

今はこのようにしています。

418 :デフォルトの名無しさん:2013/05/24(金) 16:08:08.82
using

419 :デフォルトの名無しさん:2013/05/24(金) 16:57:24.58
http://mimizun.com/log/2ch/tech/1329512856/336-

420 :デフォルトの名無しさん:2013/05/24(金) 17:28:20.42
>>417
キャスト使うならこうだろ
static_cast<CBaseA &>(*this) = obj;

421 :デフォルトの名無しさん:2013/05/25(土) 09:42:24.31
        |  /              ノ}        /
         |/              ̄ /\     \/
         |                        〉
         } ---┬ ァ'⌒ヽ ̄ ̄ ̄ ̄ ̄`   、  ∨
         i::::::::::::{ / __≧x │ |     >x {
  .        /⌒V ≪ ̄  f}j\ミト} ノ j xf斗≦^}7
  .      { i⌒ヽ    `  __/   ィf´ fj ̄\ /
          | |/^{       ̄       | \__,ノ/⌒!
         ∨ ({ }            n_ノ    ̄ /⌒リ
          \\  ` ̄} ̄l ̄l ̄l ̄`ヽ     ハ} j/
           ー|  ∨ ̄ ̄ ̄ ̄ ` く У ///
  .           |∧   V⌒ヽ._______j/ /ー'
  .           |  iヽ  ∨|  {      /  ′
  .          |  | ‘, Vー‐ーー-∧/ /
  .         |  |   ,  \____   / ィ
          __|  |   ‘,     ̄//
        _| ̄ ̄\    ー‐---く /\
    ___/ / |     \   / / __{__)、_
     /  / `      |  / ̄ ̄   / |  }
  .  /  /     \_|  /       __|  |\__
    /┌┴─   ̄ ̄ ̄ ̄\ ̄ ̄     }   \   \
  .   | (___)         \__              \

422 :デフォルトの名無しさん:2013/05/25(土) 16:51:38.56
コンストラクタ、デストラクタって
処理内でなにもしなくても書くべきなの?
何もしない場合、出来れば書きたくないんだけど

423 :デフォルトの名無しさん:2013/05/25(土) 16:55:36.07
>>422
そう思うんなら書かなきゃいいだろ。

「書くべき」という理由が何かあってその妥当性がわからないということなら、
その理由を挙げて相談してくれ。

424 :デフォルトの名無しさん:2013/05/25(土) 16:56:13.82
>>422
書かなくてもコンパイル時に自動で空のコンストラクタ&デストラクタが生成されて、
実行時にもそれらが自動で呼ばれると聞いたことがある。
趣味グラマの俺は必要ないときには書かない方針にしているが今まで問題が発生したことはない。

425 :422:2013/05/25(土) 17:14:28.61
>>424
自動で書かれるのは知ってる
仕事で書く場合、書いた方が良いのか聞きたい

426 :デフォルトの名無しさん:2013/05/25(土) 17:25:20.08
ある程度規模が大きくなったら書く意味がある

「あれ? このクラスはコンストラクタ持ってるの? 持ってないの?」
という無駄を省ける
つまりインデックスがあれば全検索の無駄を省けるのだ(キリッ

427 :デフォルトの名無しさん:2013/05/25(土) 17:26:00.52
書く必要は全くない。

428 :デフォルトの名無しさん:2013/05/25(土) 17:30:08.06
>インデックスがあれば全検索の無駄を省けるのだ(キリッ

ソースコードがインデックスってのがウンコだな。

429 :デフォルトの名無しさん:2013/05/25(土) 18:09:08.54
        |  /              ノ}        /
         |/              ̄ /\     \/
         |                        〉
         } ---┬ ァ'⌒ヽ ̄ ̄ ̄ ̄ ̄`   、  ∨
         i::::::::::::{ / __≧x │ |     >x {
  .        /⌒V ≪ ̄  f}j\ミト} ノ j xf斗≦^}7
  .      { i⌒ヽ    `  __/   ィf´ fj ̄\ /
          | |/^{       ̄       | \__,ノ/⌒!
         ∨ ({ }            n_ノ    ̄ /⌒リ >>428は馬鹿
          \\  ` ̄} ̄l ̄l ̄l ̄`ヽ     ハ} j/
           ー|  ∨ ̄ ̄ ̄ ̄ ` く У ///
  .           |∧   V⌒ヽ._______j/ /ー'
  .           |  iヽ  ∨|  {      /  ′
  .          |  | ‘, Vー‐ーー-∧/ /
  .         |  |   ,  \____   / ィ
          __|  |   ‘,     ̄//
        _| ̄ ̄\    ー‐---く /\
    ___/ / |     \   / / __{__)、_
     /  / `      |  / ̄ ̄   / |  }
  .  /  /     \_|  /       __|  |\__
    /┌┴─   ̄ ̄ ̄ ̄\ ̄ ̄     }   \   \
  .   | (___)         \__              \

430 :デフォルトの名無しさん:2013/05/25(土) 18:22:04.69
ウンコなのはインデックスじゃなくてマリア先生だろう。

431 :デフォルトの名無しさん:2013/05/25(土) 18:26:42.23
>>430
アニヲタはカエレ

432 :デフォルトの名無しさん:2013/05/25(土) 18:43:28.26
>>431=中年おっさん

433 :デフォルトの名無しさん:2013/05/25(土) 18:46:47.89
>>426
ヘッダ1つ検索で引っかからなければデフォコンだけってことだから
別に全検索なんて

434 :デフォルトの名無しさん:2013/05/25(土) 19:35:42.69
なんだアニメネタか
こういう関係ないところでいきなりアニメネタ出すからアニヲタはキモがられるんだろ
普通の大人はそういう子供の観るものに慣れてないんだからやめろよ

435 :デフォルトの名無しさん:2013/05/25(土) 19:48:49.84
>>432
井口は中年受け悪いんじゃ値?

436 :デフォルトの名無しさん:2013/05/25(土) 19:53:02.10
>>422
なにかする必要があったけど書き忘れたというのではなく
最初からなにもしないということをソースコードレベルで明らかにしたいなら書いとけ

437 :デフォルトの名無しさん:2013/05/25(土) 20:25:59.86
>>436=自称ベテラン気取り

438 :デフォルトの名無しさん:2013/05/25(土) 20:42:22.87
明示すべき事情があるなら明示しろってだけだし、ベテランじゃなくてもそういうだろ
デストラクタにvirtual付ける付けないってのはそれとは別でやっとくべきだが

439 :デフォルトの名無しさん:2013/05/25(土) 20:49:29.60
>>438=常識人気取り

440 :デフォルトの名無しさん:2013/05/25(土) 21:57:36.02
ソースに書く、仕様書も書く:普通の人
ソースは省略、仕様書に暗黙の定義を書かない:ゆとり
ソースは省略、仕様書は暗黙の定義を書く:アスペ
ソースに書く、仕様書書かない:普通の低脳
ソースは省略(暗黙)、仕様書何ソレ:困ったプログラマー

441 :デフォルトの名無しさん:2013/05/25(土) 21:59:37.25
>>440
つまりお前は
世の中の人間は普通かそれより劣る人間しか居ない
と考えてる

442 :デフォルトの名無しさん:2013/05/25(土) 22:04:18.69
>>441=勘違い馬鹿

443 :デフォルトの名無しさん:2013/05/25(土) 22:43:03.52
>>442
全てのパターンを網羅して
その中で最も評価が高いのは「普通」になってるよな?

444 :デフォルトの名無しさん:2013/05/25(土) 22:47:11.66
>>443=日本語不自由

445 :デフォルトの名無しさん:2013/05/25(土) 23:01:50.62
>>444
意味が分からない

446 :デフォルトの名無しさん:2013/05/25(土) 23:03:05.18
>>440
つまり世界はみんな俺より低能だと言いたいんだろ?ww
分かる分かる
お前も大変だよな

447 :デフォルトの名無しさん:2013/05/25(土) 23:24:14.31
ソースも仕様書も書かない:俺

448 :デフォルトの名無しさん:2013/05/25(土) 23:30:24.32
このスレの住人の分類
・モヒカンアスペ
 規格を愛し「stlって何ですか?」「そのヘッダとやらはC++のheaderと何の関係が?」というどうでもよい突っ込みを入れる上級者。
ISO/IEC 14882が好きでたまらない
・嵐
 意味のないAAや過去の質問を貼り付ける初級者。
過去スレを保存していることから、C++が好きでたまらない
・糞コテ
 匿名の2chで自己主張が激しく、BASICが最高と信じるなど宗教色が強い中級者。
ISO/IEC 14882が好きでたまらない
・江○添取り巻き
 ある個人のブログのネタを投下することに喜びを覚える中級者。
ISO/IEC 14882が好きでたまらない
・通りすがりのゆとり
 質問をするが「自分で調べる」「自分の環境で試してみる」「問題を再現する最低限のコードを示す」という考えに乏しい初級者。
C++がカッコ良いと考え、C++が好きでたまらない
・マッチポンパー
 規格上どうなのかを知るために、通りすがりのゆとりのふりをしつつ質問を投下するキチンな中級者。
ISO/IEC 14882が好きでたまらない(読んだことはない)
・クレーマー
 長年の経験に基づき他人に重箱の角をつつく指摘をすることに快感を覚える上級者。
主にC++よりも日本語の指摘に執着する。
ISO/IEC 14882が好きでたまらない。

みんなC++が好きでたまらない

449 :デフォルトの名無しさん:2013/05/25(土) 23:33:48.79
>>448
なにこれ。コピペ?

450 :デフォルトの名無しさん:2013/05/25(土) 23:36:35.03
>>449
アニヲタのコピペだろう
忍法のレベル高けーな(ダメ人間)

451 :デフォルトの名無しさん:2013/05/25(土) 23:55:00.75
>>447=上級SE

452 :デフォルトの名無しさん:2013/05/25(土) 23:59:25.25
>>448
最後の一文は涙したぞ

453 :デフォルトの名無しさん:2013/05/26(日) 00:05:54.88
・糞コテ
 匿名の2chで自己主張が激しく、
ideoneを開いてこのスレをF5連打する。
ISO/IEC 14882:2011が好きでたまらない。

最初と最後が同じだろ。

454 :デフォルトの名無しさん:2013/05/26(日) 00:10:12.19
ちょっとしたGUIツールを作るのにC#なるものが便利だというので触ってみたが、吐き気がした。
あんなの書くぐらいならリソースエディタとC++でWinAPI叩いてるほうがよっぽどええわ。

455 :デフォルトの名無しさん:2013/05/26(日) 00:12:04.10
>>454
GUIツールをVisual C++で作るのは
他人の迷惑です
C#にしといてください

456 :デフォルトの名無しさん:2013/05/26(日) 00:13:06.77
>>455
はC#に逃げたチキン

457 :デフォルトの名無しさん:2013/05/26(日) 00:17:48.71
>>455
今でこそ.NETのフレームワークは大半のユーザPCに入ってるけど、そういうの要求されるのも迷惑だからVC安定だろ
MSVCRTとかは最悪添付すりゃいいし、何が迷惑なのかさっぱり分からん

C#というか.NETは文化がちょっと違うから、受け入れられない奴が居るのは仕方ない

458 :デフォルトの名無しさん:2013/05/26(日) 00:20:38.99
ツールでC++がC#に勝てるとこなんて
微塵も無いと思うけどな
Windows限定なら、携帯でメール使わずに
直筆のハガキで文通するレベル

459 :デフォルトの名無しさん:2013/05/26(日) 00:31:56.98
>>458は老害

460 :デフォルトの名無しさん:2013/05/26(日) 00:35:01.30
>>454
使い捨てのツールなら処理速度は重要でないし
メモリ破壊や不正メモリアクセスのない言語は
メリットあると思うけど。
C++スレで他言語の悪口を遠吠えするのは構わないけど
どの辺がC++と比べて悪いかぐらい書けよカス。

461 :デフォルトの名無しさん:2013/05/26(日) 00:47:22.67
普段C++で仕事してるから、ツール作るときもC++に
C#のフロントエンドって組み合わせで作ってるな

462 :デフォルトの名無しさん:2013/05/26(日) 01:22:10.90
>>458
.NET入ってなくても動くのは利点だろ。
初回起動時のアセンブリ生成動作が不要なのも一応利点だし、
生成されたキャッシュが残る気持ち悪さが存在しないのも利点。
あと、逆汗の品質がC++の方が低いからイジられにくさが誤差レベルで上昇する。
実行速度は普通に書く範囲では最適化かかるから大差ないだろうし
640の言う利点もC++には無いから、双方それなりのメリットとデメリットが有る。

ユーザ側の迷惑で見るなら….NETのランタイム要求は回避不能な迷惑。
バグによるトラブルはC++でも実装次第だし、実装次第では.NETでも迷惑。

>>460
文化が肌に合わないって言ってるだけにしか見えないし、聞き流せば良いだろ。
むしろ、どの辺がC#と比べて悪いかも書かない455や458にも突っ込め。

463 :デフォルトの名無しさん:2013/05/26(日) 01:37:05.63
最新じゃないけど、vista以降なら標準で入ってるな

464 :デフォルトの名無しさん:2013/05/26(日) 02:14:12.80
>>422
たしかcppの新規格だと空のデフォコン書かないのは危険と聞いた
詳しくはしらないが

465 :デフォルトの名無しさん:2013/05/26(日) 04:47:34.35
>>464
>新規格だと空のデフォコン書かないのは危険と聞いた
いえ、そんなことないです

466 :デフォルトの名無しさん:2013/05/26(日) 08:53:45.62
>>462
C++ でもランタイムは必要だぞ

467 :デフォルトの名無しさん:2013/05/26(日) 09:04:35.47
ランタイムってなんですか?
実行時?

468 :デフォルトの名無しさん:2013/05/26(日) 09:14:55.68
>>467
実行時ライブラリを低脳が略した言葉。
だったはずだけど.NETの場合その意味を逸脱してるね。
だからもうDLL=ランタイム()でいい。
中身よりファイル形式。君の周りにもXMLガーとか
CSVガーとかよくいるだろ。OSもランタイム

469 :デフォルトの名無しさん:2013/05/26(日) 09:27:04.48
>>466
別途ダウンロードする必要があるし
インスコの手間とがかかるだろ

470 :デフォルトの名無しさん:2013/05/26(日) 09:33:48.05
このスレの住人の分類
・モヒカンアスペ
 長年の経験に基づき他人に重箱の角をつつく指摘をすることに快感を覚える上級者。
主にC++よりも日本語の指摘に執着する。
ISO/IEC 14882が好きでたまらない

・嵐(あらし)
 意味のないAAや過去の質問を貼り付ける初級者。
過去スレを保存していることから、C++が好きでたまらない

・糞コテ
 匿名の2chで自己主張が激しく、
ideoneを開いてこのスレをF5連打する。
ISO/IEC 14882とKUSOが好きでたまらない。

・江○添取り巻き
 ある個人のブログのネタを投下することに喜びを覚える中級者。
ISO/IEC 14882が好きでたまらない

・通りすがりのゆとり
 質問をするが「自分で調べる」「自分の環境で試してみる」「問題を再現する最低限のコードを示す」という考えに乏しい初級者。
C++がカッコ良いと考え、C++が好きでたまらない

みんなC++が好きでたまらない

471 :デフォルトの名無しさん:2013/05/26(日) 10:35:27.03
C++=キチガイ

472 :デフォルトの名無しさん:2013/05/26(日) 11:26:13.29
最高の褒め言葉だケ。

473 :デフォルトの名無しさん:2013/05/26(日) 11:27:07.80
>>472=薄毛

474 :472:2013/05/26(日) 11:27:47.44
>>473
剛毛で困ってるんだ・・・。

475 :デフォルトの名無しさん:2013/05/26(日) 11:28:26.44
そういや、外人プログラマは毛むくじゃらな印象が強いなw

476 :デフォルトの名無しさん:2013/05/26(日) 11:30:12.12
C++プログラマ=メモリ支配キチガイ

477 :デフォルトの名無しさん:2013/05/26(日) 11:34:16.46
C++使いは「やりたいことを実現するために
コンピューターとプログラミング言語が
存在する」
ということを忘れて
メモリ操作と天ぷらオナニーばかりしているから
どうしようもない

478 :デフォルトの名無しさん:2013/05/26(日) 12:26:54.93
ぶっとい天ぷらんぎもっぢいい〜

479 :デフォルトの名無しさん:2013/05/26(日) 12:37:08.08
ランタイムという単語だけではラインタイムライブラリと文字通りの
ランタイム(実行時)の2つを文脈次第で読み替えるケースがある。
個人的にはライブラリは明確に「ランタイムライブラリ」と言うように
している。単にライブラリと言うことのほうが多い。
コンパイルタイムとランタイムの意味の違いは多くの人がわかって
いるようでわかっていないので一度は考えてみるべきこと。

480 :デフォルトの名無しさん:2013/05/26(日) 13:11:52.75
プログラム始めたばかりのとき、ランタイムライブラリのことを単にランタイムと呼ばれることにとても困惑した。

481 :デフォルトの名無しさん:2013/05/26(日) 14:29:09.39
>>474
stroustrupからのお願い
もしこれをご覧の皆様が私に
1本ずつhairを植毛していただけるなら…
http://www.stroustrup.com/

482 :デフォルトの名無しさん:2013/05/26(日) 16:41:31.57
>>476
意味わからん
C++よりもC(もしくはその範囲内)で書く方がはるかにメモリを意識せねばならない
C++専門プログラマなど、メモリ管理に関しては大概RAII手段に丸投げの素人

483 :デフォルトの名無しさん:2013/05/26(日) 18:46:34.08
C++=MSシンパ

484 :422:2013/05/26(日) 18:47:24.77
結局、書いた方がいいの?

485 :デフォルトの名無しさん:2013/05/26(日) 19:18:30.87
ゆとり言語のC++と漢の言語Cは全然違う言語
C++はゆとり化しすぎでキチでゆとり・へたれな奴用になった

486 :デフォルトの名無しさん:2013/05/26(日) 19:49:40.45
C++はゆとりではないだろう。
他の言語が得意とする領域をCの古いやり方で
言語拡張して誰特な感じではあるけど、
ヘタレでもゆとりでもない。

>>484
書くことで不要な争いを避けることができるから
暇なら書いておくのが吉。

487 :デフォルトの名無しさん:2013/05/26(日) 19:52:43.65
なにもしないコンストラクタってなんだろ
メンバ変数ある場合でも何もしないの?

488 :デフォルトの名無しさん:2013/05/26(日) 19:55:31.41
>>487
親クラスと自分のメンバーについて
デフォルトコンストラクターを持つものを初期化します
他(intなど)は何もしません

489 :デフォルトの名無しさん:2013/05/26(日) 20:02:49.25
>>488
嘘をついてはいけない
intなどのPOD型も0初期化される場合とされない場合がある

A a; ← 0初期化されない
A(); ← 0初期化される

A* p;
p = new A; ← 0初期化されない
p = new A(); ← 0初期化される

490 :デフォルトの名無しさん:2013/05/26(日) 20:04:31.19
>>488
>デフォルトコンストラクターを持つもの
の明示的な初期化を記述してかつ
>他(intなど)は何もしません
を明示するためにコンストラクタは書いてちょーだい

491 :デフォルトの名無しさん:2013/05/26(日) 20:09:07.53
>>489みたいな中途半端な知識がスレを荒らしてる

492 :デフォルトの名無しさん:2013/05/26(日) 20:09:56.75
とPODも初期化されることを知らない488でした

493 :デフォルトの名無しさん:2013/05/26(日) 20:10:31.95
struct A{
int i;
A(){};
};

空コンストラクタのせいでPODじゃなくなるだろ
無条件に書くとか余計なことするな

494 :デフォルトの名無しさん:2013/05/26(日) 20:12:07.54
>>493
何言ってんの?
テンポラリオブジェクトの作成だぞ

495 :デフォルトの名無しさん:2013/05/26(日) 20:13:21.92
デフォルトコンストラクタだけ持つのはPOD型だが何ほざいてんだ

496 :デフォルトの名無しさん:2013/05/26(日) 20:14:23.70
ほらね
知識を自慢したいだけの自己顕示欲馬鹿が参入

497 :デフォルトの名無しさん:2013/05/26(日) 20:15:24.27
なんであなた達はプラプラを使うの?
罰ゲームなんですか?

498 :デフォルトの名無しさん:2013/05/26(日) 20:15:41.38
デフォルトのデフォルトコンストラクタだけ持つのはPOD型だが
自分で定義したデフォルトコンストラクタを持つのはPOD型ではない

499 :デフォルトの名無しさん:2013/05/26(日) 20:17:18.12
またseikyouが暴れてんの?

500 :デフォルトの名無しさん:2013/05/26(日) 20:21:30.11
>>499
↑荒らしにかまってスレを荒らす馬鹿登場

501 :488:2013/05/26(日) 20:44:40.36
>>489
知らんかったです
value-initializeって仕様ですかね?

502 :デフォルトの名無しさん:2013/05/26(日) 21:13:41.32
つまりこういうことですね

何が何でもキレイで明確にしたい派
struct A{
int i, j;
A() : i(), j() {}
};

ゼロ初期化しなくても良いけどコンストラクターだけ明確にしたい派
struct A{
int i, j;//不定
A() {}
};

POD最高! ()でゼロに初期化する自由があるぜ派
struct A{
int i, j;
};
A a1; new(&a1) A();
A a2=A();
A a3;//不定

503 :デフォルトの名無しさん:2013/05/26(日) 21:15:46.60
どうでもいい派

504 :デフォルトの名無しさん:2013/05/26(日) 21:18:10.73
A a1; new(&a1) A();
はこの場合はデストラクタが空だからいいけど、
意味のあるデストラクタが存在したら危険だかんね

505 :デフォルトの名無しさん:2013/05/26(日) 21:19:17.81
まだ実用性のない議論をしているのでありました

506 :デフォルトの名無しさん:2013/05/26(日) 21:21:35.65
>>504
2回もコンストラクトしてる時点でネタだろ
POD限定でも引くわ

507 :デフォルトの名無しさん:2013/05/26(日) 21:26:08.61
全く初期化されないという意味では
最初のはコンストラクトされているとは言えないな

508 :デフォルトの名無しさん:2013/05/26(日) 21:40:12.91
POD型はtrivially destructibleだから別にデストラクタ呼ばなくても再構築していい

509 :デフォルトの名無しさん:2013/05/26(日) 21:46:07.43
>>507
default-initialize(8.5p7)が完了して
オブジェクトが生成されてるというのに?

510 :デフォルトの名無しさん:2013/05/26(日) 21:59:50.94
>>485
C++でゆとりなのは、こんなコードCでいーじゃんってのしか書けない奴でしょ?
使いこなせばコードの見通しが非常に良くなる。メモリ管理もC++はCと大差ない。

511 :デフォルトの名無しさん:2013/05/26(日) 21:59:52.64
そこで A a4{}; の登場です。
ただしVisual C++では使えない。

512 :デフォルトの名無しさん:2013/05/26(日) 22:09:07.32
>>509
初期化に1バイトのマシン語も生成されないという意味だ

513 :デフォルトの名無しさん:2013/05/26(日) 22:18:15.43
>>512
↓ 初期化でなく破棄の例ですが
  途中の3行はマシン語生成されないので
  気にならない人なんですね
struct A {double v;} a1;
a1.~A();
a1.~A();
a1.~A();
new(&a1) A();

514 :デフォルトの名無しさん:2013/05/26(日) 22:23:55.96
イエスマム。
マシン語生成されないでので、
複数回デストラクトではありません。

515 :デフォルトの名無しさん:2013/05/26(日) 23:33:52.23
キモいけど別に合法だよね

516 :デフォルトの名無しさん:2013/05/26(日) 23:39:17.76
割とマジで俺の知らないことばかりw
俺みたいのがプロジェクトに一人いるだけできっと酷い事故に繋がるんだろうな。
まあ、お前らは俺がいないことに感謝するんだな!感謝が足りないと参加しちゃうぞ!

517 :デフォルトの名無しさん:2013/05/26(日) 23:52:55.21
>>513みたいに
きもいコード書く奴がみんなの迷惑いだから

518 :デフォルトの名無しさん:2013/05/26(日) 23:54:46.35
>>510
>メモリ管理もC++はCと大差ない。
ちょっC流のメモリ管理とはスタック上やデータセクションに固定長のデータ領域をとって
溢れないように設計しとくというのがメインなのに対して、
C++流のはヒープ上に動的にとって、データサイズに合わせて伸縮させるとかのがメインなので
差がありまくりなのではありませんか

あと個人的には、C++のどこでも新たに自動変数を宣言できるというのは
当初は理にかなっており便利だと思ったが、
ソースとスタックフレーム内の配置との対応が失われがちで、
いざローレベルなデバッグを開始したときに、
スタックのダンプから変数を大変追い難くしており悪だと思えるようになった

519 :デフォルトの名無しさん:2013/05/26(日) 23:59:38.21
ローレベルプログラミングにはやっぱりメモリとアセンブラが透けて見えるCかアセンブラでないと厳しい
今後ストラウスとラップの吹く笛に訳もわからず踊らされる人間が増えすぎて
OSのカーネルがC++で書かれるようになったら漏れは隠居する

520 :デフォルトの名無しさん:2013/05/27(月) 00:03:00.05
この調子じゃC11の普及なんて無理だろうなあ

521 :デフォルトの名無しさん:2013/05/27(月) 00:03:44.68
C++だって透けてみえるよ
抽象化はされてるけど大して変わらん
むしろCよりも内部がどう動いているのか把握する事が大事なように思う

VM言語(Java、C#等)はさすがにアレレ?と思う事が多いけど便利は便利
しかしこれでOSを書かれたらさすがに遠慮する

522 :デフォルトの名無しさん:2013/05/27(月) 00:11:07.68
>>516がせっかく頑張って何か書いてるんだからもうちょっと構ってやれよ
かわいそうだろ

523 :デフォルトの名無しさん:2013/05/27(月) 00:14:22.52
>>517
書けるからって書かないからw

524 :デフォルトの名無しさん:2013/05/27(月) 00:17:59.58
java,C#はドカタ用言語
でも、日本でプログラムやっている奴ってほとんど全てドカタなのに
エンジニア用言語のC/C++を使うってどうかしている。
ドカタはドカタ用言語使ったほうが良いのに

お前らはC/C++でどのOSの開発やっているの?

525 :デフォルトの名無しさん:2013/05/27(月) 00:50:10.74
FreeBSD系列になんのかなぁ、カスタムされてっから詳しくはシラネ

526 :デフォルトの名無しさん:2013/05/27(月) 00:57:31.98
>>>524
ドカタって言うか主婦のオバチャンがアルバイトでプログラムしてるもんなーJavaは

527 :デフォルトの名無しさん:2013/05/27(月) 01:11:48.42
C++プログラマーはF1ドライバー。
Javaは大衆車。

528 :デフォルトの名無しさん:2013/05/27(月) 01:11:54.08
>FreeBSD系列になんのかなぁ、カスタムされてっから詳しくはシラネ
なんかドカタしてますって感じ

529 :デフォルトの名無しさん:2013/05/27(月) 01:50:00.38
>>466
スタティックリンク版使えば再配布可能ライブラリには依存しなくできるし、
そもそも再配布可能ライブラリは同じフォルダにDLLぶち込んどけばインストールしなくてもだいたいなんとかなる

530 :デフォルトの名無しさん:2013/05/27(月) 01:53:38.13
>>518
>ソースとスタックフレーム内の配置との対応が失われがちで、
最適化掛かってりゃ一緒くたな気が…

531 :デフォルトの名無しさん:2013/05/27(月) 06:15:03.30
>>529
スタティックリンクされようがなんだろうが、ランタイムライブラリはランタイムライブラリじゃねえ?
ランタイムライブラリとは、ある言語をフルセットで使えるようにするために必須のライブラリで、
かつ、その言語自身では書くことが困難な低水準機能を実装してあるライブラリのことを指す、
いや個人的には疑問を感じないではないが、世間一般の慣習的に、、
少なくともスタティックリンクだからランタイムライブラリではない、という議論はあまり聞かない希ガス

532 :デフォルトの名無しさん:2013/05/27(月) 06:24:26.99
>>531
Yes

533 :デフォルトの名無しさん:2013/05/27(月) 06:29:09.26
>>531 キチガイ

534 :デフォルトの名無しさん:2013/05/27(月) 06:36:40.07
>>531
スタティックリンクでもラインタイムはランタイムってのは当然の話だわな。

話の出発点な462はC#他.NETだとランタイム(と言うより.Net Framework)のインストールが必要だが
C++等はDLLを同梱するなりスタティックリンクしておくことでインストール不要に出来る(利点となる)って話だろ。
スタティックリンクだろうがランタイムはランタイムだが、それの導入をユーザに要求されるかどうかは結構重要。

今時.NETが古いの含めて1個も入ってない環境ってのは珍しいだろうし、
最新版要求しなけりゃ大体大丈夫ってな話では有るんだが。

535 :デフォルトの名無しさん:2013/05/27(月) 09:49:43.66
実行時の動的リンク(DLL)

実行時ライブラリ(ライセンス)

536 :デフォルトの名無しさん:2013/05/27(月) 12:31:03.62
つまり「ランタイム」って言葉を使う人は
皆、キチガイってことで

537 :デフォルトの名無しさん:2013/05/27(月) 12:36:29.51
536 使った

538 :デフォルトの名無しさん:2013/05/27(月) 13:49:51.58
なんか五月蠅いハエみたいのが湧いてるな

539 :デフォルトの名無しさん:2013/05/27(月) 15:57:13.81
>>538
自覚あるの?

540 :デフォルトの名無しさん:2013/05/27(月) 20:12:51.27
>スタティックリンクでもラインタイムはランタイムってのは当然の話だわな。
いえ全然。>>534はお疲れですか ?

541 :デフォルトの名無しさん:2013/05/27(月) 20:32:36.78
>>540
C++知らないならレスしないでください

542 :デフォルトの名無しさん:2013/05/27(月) 20:36:52.89
>>531
「ランタイムライブラリとは、ある言語をフルセットで使えるようにするために必須のライブラリで、
かつ、その言語自身では書くことが困難な低水準機能を実装してあるライブラリのことを指す」

長文オナニー乙。妄想は独りでやれよ。

>>529
「再配布可能ライブラリは同じフォルダにDLLぶち込んどけば」
それはやめてくれとマイクロソフトが10年以上言い続けているのにお前と来たら…

543 :デフォルトの名無しさん:2013/05/27(月) 20:44:07.14
C++を叩く奴はMSとかググるとかじゃない?2chの運営とは同志だし
アメリカ人以外がネイティブ言語に強くなられると彼らの破産が早まるし

544 :デフォルトの名無しさん:2013/05/27(月) 20:59:57.49
>>485からレスがワープ?

545 :デフォルトの名無しさん:2013/05/27(月) 21:06:50.62
2chサーバーはアメリカ国家機関の中!CIAじゃんww

546 :デフォルトの名無しさん:2013/05/27(月) 21:17:46.41
MSはC++マンセー派

547 :デフォルトの名無しさん:2013/05/27(月) 21:18:01.39
>>545
それは聞いた事がある
2chを読む事によって日本の国内事情はアメリカに完全に把握されているとか何とか
まあ属国だしなあ

548 :デフォルトの名無しさん:2013/05/27(月) 21:23:31.69
>>546
C++をインタープリタにすり替えようとしてるんだろ?

549 :デフォルトの名無しさん:2013/05/27(月) 21:27:36.78
>>548
C++/CLI < .netと融合しようとした
C++/CX < けど、諦めた

550 :デフォルトの名無しさん:2013/05/27(月) 21:46:20.56
早い話がC++をOSプログラマ以外から取り上げようとして失敗しただけだから
可能ならC++を使えるのはMSの社員だけにしたいんだろう

551 :デフォルトの名無しさん:2013/05/27(月) 21:50:45.41
>>547
もっと能動的に利用してるよ。忍法帖とかレベルとか言ってアクセス者を識別し
思想調査、あらゆる嗜好を調べて、自ら煽った極東の緊張で警察国家に出来た暁には
「危険思想の持ち主」は尽く処刑する腹だろ

552 :デフォルトの名無しさん:2013/05/27(月) 22:22:33.00
>>528
ゲーム機だから用意された機材で粛々と作るだけですよ。まぁドカタだね
今はもうアセンブラとか使わないし。そういうところもCモドキで書ける

553 :デフォルトの名無しさん:2013/05/28(火) 01:12:09.44
>>542
crt=C RunTime library

554 :デフォルトの名無しさん:2013/05/28(火) 07:34:34.42
vcはmsvcrt.dll(動的リンク)と
Iibcmt.lib(静的リンク)がもともとあって
前者だけOSに取り込まれたから
Cライブラリ=ランタイムライブラリ
というややこしい図式ができた

555 :デフォルトの名無しさん:2013/05/28(火) 19:17:24.68
そろそろC++の話に戻ろうか

556 :デフォルトの名無しさん:2013/05/28(火) 19:56:45.64
>>554
そういう経緯だったのか。

557 :デフォルトの名無しさん:2013/05/28(火) 20:03:55.77
真に受けるなよ

558 :デフォルトの名無しさん:2013/05/28(火) 20:27:04.20
20世紀末に世界の底辺であるブイビープログラマーが
Visual Basicランタイムライブラリをランタイムと
連呼し始めてから用語がデタラメな使われ方をする
ようになった。
アプリケーションプログラマーが直接
書いてない基本的モジュール全般をさす。

559 :デフォルトの名無しさん:2013/05/28(火) 20:31:25.13
リアルタイム処理のことをオンラインと呼ぶ上司がいてすごく違和感だったんだけど、
オンラインリアルタイム処理という言葉はあるんだね。
オンラインというと、ネトゲみたいなのを思い浮かべちゃうw

560 :デフォルトの名無しさん:2013/05/28(火) 20:46:50.75
リアルタイムの逆を行くのがバッチ処理、という意味では、当たらずも遠からず
伝送路が膨大なヒューマンエラーに晒されることを意識するという点ではおかしいが

561 :デフォルトの名無しさん:2013/05/28(火) 21:09:38.97
バッチを走らせるときにはフロント系を落として
オフラインにするイメージなのかな

562 :デフォルトの名無しさん:2013/05/28(火) 22:24:07.80
>>559
てか、オンライン処理(⇔バッチ処理)で完結した言葉だと思ってた。
オンライン処理って省略せず正確にいうとオンラインリアルタイム処理っていうのか
そっちの方にヘェーっと思ったわw

563 :デフォルトの名無しさん:2013/05/29(水) 00:02:10.30
またwinbase.hでマクロが被った(´・ω・`)

564 :デフォルトの名無しさん:2013/05/29(水) 00:15:09.09
検索してみるとGetCurrentTimeで引っかかってる人結構いるのね
しかもこれ無駄に単なる関数の再定義だったりでな
ほんとに・・・もう・・・無駄に血圧上がって寿命縮みそう(´・ω・`)

565 :デフォルトの名無しさん:2013/05/29(水) 01:07:09.42
そんな時の#undefですよ……それすら通じないなら名前空間とかで逃げればよくね?

566 :デフォルトの名無しさん:2013/05/29(水) 01:19:17.76
いやいや、普通に名前空間に逃げてるけど#defineさまが相手じゃかなわない
糞カッコ悪いifdef undef endifを書いてwinbaseがうんこなので仕方なくundefしますって注釈も書きました
ああ^〜はげる^〜

567 :デフォルトの名無しさん:2013/05/29(水) 02:06:43.13
bohem gcがnew operatorを上書きしてしまうのだけど
手動deleteできるnewとbohem_newを使い分けできないものなのでしょうか

568 :デフォルトの名無しさん:2013/05/29(水) 02:30:23.49
この内容について教えてください欲しい。
http://cansecwest.com/slides/2013/DEP-ASLR%20bypass%20without%20ROP-JIT.pdf

569 :デフォルトの名無しさん:2013/05/29(水) 08:49:24.74
「オンライン」「バッチ」
どちらかに○を付けてください。

はぁ?って事はよくある

570 :デフォルトの名無しさん:2013/05/30(木) 13:53:47.82
>>566
貴様のレベルも禿も
ストラウストラップ先生に
まだまだ遠く及ばない

571 :デフォルトの名無しさん:2013/05/31(金) 02:39:08.25
バッチの対義語はリアルタイムだね
まあバッチは一括処理である以上、貯めたデータを使ってオフラインで行うことが多いし
リアルタイム処理はオンライン上の対象と通信しながらやることが多いから解らんでもないけど

572 :デフォルトの名無しさん:2013/05/31(金) 17:10:21.70
>>571
ダム端末のオンライン的な「オンライン」とかオンラインマニュアルみたいな「オンライン」から来てるんじゃねぇかなあのへんで言うオンラインって

573 :デフォルトの名無しさん:2013/05/31(金) 17:23:10.01
RTOSを知ってると、リアルタイム処理とか言われると、ちょっとピキッとなるな。
やっぱオンライン処理が妥当な気がする。

574 :デフォルトの名無しさん:2013/05/31(金) 18:57:23.23
処理によると思うんだよね。
動画を撮影してる端からエンコーディングしてるのはリアルタイムエンコーディングって言ったほうがしっくりくるね。
逆に銀行のATMでの送金処理なんかはまさにオンライン処理、って感じだし。
他のコンピュータと連携しながら行う処理は、オンライン、オフラインがリアルタイム(?)、バッチ、とかなりの関連性を持ってるよね。
だけどもローカルだけで済む処理だけれど計算量が膨大になって時間と品質のトレードオフになるようなものはリアルタイムかノンリアルタイムかは重要な問題だし。
RTOSで言うリアルタイム、と、これらのリアルタイムがぜんぜん違うものを指してるのはわかるけど。
遅延のことを指してるのか、スループットのことを指してるのか、って感じなのかな。

575 :デフォルトの名無しさん:2013/05/31(金) 19:03:11.37
>>574=素人

576 :デフォルトの名無しさん:2013/05/31(金) 21:45:28.79
リアルタイム処理って言ったら組み込み系OSでリクエストしてから
何ms以内にレスポンスが返ってくるみたいなやつのこと。

577 :デフォルトの名無しさん:2013/05/31(金) 22:59:20.48
組み込み系とかRTOSの世界ではリアルタイム処理がそういう処理を指すだろうが、それが全てではない。
学術論文なんかのタイトルでもいくらでもそうでないリアルタイムはあるんだが
http://scholar.google.co.jp/scholar?hl=ja&q=realtime&btnG=&lr=
それ以外認めない、それ以外の使い方する奴は素人って言われてもな。業界が違うだけだろ。

578 :デフォルトの名無しさん:2013/06/01(土) 07:12:31.19
リアルタイムといったら迅速に応答する必要のある処理全般を指す言葉、を指すもんだと
俺は思ってるから、だいたいみんなの書く内容は当てはまる

579 :デフォルトの名無しさん:2013/06/01(土) 08:05:57.83
処理が投入されてから処理が完了されるまでの時間に「最悪いくらまでには」完了、というお尻が決まっておりかならずそれまでには完了するもののことだろう?確率的な要素がなくて

580 :デフォルトの名無しさん:2013/06/01(土) 08:32:40.01
リアルタイムは一定時間(たとえば0.5秒)毎に何が何でも配下全てのAtomicを確定させるシステム。
オンラインは低レベルなAtomicを(低レベルな外部処理に任せ)除いた残り(DB間の等)部分の同期手法。

581 :デフォルトの名無しさん:2013/06/01(土) 09:03:19.07
たとえば「リアルタイムでエンコ」
と言ったら平均処理速度が
入力のペースより速いこと
レスポンスが厳密に規定されるかは関係ないな

582 :デフォルトの名無しさん:2013/06/01(土) 11:21:48.79
リアルタイムを使うソースがごっちゃになっとるがな

583 :デフォルトの名無しさん:2013/06/01(土) 20:55:44.14
だから「ハードリアルタイム処理」っていう用語があるんだけどね
これはバッチ処理の対義語としてのリアルタイム処理(=対話型処理)とは区別される

584 :デフォルトの名無しさん:2013/06/02(日) 18:52:45.88
movl $0xaea4a4af,-0x13(%ebp)   これってどういう意味になるんでしょうか?

585 :デフォルトの名無しさん:2013/06/02(日) 18:54:21.89
貴様、ここを何スレだと思っている?

586 :デフォルトの名無しさん:2013/06/02(日) 18:56:33.08
アセンブラスレやろ?

587 :デフォルトの名無しさん:2013/06/02(日) 18:59:38.41
MOV [EBP-0x13], 0xAEA4A4AF

gasは転送の向きが逆になる

588 :デフォルトの名無しさん:2013/06/02(日) 21:44:25.30
アセンブラ初心者スレッド
http://toro.2ch.net/test/read.cgi/tech/1314502612/

589 :デフォルトの名無しさん:2013/06/02(日) 21:47:28.45
>>586
Cは高級アセンブラ、とはよく言うけど、C++はどうなんだろう

590 :デフォルトの名無しさん:2013/06/02(日) 21:54:00.12
低級高級言語

591 :デフォルトの名無しさん:2013/06/03(月) 06:40:18.77
プラプラって中途半端だよな

592 :デフォルトの名無しさん:2013/06/03(月) 08:03:49.54
はい次の人

593 :デフォルトの名無しさん:2013/06/03(月) 15:21:00.74
GCCでint64_tが使えないのですけど、インクルードとか必要なんですか?

594 :デフォルトの名無しさん:2013/06/03(月) 15:24:53.45
stdint.h

595 :デフォルトの名無しさん:2013/06/03(月) 15:33:48.77
cstdintですね。
有難うございます。

596 :デフォルトの名無しさん:2013/06/04(火) 00:24:58.39
テキストファイルの全文をゼロ終端文字列としてバッファに読み込みたいんですが
取得したファイルサイズと実際の終端までの長さが異なるのか、ゴミがくっ付いてきます。
ついてはこの原因が何なのかご教示いただきたいです。
バッファをmemsetでクリアしておけば解決するんですが、なるべくなら終端文字の代入で事を済ませたいです。

using namespace std;
ifstream ifs;
ifs.open("input.txt", ios::in);
size_t fsize = (size_t)ifs.seekg(0, ios::end).tellg();
ifs.clear();
ifs.seekg(0, ios::beg);
char *buff = (char*)malloc(fsize + 1);
ifs.read(buff, fsize);
ifs.close();
buff[fsize] = '\0';

597 :デフォルトの名無しさん:2013/06/04(火) 00:30:05.17
環境何なん?
Windowsなら終端に0x0aがくっついて来るから削らないといけないよ

598 :デフォルトの名無しさん:2013/06/04(火) 00:32:19.47
>>597
今でもついてるんかい?

599 :デフォルトの名無しさん:2013/06/04(火) 00:37:43.86
テキストエディタによる
律儀にくっつけてくれちゃうのがあるよ

600 :デフォルトの名無しさん:2013/06/04(火) 00:38:25.33
・c++でnew使わずにmalloc?
・readってバイナリ読み込み用だから\0デリミタはつかないのが普通
・get(buff, fsize+1);じゃだめだっけ?

601 :デフォルトの名無しさん:2013/06/04(火) 00:56:45.98
>>596
問題が再現する環境とファイルを絞って、それでわからなければ、それ全部晒すと何かわかるかもね。

602 :596:2013/06/04(火) 00:59:48.19
>>597
環境はWindows7 32bit版 + VC++でテキストファイルはSJISです。
標準出力にはファイル内容以外にヘヘヘヘヘヘヘヘなどのゴミが付加されます。
念のためファイル内容は「a」のみにしメモ帳で保存し直しました。
その場合のfsizeは1,全角の「あ」だと2です。

>>600
コンストラクタ等の存在しない単純な領域確保にはmallocを使用しています。
バイナリで読み込んだのは速度が欲しい(改行コードの統一処理が不要)だからです。

603 :デフォルトの名無しさん:2013/06/04(火) 01:01:28.29
バイナリで読む(改行の処理不要)なら ios::in | ios::binary じゃね?

604 :デフォルトの名無しさん:2013/06/04(火) 01:13:27.18
>>602
読み込もうとしているファイルのサイズは
あなたの意図してるのと一致してる?
ファイルを一旦メモ帳で開き、
別名で保存してそれを処理してみたら?

605 :デフォルトの名無しさん:2013/06/04(火) 01:16:23.48
>>602
改行コードの制御に関わるのはファイルオープン時のbinary指定の方で、
開いた後のread/getはデリミタ周りに関係する…と思うのだけどそれ以前の話として

Windowsで速度がほしいなら、CreateFileWとReadFileやファイルマッピングで読んだほうがオーバヘッド少なくて済む。

これはまんま固定長バイナリリードなので、デリミタの付与は自前でやる事になるが、
デリミタ付与のようなオーバヘッドすらないって意味ではシンプルでわかりやすいかと。
FastIO系のAPIとかもあるみたいだけどあんまメジャーじゃないしこっちはパスしても良いと思う。

>>604
改行コード変換無し(バイナリオープン)でデリミタ付与読み込み(テキスト読み込み)したいってだけの話。
ゴミの件はデリミタ不足で未初期化領域に突入してるだけだからそこ気にしても何の意味もないと思うよ。

606 :デフォルトの名無しさん:2013/06/04(火) 01:19:52.16
ファイルの中身が、
"abcde\0ヘヘヘヘヘヘヘヘ"
だったりしてない?

607 :デフォルトの名無しさん:2013/06/04(火) 01:21:34.86
>>605
「デリミタ」って何のこと言ってんの?終端 '\0' のこと?
buff[fsize] = '\0' してあるんだから「未初期化領域に突入」は無いんじゃないの?

608 :デフォルトの名無しさん:2013/06/04(火) 01:27:01.96
>>602
今同じような環境で試したけど、再現しない・・

609 :596:2013/06/04(火) 01:35:30.06
皆さん解決にご協力頂きありがとうございます。

>>603
>>605
ご指摘通りに指定したら解決しました。
ということは、ios::binaryを指定しないと\r\nが\nに短縮されてファイルサイズが縮むんですね。
今までgetメソッドがその処理を受け持つものだと思っていました。
でもios::endがその差を吸収してくれないならテキストモードで全内容を読みたいとき
readメソッドは使えずgetメソッドで一行ずつ読み込むしかないんですね。
ファイルマッピングは使ったことがありますが今回はクロスプラットフォームを実現したくて見送りました。
まあプリプロセッサで振り分ければいいので単なる無精ですが。

610 :デフォルトの名無しさん:2013/06/04(火) 01:40:05.13
>>607
「終端文字の代入を省略したい」と勘違いしてたわ…すまん

>>596
単にios::binary付ければ解決する気がする。
tellgで得られるのは改行変換前のバイト位置で、readで読むのは改行変換後のバイト数って事だと思う。

611 :デフォルトの名無しさん:2013/06/04(火) 01:54:07.46
ファイルの中身が"フフフノフフフ"だったりして

612 :デフォルトの名無しさん:2013/06/04(火) 02:02:42.99
WndowsのようなCooked Modeを持っているOSだとテキストモードで
tellg()やseekg()がうまく動かないでしょ

613 :デフォルトの名無しさん:2013/06/04(火) 02:16:58.47
>>609
binary 使わなくても固定サイズの read() を EOF まで繰り返し読めばいいよ。

サイズ取るのに seek して tell の移植性も完璧じゃないし。
http://www.jpcert.or.jp/sc-rules/c-fio19-c.html

614 :デフォルトの名無しさん:2013/06/04(火) 03:22:23.83
そういえば「あるテキストを読み込み、行を逆順に出力せよ。行数に制限は
ないものとする」という問題があって、tellg()やseekg()を使うと動作がおかしく
なるので悩んだ事がある

結局トランザクションファイルを作ってテキスト→バイナリに一度変換してから
tellg()、seekg()で逆順に読んだ
そのファイル位置はもう一つのファイルに記録した
そうしないと「行数に制限がない」という条件を満たせない

615 :デフォルトの名無しさん:2013/06/04(火) 04:08:15.05
バイナリモードでオープンすりゃ良かったんじゃね?

テキストモードでもtellとseekの対応自体は取れてるらしいから読めんこともないんじゃ…
…テキストモードでCRLFのLFんとこにシークした場合の動作が未定義とかだったりすると非常に時間掛かって実用的じゃない事になるかもだけど。

616 :デフォルトの名無しさん:2013/06/04(火) 12:24:46.95
デフォルトのスタンダードライブラリーってフォルダーのファイル名を列挙したりする、いわゆるフォルダ操作は
できないんですよね?

617 :デフォルトの名無しさん:2013/06/04(火) 13:45:34.21
§27.6.1.1
pos_type tellg();
basic_istream<charT,traits>& seekg(pos_type);
basic_istream<charT,traits>& seekg(off_type, ios_base::seekdir);

だから size_t はまずいんじゃ・・・

618 :デフォルトの名無しさん:2013/06/04(火) 13:50:53.29
もしかしてファイル長がunsigned longだと32bitの恐れがあるから、C++で
定義を変更したのかもな

だとしたらnewする時はどうやってpos_typeからサイズを得ればいいんだ?

619 :デフォルトの名無しさん:2013/06/04(火) 14:20:29.49
>>618
C++11の規格票を見てもそれらしい対策はないね

今の所これを使うしかないのか

http://d.hatena.ne.jp/y-hamigaki/20061013

>多くの32ビット環境ではstd::streamoffが32ビットですが、std::streamposはそれ以上の精度を持っていることがあります。
>そのため、Boost.Iostreamsでは(処理系依存の方法で)可能な限りstd::streamposからオフセットを64ビットの精度で取り出す関数position_to_offset()が用意されています。
>このオフセットを表現するのにstd::streamoffでは足りないので、代わりにboost::iostreams::stream_offsetを使います。

>使っていて気が付いたんですが、(少なくともVC8付属のものでは)std::streampos同士の引き算などで意図せずオフセットの精度が落ちることがありました。
>なので、std::streamposに演算を施す場合は、一旦stream_offsetに変換しないといけません。
>これに関してコンパイラは警告を出してくれない(std::streamposの中でキャストしている)ので、注意深くコーディングする必要があります。
>どうせならstd::streamposも別クラスで置き換えてくれれば楽だったんですけどね。

勘弁してくださいorz

620 :デフォルトの名無しさん:2013/06/04(火) 20:03:43.76
ストリーム長に関しては本当にうんこライブラリだからな
処理系依存の方法を使った方がましだよ

621 :デフォルトの名無しさん:2013/06/04(火) 20:26:54.03
禿様も、そのときは一生懸命だったんだよ
批判するより次いこーぜ

622 :デフォルトの名無しさん:2013/06/04(火) 21:46:06.31
名前:
E-mail: sage
内容:
全然勉強しないままとにかく手を動かして書いてた初心者なんだけど
typedef struct tagABC
{
int a;
int b;
int c;
float d;
float e;
float f;
float g;
:
:

} ABC ;
ABC abc[ NUMBER ];

みたいな感じで20〜30個程度の要素数の構造体を
#define NUMBER 10万ぐらい確保して
出来るだけ高速に代入したいんだが
5万ぐらいまでは60fps確保できても8万とかなると格段に遅くなる
代入をやめれば途端に負荷はほとんどなくなってCPU使用率5%以下
毎フレームの代入する数は変わらない

なんかよくわからないけどSTLコンテナとか勉強して導入した方がいいのかな
なんか使い方がまずいんだとは思うけど

623 :デフォルトの名無しさん:2013/06/04(火) 22:06:27.59
>>622
>STLコンテナ
今の状態で使うのはよした方がいい(だって遅いし)
だいたい何故にゲーム(多分)で10万もの構造体を毎フレーム初期化する必要がある? どんな処理だよ?

624 :デフォルトの名無しさん:2013/06/04(火) 22:13:09.99
あ、あと代入はabc構造体の全要素に同時に代入する使い方しかしないです
ポインタのほうがいいのかな

625 :デフォルトの名無しさん:2013/06/04(火) 22:16:52.70
大量のパーティクルを扱いたいんです
PCならマシンスペック振りかざして数を稼げるから
今のところボトルネックは描画でも運動計算でも無く代入の生成の部分みたいなので
今ちょうど仕様を大きく書き直してるから一緒に解決してしまいたい

626 :デフォルトの名無しさん:2013/06/04(火) 22:20:36.23
補足ばっかりすまん
代入処理は毎フレーム多くても多分数千程度で
10万一挙にってことはまずありえないと思う

627 :デフォルトの名無しさん:2013/06/04(火) 22:29:45.77
お前の言う代入って初期化なのかコピーなのかどっちだよ
代入してるところのコードは現状どんなかんじになってんだ

628 :デフォルトの名無しさん:2013/06/04(火) 22:31:27.92
……今気づいたけど、>>622,624-626が同一人物なのか
トリップ付けるかageてくれれば質問者が誰か分かりやすいと思う

629 :622:2013/06/04(火) 22:39:37.48
すまん>>622,624-626です
初期化だね
速く出来るのならコピーの形に作り変えてもいい

630 :デフォルトの名無しさん:2013/06/04(火) 22:44:42.45
現状はトリップしかないね

631 :デフォルトの名無しさん:2013/06/04(火) 23:02:41.98
あれ、ID表示しない系の板ってageたら表示するもんじゃなかったか

632 :デフォルトの名無しさん:2013/06/04(火) 23:03:39.37
どうやら俺の勘違いだったようだ……
まあCPUに限らずリソースは余るなら余らせとくが吉

633 :デフォルトの名無しさん:2013/06/04(火) 23:32:59.90
たかだか250マンコ程度のfloatを60回代入するのに
1秒もかかるとは思えんのだが。
普通のWindowsパソコンの話なら。

634 :622:2013/06/04(火) 23:40:43.70
やっぱり普通に考えたら負荷にはならないのかな
かなり最初に書いた部分で、間違いなくまずい書き方として初期化の値求めるために宣言とか入ってるから
メモリの確保と開放を10万回以上やってるっぽいがこれが大きいのか?
でも10万個目周辺で1000個程度の代入で10fpsとかになるんだよなあ
ちなみに2500Kのwin7_64bit

635 :デフォルトの名無しさん:2013/06/04(火) 23:45:17.17
>メモリの確保と開放を10万回
ふむふむなるほど

636 :デフォルトの名無しさん:2013/06/04(火) 23:49:00.29
memcpyで済むならその方が

637 :デフォルトの名無しさん:2013/06/04(火) 23:49:32.46
って、おい! ふざけんなwww
>メモリの確保と開放を10万回

638 :デフォルトの名無しさん:2013/06/04(火) 23:55:37.90
>>634
>メモリの確保と開放を10万回

    |∧∧|       (( ) )   (( ) )  ((⌒ )
 __(;゚Д゚)___   (( ) )   (( ⌒ )  (( ) )
 | ⊂l >>622 l⊃|    ノ火.,、   ノ人., 、  ノ人.,、
  ̄ ̄|.|.  .|| ̄ ̄   γノ)::)  γノ)::)   γノ)::)
    |.|=.=.||       ゝ人ノ  ゝ火ノ   ゝ人ノ
    |∪∪|        ||∧,,∧ ||∧,,∧  ||  ボォオ
    |    |      ∧ (´・ω・) (・ω・`) ∧∧
    |    |      ( ´・ω) U) ( つと ノ(ω・` )
   ~~~~~~~~     | U (  ´・) (・`  ). .と ノ
              u-u (    ) (   ノ u-u
                  `u-u'. `u-u'

639 :622:2013/06/04(火) 23:55:40.30
やっぱりこれ?
でも最近のコンパイラだと
for内に変数宣言してもこんな事にはならないとも聞いたことがある
まあちょっとここんとこ何とかしてみるよ

640 :デフォルトの名無しさん:2013/06/04(火) 23:57:14.82
>>639
ええい、ソースを晒せソースを!
http://codepad.org/等を利用してうpれ!

641 :デフォルトの名無しさん:2013/06/05(水) 00:03:02.99
ばかには無理
再現させる最低限のコードになるまで削る
という脳筋作業すらできない低脳には

642 :622:2013/06/05(水) 01:17:29.79
DXライブラリ使ってもいい?
http://codepad.org/dzqFPuQk
インクルード面倒な人は
ttp://homepage2.nifty.com/natupaji/DxLib/dxdload.html
ここからDXライブラリダウンロードして展開したら
サンプルプログラム用のプロジェクトあるからそこに貼っつけてもらえればいい

色々省いたから未使用の要素とかあるし恥ずかしいコメントだらけだけどそこは生暖かい目で見といて
正直再現性のある最小コード作れるとは思わんかった
テンキーじゃない方の1キー押してる間代入し続けるからずっと押してもらって
7万辺になるとCPUの1コアが使用率上がって有効数が増えるスピードが目に見えて遅くなるのがわかると思う

643 :622:2013/06/05(水) 01:37:31.92
あ、あとよく考えたら10万回のメモリの確保と開放は無かった
毎フレームせいぜい数十〜百回程度だった
そして単純に代入するだけでも再現性はあって
毎フレーム代入するパーティクルの数が多いほど負荷も増えてる模様
毎フレーム30ぐらいなら50fpsぐらい維持できるけど毎フレーム3000とかだと一瞬で1〜2fpsとかになる

644 :デフォルトの名無しさん:2013/06/05(水) 02:04:52.89
使われていないパーティクルデータを探す
ってところで線形探索してるから重い。コレだと毎フレーム最悪80000*100要素探索することになる。

645 :622:2013/06/05(水) 02:11:42.02
単純にforループの数の大きさのせいか
でもそれだったら1押すの止めてパーティクル生成してなくても重くなると思うんだよね
昔forループだけで重くなるライン探したけど確か100万ぐらいまではいけた気がする

646 :デフォルトの名無しさん:2013/06/05(水) 02:27:20.01
>>645
書き込み数が同じにも関わらず、どんどん時間がかかるようになるのは、未使用領域の探索に時間が掛かっているからだ。

しかも一個未使用領域を見つける度に、配列の最初から探索をやり直している。非効率すぎ。

この方法だと、例えば配列の先頭6万個が使用済みの場合、
createSplash()を呼ぶ度に(6万 * 作りたいsplash数)以上の
ループと変数読み出しが(未使用領域の探索のために)発生する。

3000個のsplashを作りたいなら1億8000万以上だな。

647 :622:2013/06/05(水) 02:47:49.73
なるほど。
確かにこれは大問題だった
これの改善案って
未使用領域を見つけても探索をやり直さないようにする以外にあるかな
もっと根本的に仕組みを変えてもいいし案があれば教えて欲しい

648 :デフォルトの名無しさん:2013/06/05(水) 03:46:17.10
c使いじゃないので何ができるのかわかんないんだけど
前回の状態を別変数に持たせるとか

例えば未使用のsplashIDだけ必要なら
例えば変数pにsplashID1000ずつまとめて未使用のsplashIDだけ格納していく
p[0]に0-999
p[1]に1000-1999
...
なら
たとえばsplashID987654が未使用ならp[987]に入ってる

649 :デフォルトの名無しさん:2013/06/05(水) 03:58:00.93
順序無しリストで管理すればいいのでは?
追加は常に最後尾で++個数
削除は削除位置に最後尾のデータをコピーして--個数

650 :デフォルトの名無しさん:2013/06/05(水) 06:18:23.59
ゲームとかプログラム始める前に基本情報ぐらいとれよ
基礎がなってないのにコード書き始めるから大惨事になるんだよ
趣味ならまだいいが基本情報すら持たないカスに仕事でコンピュータ触らせたく無い

651 :デフォルトの名無しさん:2013/06/05(水) 06:27:42.22
>>647
>未使用領域を見つけても探索をやり直さないようにする以外
静的にとった領域に対して使用中要素のリンクリストと未使用要素のリンクリストを持つのがこの手のげむのセオリーじゃねーの?

652 :デフォルトの名無しさん:2013/06/05(水) 06:28:12.22
>>649
パーティクルが有効になる順番と死ぬ順番が一致してれば、そうだね。
一致してないとリストの中間の要素を削除するはめになって、削除コストがマッハ。

一致してない場合は双方向リンクリストをつかえば探索と破棄が低コストでできる。実装はググって。
std::listは削除が低コストでできないから、この用途には役にたたないよ。


>> 650
学校や会社で課題出されたならともかく、自分の意思でプログラム始めるにあたって
基本情報から入る人なんているの?

653 :デフォルトの名無しさん:2013/06/05(水) 06:44:49.08
>>652
いきなり最初からはなくても
一週間もすれば、あ、これプログラム言語だけじゃなんも出来んわ、って気が付く
そこからネットで情報調べれば基本情報にたどり着くよ

654 :デフォルトの名無しさん:2013/06/05(水) 07:02:25.15
>>653は基地外

655 :デフォルトの名無しさん:2013/06/05(水) 07:08:17.57
普通だと思うが?

656 :デフォルトの名無しさん:2013/06/05(水) 07:40:02.33
>>650
マジレスすると基本情報に求められるコーディングだと「リスト」とかは出てこないぞ
ゲーム関係の教本とか蟻本とかを読んで勉強する方が速い
例:
http://www.amazon.co.jp/dp/4798021180
http://www.amazon.co.jp/dp/4797304952
http://www.amazon.co.jp/dp/4839941068

657 :デフォルトの名無しさん:2013/06/05(水) 07:48:20.64
>>652
中間要素の削除でも>>649なら常にO(1)だろ。

658 :デフォルトの名無しさん:2013/06/05(水) 11:42:34.83
基本情報とか爆笑したwwwwwwwwwwいらないよ。

659 :デフォルトの名無しさん:2013/06/05(水) 11:59:43.34
基本情報処理技術者試験はまあいいけど
英語で英検 的な残念さがある

660 :デフォルトの名無しさん:2013/06/05(水) 12:09:05.49
>>631
ID無効と、任意IDと、強制IDの3つがある。
ageでIDが出るのは任意IDのやつで、元々はメールアドレス書いてるならID要らんという思想によるもの・・・
・・・だったと思うんだが、sageとかの機能にメール欄流用した結果sage進行中心の板ではID無効同然になった。

661 :デフォルトの名無しさん:2013/06/05(水) 12:29:52.61
基本情報とか時代遅れ過ぎるわ

662 :デフォルトの名無しさん:2013/06/05(水) 12:46:40.65
>>661=じだいおくれ

663 :デフォルトの名無しさん:2013/06/05(水) 15:42:55.96
基本情報w

664 :デフォルトの名無しさん:2013/06/05(水) 16:05:37.51
取れたからどうだって訳じゃないが、それすら取れん馬鹿を篩に掛ける程度には役に立つんじゃね。

665 :デフォルトの名無しさん:2013/06/05(水) 16:26:05.70
・要素に次要素へのポインタないしインデックスを持たせて、使用中要素のリンクリストと未使用要素のリンクリストで管理する
・パーティクルの寿命が大体同じなら、リングバッファ状にして管理する(最大数突破時の強制再利用にも有効)
・使用状況フラグをビットマップに落とすとかで単純に探索速度を稼ぐ

あと種類ごとに共通なデータは種類番号とか共通データへのポインタにしてしまえば色々節約できる。
メモリアクセスのコストも馬鹿にはできんから、場合によっては参照時に計算したほうが良いことも有る。

666 :デフォルトの名無しさん:2013/06/05(水) 16:55:04.86
今の人は時間やメモリ節約するコード知らんみたいだ。

667 :デフォルトの名無しさん:2013/06/05(水) 16:56:27.75
足並み揃わなくなったかな?

668 :デフォルトの名無しさん:2013/06/05(水) 19:20:21.70
基本情報でドヤ顔するやつは解雇して良いが
基本情報を足切りに使わない会社は信頼できない仕事任せたくない

669 :デフォルトの名無しさん:2013/06/05(水) 19:21:15.11
>>656
コーディング以外のところが空っぽだから基本情報とるんだよ

670 :デフォルトの名無しさん:2013/06/05(水) 20:01:56.64
>>668
おまえ税金で食わせて貰ってる連中か

その足きりとやらを通ったからって何だ? 根本的におかしいぜ
コピー機が使えるバカや、英語を話すバカを、何に使えって言うんだよ

金取るに値する仕事しろ!

671 :デフォルトの名無しさん:2013/06/05(水) 20:17:59.33
マ板でやれ

672 :デフォルトの名無しさん:2013/06/05(水) 20:25:22.44
基本情報とか持ってなくてもそれくらいの知識マならあって当然だろ
せめて応用情報とかオラクルマスターとかにしとけ 基本情報なんて受験費用の無駄だ

673 :デフォルトの名無しさん:2013/06/05(水) 20:27:42.43
>>670
コピー機すら使えないバカには用はないよ (w

まあ、このてのアホを選別するぐらいの役にはたつようだな。

674 :デフォルトの名無しさん:2013/06/05(水) 20:32:31.03
基本情報の内容は勉強になったと思うけど、
仕事に必須かというとそうでもないと思うw

675 :デフォルトの名無しさん:2013/06/05(水) 20:45:50.86
>>674
仕事に必須?

んなわけないじゃん。

それすら取れないアホを足切りするだけでしょ

676 :デフォルトの名無しさん:2013/06/05(水) 20:55:16.46
>>673
退職願はここで書くんじゃなく、上司に提出しろw

677 :デフォルトの名無しさん:2013/06/05(水) 21:26:07.21
実力があれば資格なんぞ全くの不要
資格は実力が無い人が自分を凄そうに見せるために取るもの

678 :デフォルトの名無しさん:2013/06/05(水) 21:43:37.97
>>676
就職もできないやつが退職願いとか、笑える

679 :デフォルトの名無しさん:2013/06/05(水) 21:46:28.75
基本情報ごときで凄そうとか言うやつ、
はじめてみた (w

680 :デフォルトの名無しさん:2013/06/05(水) 23:20:37.54
コード書く連中で取ってる奴らに言わせれば基本情報「ごとき」なんだよな。
実力云々以前にコード数行書けるかどうかってレベルのやつと高校生だけだろ、基本情報を誇ることが出来るのは。

その程度でも無いよりかはマシだし、基本情報不合格して基本情報不要って叫んでる馬鹿を弾く程度の事はできる。

681 :デフォルトの名無しさん:2013/06/05(水) 23:26:51.98
「基本情報合格していない馬鹿」じゃなくて
「基本情報不合格して基本情報不要って叫んでる馬鹿」へ限定した理由って何?
条件は正確にしないとバグのもとだよ

682 :デフォルトの名無しさん:2013/06/06(木) 00:18:37.33
受けるまでもない人も合格していないに含まれるわけだが

683 :デフォルトの名無しさん:2013/06/06(木) 00:40:53.26
マ板でやれ

684 :デフォルトの名無しさん:2013/06/06(木) 00:44:31.27
C++のコンストラクタとデストラクタでは、なぜクラス名を書くのですか?
例えば単純にconstructorとかdestructorと書くようにすればいいと思うんですが。
クラス名が変わった時のリファクタリングも楽だし。

685 :デフォルトの名無しさん:2013/06/06(木) 00:46:19.72
キーワードの追加による互換性の低下を嫌ったんじゃないかな。

686 :デフォルトの名無しさん:2013/06/06(木) 00:51:04.05
class Aがあったとして
Aの一時オブジェクトが欲しい時
A::constructor()とかくより
A()とか書いたほうが簡単だから?
識別名には予約語を使わないというポリシー?
A a();という文法がAコンストラクターがオペレータっぽく見えるから?
(constructorだとA a.constructor();とかく必要がある?)
なんとなくそのクラスを使うときに楽だから、というのが理由っぽい

687 :デフォルトの名無しさん:2013/06/06(木) 00:57:12.95
>>686
コンストラクタの名前と一時オブジェクトの生成方法は関係ないだろ。

688 :デフォルトの名無しさん:2013/06/06(木) 01:30:19.62
>>684
まったくそうだよな。C++だけならまだしも
JavaやC#もクラス名を書かされるのはイライラする。

689 :デフォルトの名無しさん:2013/06/06(木) 05:50:48.54
>>672
ないやつが我が物顔でIT業界に入ってくるから言ってるんだよ
一度新人研修で教えればわかる
未経験OKを業界規模で禁則事項にして基本情報を就職の必須資格にすべきだ

690 :デフォルトの名無しさん:2013/06/06(木) 05:56:02.59
>>647
少なくともこいつは基本情報レベル以下のカスだから永遠に趣味グラマでいて欲しい
しかしこいつよりカスなやつが平気で面接受けにくるのが今のIT業界なんだよな

691 :デフォルトの名無しさん:2013/06/06(木) 06:49:26.61
>>682
自称『受けるまでもない人』は、お帰りください

692 :デフォルトの名無しさん:2013/06/06(木) 06:58:35.39
かなしいけどウチの中堅〜老害層は基本情報受けても落ちるだろうなってやつかなり居るよ

693 :デフォルトの名無しさん:2013/06/06(木) 07:17:57.15
でも基本である以上必須w

694 :デフォルトの名無しさん:2013/06/06(木) 07:28:43.48
>>685
thisを使えばいいと思うんだ

695 :デフォルトの名無しさん:2013/06/06(木) 07:34:18.70
this()
~this()
すごい違和感がある気がする

696 :デフォルトの名無しさん:2013/06/06(木) 07:42:38.72
どのみちコピーコンストラクタの宣言ではクラス名を書かされる・・・
かと思ったけど this(decltype(*this) const&) でいいのか。いや、良くないような・・・キモイ。

697 :デフォルトの名無しさん:2013/06/06(木) 07:57:20.52
そこはselfだろう

698 :デフォルトの名無しさん:2013/06/06(木) 07:59:18.47
class GNuuuu {
...
virtual ~self() throw();
self(self const&);
self& operator=(self const&);
};

699 :デフォルトの名無しさん:2013/06/06(木) 08:07:06.38
label_place_collection::XXX みたいな記述箇所依存の置換えマクロみたいなもんが有ればしやわせなのかな
class A{label_place_collection::constructor(label_place_collection::this_type&);};

700 :デフォルトの名無しさん:2013/06/06(木) 08:07:15.71
class GNuuuu {
 this(GNuuuu const&);.
 virtual ~this() throw();
 GNuuuu& operator=(GNuuuu const&);
};

701 :デフォルトの名無しさん:2013/06/06(木) 08:22:46.22
>>700
中途半端だな

702 :デフォルトの名無しさん:2013/06/06(木) 08:44:24.86
$にしよう

class GNuuuu {
 $(GNuuuu const&);.
 virtual ~$() throw();
 $& operator=($ const&);
};

703 :デフォルトの名無しさん:2013/06/06(木) 08:47:01.08
スクリプトみたいだな

704 :デフォルトの名無しさん:2013/06/06(木) 09:41:31.33
私 = I なんだから、大文字の I にしよう

class GNuuuu {
 I(GNuuu const&);
 virtual ~I() throw();
 I& operator=(I const&);
};

705 :デフォルトの名無しさん:2013/06/06(木) 10:39:26.20
http://www.freeml.com/directshow/2432
↑を参考に↓を書いてみました。
http://codepad.org/b2ingmwV

実行してもコーデックの数がゼロと出てしまい、進みませんでした。
どこが悪いのでしょうか?

706 :デフォルトの名無しさん:2013/06/06(木) 11:32:55.28
ちゃんと関数が成功したか戻り値を毎回確認しろ
あとスレチなので環境依存スレに移動しろ

707 :デフォルトの名無しさん:2013/06/06(木) 13:43:03.82
>>706
返戻値は確認しました。が、それでもだめです。。。
すみません、環境依存スレに移動します。

708 :デフォルトの名無しさん:2013/06/06(木) 20:07:22.99
デストラクターはtypedefの型名使えるけど
コンストラクターは使えないよね?
何でなんだぜ?

709 :デフォルトの名無しさん:2013/06/06(木) 20:08:00.96
使えるでしょ

710 :デフォルトの名無しさん:2013/06/06(木) 20:12:07.68
そうだったのか
勘違いスマソ

711 :デフォルトの名無しさん:2013/06/06(木) 20:12:39.33
どちらも使えない

712 :デフォルトの名無しさん:2013/06/06(木) 23:58:37.63
classとstructはほとんど同じ意味なんでしょ?じゃあclassという予約語が導入された理由はなんなの?

713 :デフォルトの名無しさん:2013/06/07(金) 00:11:59.11
悪魔がそうしろと囁いたから

714 :デフォルトの名無しさん:2013/06/07(金) 00:14:48.03
むしろstructの方がC++には要らんだろ
互換性を考慮した結果ほぼ一緒になっちまっただけで

715 :デフォルトの名無しさん:2013/06/07(金) 02:48:53.24
やってる事は同じに見えるが、デフォルトがpublicなのが構造体でprivateなのがクラスって
くらいで、クラスは構造体を継承できるし。(逆は見た事無いので分からん)
だが、コンパイラは厳密に区別してプログラマに決して混同を許さないww

716 :デフォルトの名無しさん:2013/06/07(金) 02:51:56.34
互換を引きずって、いやな仕様になったところはあるよな。
Cのことを見捨てて、何もないところから綺麗に仕様を作っていれば、きっと…

717 :デフォルトの名無しさん:2013/06/07(金) 02:54:18.32
モノは同じだが、背景にある理論は全く違う…使う側が気を遣うべき物じゃない?

718 :デフォルトの名無しさん:2013/06/07(金) 05:35:54.13
>>716
ぼろぼろでしょう、D言語をみよ

719 :デフォルトの名無しさん:2013/06/07(金) 06:01:20.93
あれは素人が作ったものだから…

720 :デフォルトの名無しさん:2013/06/07(金) 06:50:11.68
>>716
誰にも使われずにきれいなまま朽ち果てるだけでしょ。

721 :デフォルトの名無しさん:2013/06/07(金) 07:25:42.15
>デフォルトがpublicなのが構造体でprivateなのがクラスってくらい
こう説明する人は多数見るけど「何」がpublicなのかを正しく説明する人を見たことがない

722 :デフォルトの名無しさん:2013/06/07(金) 07:29:39.00
>>712
クラスはデフォルトでprivateにしたかったが
structはデフォルトでpublicにしないと
Cとの互換性が保てない

だからclassを導入したと考えると良い

723 :デフォルトの名無しさん:2013/06/07(金) 07:29:39.38
性癖

724 :デフォルトの名無しさん:2013/06/07(金) 07:30:34.47
>>720
C#が割と普及してきたし、
結局言語やライブラリが便利かどうかで決まると思う

725 :デフォルトの名無しさん:2013/06/07(金) 07:33:50.01
デフォルトがパブリックのがよくないか?
継承はプライベートにするくらいならHas aで実装するし
プライベートなメンバやメソッドは後ろに追いやった方がヘッダがみやすい
TMPやるときもパブリックが非常に多い
最近classを使って書いたことほとんどないよ

726 :デフォルトの名無しさん:2013/06/07(金) 07:44:07.78
継承はpublicがデフォルトでいいと思うが
メンバはprivateがデフォルトの方がいい

727 :デフォルトの名無しさん:2013/06/07(金) 08:20:55.62
>>721
> 「何」がpublicなのかを正しく説明する人を見たことがない

説明するまでもないから...

728 :デフォルトの名無しさん:2013/06/07(金) 10:09:43.61
PODだけstructにしてるわ
気持ち悪いからほとんど使わないけど

729 :デフォルトの名無しさん:2013/06/07(金) 10:20:14.71
インターフェイスも class で書かれます?

730 :デフォルトの名無しさん:2013/06/07(金) 10:25:58.21
インターフェースもクラスで書いてるな

731 :デフォルトの名無しさん:2013/06/07(金) 10:37:29.39
悪いとは言わんが、ご苦労さま

732 :デフォルトの名無しさん:2013/06/07(金) 12:30:21.24
もうやだ、テンプレートのデバッグほんとやだ。どんな無理ゲーだよ?そらリナスさんもキレるっつーねん!

733 :デフォルトの名無しさん:2013/06/07(金) 13:37:50.72
バグの入り込むような所でてんぷれーとを使うのがあかん
その時点で負けは決まっている

734 :デフォルトの名無しさん:2013/06/07(金) 15:39:05.91
namespaceをテンプレートに出来るようにしてくれ

735 :デフォルトの名無しさん:2013/06/07(金) 15:46:50.83
>>732
エラーメッセージが分かりやすい最新の環境を使え

736 :デフォルトの名無しさん:2013/06/07(金) 16:25:14.63
そういう問題やなかろうが
「未知の型T」で起きる不具合は対策が難しいんだよ
Tに入りうる型がすべて解っていてもテスト工数が絶望的だったり

737 :デフォルトの名無しさん:2013/06/07(金) 20:08:44.68
#include <stdio.h>
int main(){
char a[50][50];
int i;
int j;
for(i=0;i<50;i++){
for(j=0;j<50;i++)
a[i][j]='a';
}
}

ビルドは成功するのにコマンドプロンプトで起動すると動作を停止しましたって表示されます
for文が問題だと思うのですがどう悪いのでしょうか

738 :デフォルトの名無しさん:2013/06/07(金) 20:11:33.00
> for(j=0;j<50;i++)
無限ループだからな

739 :デフォルトの名無しさん:2013/06/07(金) 20:14:39.79
>#include <stdio.h>
C++にこんなヘッダーは無い。スレ違い。

740 :デフォルトの名無しさん:2013/06/07(金) 20:17:41.94
>>737
あまえんな

741 :デフォルトの名無しさん:2013/06/07(金) 20:18:04.81
>>736
いちいちTにはいるすべてを網羅してテストするのですか‥‥アマチュアには想像できない世界だと痛感します。

742 :デフォルトの名無しさん:2013/06/07(金) 20:24:07.71
>>738さんありがとうございます。糞みたいな見落としでした

ほかの方々も厳しいお言葉ありがとうございます
そのヘッダーはC++のものではないのですね...
勉強しなおしてきます

743 :デフォルトの名無しさん:2013/06/07(金) 20:30:16.40
>>742
事象が再現する最小限のコードに削ってから出直せ
まず a[i][j]='a' を削る→再現する
次に for(j=0;j<50;i++);を削る→再現しない
→こんな糞スレで質問するまでなく原因が判明

744 :デフォルトの名無しさん:2013/06/07(金) 20:37:40.85
今日もエクセル方眼紙をたくさん書いた
いつになったらプログラムや設計ができるのか
就職活動で必死にc++アピールしたのは何だったのか

745 :デフォルトの名無しさん:2013/06/07(金) 20:58:10.62
テンプレート絡みのは全てコンパイル時エラーなんだから、
別に網羅的なテストをする必要なんかまったくなくて、
エラーが出た時に必要に応じてすればいいだけだと思う

テンプレートなんだからテストコードは共通化できるはずだし、
自分たちで造ったテンプレートであれば要件も最初から分かってるはずだし

っていうかダミーのプレーンな型を一つ定義してテストすれば、テスト通った時点で
テンプレートパラメータに何が要求されるか網羅できるはずだよね

746 :デフォルトの名無しさん:2013/06/07(金) 21:00:10.36
>>744
お疲れ様・・・。
仕事って常に自分のやりたいことができるわけではないからね・・・。

747 :デフォルトの名無しさん:2013/06/07(金) 21:09:11.85
>>739
あるよ

748 :デフォルトの名無しさん:2013/06/07(金) 21:17:58.62
>>745
それでもお偉いさんは全部網羅しろ、っていうんですよ

749 :デフォルトの名無しさん:2013/06/07(金) 21:18:05.41
>>744
その仕事プロジェクトにC++使われているのか?
C++を使うプロジェクト自体がそんなに多くないし

750 :デフォルトの名無しさん:2013/06/07(金) 21:20:24.11
>>745
>テンプレート絡みのは全てコンパイル時エラー

んなこたーない
template<typename T>
void fuck(T v)
{
 printf("%d, %d", v, 100);
}

751 :デフォルトの名無しさん:2013/06/07(金) 21:35:43.04
>>750
言いたいことは分からないでもないけど、それはテンプレートのせいじゃないんじゃないかな…

テンプレートを使わなければ、そういう間違いをしなくて済むというわけじゃないし、
対策としてはintにstatic_castしてみればいいんじゃないかな

752 :デフォルトの名無しさん:2013/06/07(金) 21:39:14.27
>>744
方眼紙に何を書いているの?

753 :デフォルトの名無しさん:2013/06/07(金) 21:39:32.30
>>750
ついでに言えば、そのパターンも intじゃない空の型一つでテストすればエラーを検出できるから、やっぱり網羅的なテストは必要ない

754 :デフォルトの名無しさん:2013/06/07(金) 21:40:14.57
あれをテンプレート絡みを言っちゃう750の頭がかわいそう

755 :デフォルトの名無しさん:2013/06/07(金) 21:46:28.12
>>751
ある環境でTがshortやintやlongだとOKで
floatやlong longだと正しく動かないのに
テンプレートが関係ないとはお前アホか

template<typename T>
void fuck(T v) {
 printf("%d", static_cast<int>(v));
}
これだって何の解決にもなってない

756 :デフォルトの名無しさん:2013/06/07(金) 21:47:41.63
>>745
二種類のテストがいる。
テンプレート関数の方とテンプレートパラメータに成りうる型が
そのテンプレートのコンセプトに従っているか、と。
後者のテストは当然テンプレートで書けるので、仰るとおり一回
書けば終わる。

>>748
745がいうように、お偉いさんの言う網羅テストはちゃんと省力的
に処理できる。
ただまあ、もしExpression Templateを使っているとか、
汎用的なテンプレートライブラリとして納品しなきゃならんのなら
ご愁傷様。無理。

757 :デフォルトの名無しさん:2013/06/07(金) 21:51:03.88
X<T>のTの取り得る型は
int,X<int>,X<X<int>>など可能性は無限大

758 :デフォルトの名無しさん:2013/06/07(金) 21:56:28.34
コンパイル時にテンプレートパラメータに成り得ない型のときは
型エラーって出来ないの?

759 :デフォルトの名無しさん:2013/06/07(金) 21:56:50.70
ふつう一個のプロジェクトの中で特定のテンプレートが
インスタンス化される型の種類は有限だと思うが

760 :デフォルトの名無しさん:2013/06/07(金) 22:00:59.94
>>759
>インスタンス化される型の種類は有限
ではその有限の種類を列挙する方法を教えて下さい。
自分の書いたX<T>を含むプログラム内に含まれる、
Tの取り得る型の見つけ方を。

761 :デフォルトの名無しさん:2013/06/07(金) 22:06:21.70
テンプレートはダックタイピング的な
文法エラーしか検出できないのに
コンパイルエラーが無かったら問題ない
とか酷すぎる

762 :デフォルトの名無しさん:2013/06/07(金) 22:07:29.48
>>760
ものによるんでない?
例えば特殊な文字列テンプレートクラスでエンコード情報あたりを
テンプレートパラメータにしてるならそれで列挙できるだろうし
一種のコンテナでアロケータをテンプレートパラメータにするんなら
用意したアロケータを列挙すればいい
テンプレートパラメータがイテレータとかで本当に汎用的な場合で、
かつそのテンプレートがやたらそこら中から呼ばれているような場合
は厄介なのは分かるしご愁傷様だけど、
どうしてもっていうならシンボルからデマングルで取れるかもね

763 :デフォルトの名無しさん:2013/06/07(金) 22:07:58.73
X<をgrep検索

764 :デフォルトの名無しさん:2013/06/07(金) 22:08:42.41
>>755
例えばstd::sortの結果は
要素のoperator<の実装に依存するので、そういう意味では任意の型についてソート結果を保証することはそもそも論理的に不可能。

std::sortのテストでできることはoperator<で規定される大小関係通りにソートされることのみ

で、ある型が正しくソートされることを保証する義務は呼び出し側にある

君が提示したprintfコードも同じ

つまり未知の型をすべて網羅したテストを行うというのは初めから要求が破綻している

765 :デフォルトの名無しさん:2013/06/07(金) 22:14:34.65
>>763
kuso<typename unko<string>::X, 0721>
とかいうコードをどうやって網羅テストすんのよ

766 :デフォルトの名無しさん:2013/06/07(金) 22:25:30.85
数字にナニカ意味があるのかとググってみたら
なるほどね

767 :デフォルトの名無しさん:2013/06/07(金) 22:26:40.70
コーディング規約で
「テンプレートパラメーター依存の型をテンプレート引数に使用禁止」
「テンプレートクラスをテンプレート引数に使用禁止」
「非タイプなテンプレート引数禁止」
にしたらTは有限になる。
つまりvector<string>的なのは禁止な。

768 :デフォルトの名無しさん:2013/06/07(金) 22:31:39.36
vector<string>って使っている奴多いような気がするが

769 :デフォルトの名無しさん:2013/06/07(金) 22:34:54.08
てか言葉尻だけでいえばどうやっても有限なはず
じゃないとビルド終わらん

770 :デフォルトの名無しさん:2013/06/07(金) 22:44:01.76
>>769
有限かどうかじゃなくて
その有限の種類を列挙することが
困難だから問題なんだろ?
マングリ返しするしかない

771 :デフォルトの名無しさん:2013/06/07(金) 22:54:41.98
>>769
template<int n>
fib {
 static int k(){return fib<n-1>::k();}
}

この手のは有限でも無理だろ?
メタプログラミングでの網羅確認は
机上のコードレビューと同じレベル。

772 :デフォルトの名無しさん:2013/06/07(金) 23:09:39.66
>>771
コンパイル時にnは決まるんだからそれテストすれば十分じゃない?
そのnを探すのはコードレビューするしかないという意味だとすると
そりゃまあそこは頑張るしかないが、それでも例えば

template <int n> class checked_fib;
template <> class checked_fib<256>{}; // レビューで見つけたnその1
template <> class checked_fib<16>{}; // その2

template <int n> class fib : checked_fib<n> {};

とかガード書けておけば抜けはビルド時に見つけられるわけだし。

773 :デフォルトの名無しさん:2013/06/07(金) 23:16:13.54
別の切り口としては、どこまで用意すべきかは仕様から明らか
だったりすることもあると思うので
そのfibくらいなら、上限決めて全数検査しちゃう手もある

774 :デフォルトの名無しさん:2013/06/07(金) 23:18:28.12
チェックコードをいちいち生成するしかないな
全パターンは無理だろうけど、n = 0〜1000で合ってりゃ大丈夫だろ

775 :デフォルトの名無しさん:2013/06/07(金) 23:19:28.25
ふむふむ。
100キロ行のうんこテンプレライブラリを使用した
1行のプログラムを書く度に、
100キロ行のコードを試験するのですね。

776 :デフォルトの名無しさん:2013/06/07(金) 23:20:15.63
おいおいおまえら、
fibの意味が理解できなかったのか?

777 :デフォルトの名無しさん:2013/06/07(金) 23:29:49.29
ごめん、772で答えになってないなら分からない
解説お願いします

778 :デフォルトの名無しさん:2013/06/07(金) 23:43:11.74
X<n-1>::k()+X<条件分岐<(n%2)==0,X<n-2>,Y<n-2>>>>::k()+X<n+2>::k()

みたいなメタプログラミングうんこ盛りなコードは、
特定のnで確認してもそれが意図した通りなのか
どうかが自明でないってことでは。

779 :デフォルトの名無しさん:2013/06/07(金) 23:51:10.00
それは単にうんこちゃんなそのコードがアレってだけでは…

780 :デフォルトの名無しさん:2013/06/07(金) 23:51:10.98
>>773
仕様的にはホワイトリスト方式にして、試して動いたら使用可能な型が増えていくようにすれば楽かもな。
動かない時は悪足掻かない。直ぐ諦めて別に一から書き起こそうぜw

実際どうなんだろうな?アッチはアッチで動く状態を維持したまま、コッチでも動くようにする努力と、もう
それはコッチでは動かないんだと割り切って一から書き起こす努力。
経験的に後者の方が低コストなんじゃねーか?って気がする。

781 :デフォルトの名無しさん:2013/06/08(土) 00:16:09.11
ありがちなのは、作ってみたらコッチの仕様はアッチの振る舞い
と違うことが後から判明して、かつコッチはコッチでその動作から
もはや変えられない場合で、
それって要はテンプレートで置換できないものをテンプレート
パラメータにしてたってことだから、
素直に特殊化しちゃった方が賢明だと思う。工数的にも。

後でリファクタリングできる場合は、アッチとコッチの共通I/Fを
改めて切り直した方が上手くいくことが多い気がする
どっちか保持したままやると、もう一方が無理しがちなので

782 :デフォルトの名無しさん:2013/06/08(土) 00:29:44.88
結論:

型をパラメータにとるテンプレートに関しては:
a-1: 任意の型については必要なメンバーやtypedefを備えているかどうかの話なので、ダミーの型一つに対してテストすればおけ
a-2: 特定の型について特別な要求があるのなら、その型については個別にテストする。
a-3: 任意の型について「あらゆる意味で正しい結果」を保証したい( >>755みたいなの)というのは、要求そのものが論理的に破綻しているので却下。そういうのは個々の呼び出し側でテストすべきで、テンプレート側で考慮すべきことではない

値をパラメータにとるテンプレートに関しては:
b-1: 非テンプレートなプログラムと同じ事なので、あえてテンプレートの文脈で語る意味がない
b-2: そもそもの話の発端はテンプレートのデバッグが困難でクソという話なので、fibとかみたいに積極的にテンプレートを活用しにいっているケースは微妙に話がずれてる

783 :デフォルトの名無しさん:2013/06/08(土) 00:38:39.01
>>764
テストを実際に行うかどうかはともかく
結果的に不具合が起きたとき、どっちが悪いのか

君は自分のコードを神のコードか何かのつもりにでもなっているのか
数学的な証明を、実務としてちゃんとやっているのか

やっていないとは言わない、本当にやっているのか

784 :デフォルトの名無しさん:2013/06/08(土) 01:06:18.17
>>782に補足しつつ思うところを書かせてもらうと

・試験の対象は最終的にはテンプレート(例:X<T>)ではなくあくまで
 そのインスタンス(例:X<int>, X<long>)
・これをテンプレートとパラメータの二つに分けて試験する
・テンプレートについてはパラメータの共通の振る舞いを決めて、それ
 だけを実装したモックを用意したテストを書く
・余裕があれば正しく振る舞わないモックも用意して異常系での動きも
 試験する、境界条件での動作も同様
・テンプレートパラメータに成りうる型については、上記の共通の振る
 舞いに従っているかどうかテストすれば十分
・上記で十分なはずだが、どうしても上司が五月蠅ければ、モック用の
 試験にも突っ込んでおく(案外バグが見つかる…)
・何がテンプレートパラメータに成りうる型かはいろいろ頑張って探す
・探しきれないほど汎用なテンプレートの場合、完全網羅は諦めて、
 仕様と睨めっこして現実的なおとしどころを決める

とかかなあ。「あらゆる型」とか「可能性のある型すべて」ではなくて
一定のタガにはめるのがコツ。C++14だとそこでconcept liteを使う。

785 :デフォルトの名無しさん:2013/06/08(土) 01:11:11.90
ゴミほど忍法レベル高いな。
でそのconcept liteとやらは
先日のドラフトの何章に書いてあんの?

786 :デフォルトの名無しさん:2013/06/08(土) 01:11:42.77
C++17じゃなくてC++14にコンセプト入るのか?

787 :デフォルトの名無しさん:2013/06/08(土) 01:18:51.40
あと>>750は良い指摘だと思う
確かにそれはテンプレート周りでよくあるタイプのバグで、
コンパイル時にはエラーにならないからテスト書かないと
発見できない
(この例そのものについては警告くらい出そうだが)

この例の場合は、暗黙にsizeof(T) < sizeof(int) && is_integral<T>
という振る舞いを仮定しているので、Tとして渡されうる型に
対してこの条件を満たすかテストすればよい
もっとも、そこまで分かっているならmplとenable_if使えば
コンパイルエラーにすることもできるけど

788 :デフォルトの名無しさん:2013/06/08(土) 01:19:33.20
>>786
あれ、17だっけ?まあ当面使えないからどっちでもいいよ

789 :デフォルトの名無しさん:2013/06/08(土) 01:29:23.73
>>783
そもそも任意の型に対して「あなたの期待する結果」を要求することは
論理的に不可能だといっている。

>>782でも言ったが、個別の型に対して特別な要求があるのなら、
それについてはテストすればいい。

floatやlong longについて、それに応じた「正しい」結果を出力するという
要件があるならそうすればいいだろう

現実的に考えれば、 >>755みたいなののに関しては
1. 特定のメンバー関数を備えたオブジェクトであれば、そのメンバーを呼んで文字列化する
2. プリミティブ型については個別の実装を用意する
というのが落とし所だろう。

その場合、プリミティブ型については網羅テストを行うべきだが、任意の型に関しては、単に必要なメソッドを備えたダミーの型を一つ用意して、それに対するテストを行えば用は済む。

そういうことを踏まえた上で、
>テンプレート絡みのは全てコンパイル時エラー
>ダミーのプレーンな型を一つ定義してテストすれば、テスト通った時点でテンプレートパラメータに何が要求されるか網羅できるはずだよね

と言ったんだ

790 :デフォルトの名無しさん:2013/06/08(土) 01:34:01.39
クソはKUSOらしくコテハンにしろよ
NG指定しづらいじゃないか

791 :デフォルトの名無しさん:2013/06/08(土) 01:35:24.46
assertとかで引数チェックしてるならテンプレート引数もチェックするように書くべきだとは思う

792 :デフォルトの名無しさん:2013/06/08(土) 04:43:47.57
structとclassには思想的な違いがある

structは単にデータを集約するしくみであって、どこまでいってもメンバの詳細に興味がある場面で使う
この場合の設計は、structを食わす手続きが簡明になるとか、実行効率が上がるとかいった基準で
まずstruct内部の詳細から始まる
伝統的な手続き型プログラミングとはそーいうものだし、

classはむしろ詳細を隠蔽して抽象化を果たすためのしくみであって、
classの設計は、他のクラスに対してどうみせかければシステム全体として無矛盾性とか一貫性を保てるか、という観点で
まず公開インターフェースの設計から始まる
臭いものをしばしば臭いまま放置して蓋だけをする

793 :デフォルトの名無しさん:2013/06/08(土) 04:56:05.24
そもそもC++はストロストラウップ先生の、
Simuraで書いた俺様の完璧なプログラムをまともな速度で動かせんのかヴォケ>計算機業界全体に対して:
という不純な雄叫びから始まり、
Simuraの特性と当時の計算機の中途半端なリソースとを整合させて便利かつ高速なオブジェクトコードを吐く言語を実現する
という中途半端な2目標同時追求を行った果てに生まれたものなので
いろいろ不純で中途半端なのは仕方が無い

794 :デフォルトの名無しさん:2013/06/08(土) 05:00:01.46
>>792
> structは単にデータを集約するしくみであって

その理論だと、 struct にメソッドとか作れなくていいはずだが?

795 :デフォルトの名無しさん:2013/06/08(土) 05:11:02.12
>>794
いやとにかくストロストルウップ先生はSimula(←>793のを訂正)で書いた
ご自身の完璧なプログラムを高速に動かすこと以外はわりとどうでもよかったので
C++の言語仕様は実装が出来る限り手を抜ける形で進めたとかそういうオチ
structはclassと共通化され、純粋なstructを残す手間を惜しんだ

ほかには、クラス内での定数の定義をenumハックで解決してるじゃん何か問題でも!?
と強硬に主張し、static const intの導入に抵抗したりもした

796 :デフォルトの名無しさん:2013/06/08(土) 05:40:14.60
>>747
あるとするなら<cstdio>じゃね

797 :デフォルトの名無しさん:2013/06/08(土) 06:32:30.52
非推奨だけどstdio.hもあるよ

798 :デフォルトの名無しさん:2013/06/08(土) 07:11:02.08
>>797
翡翠賞というのは、アナタの妄想では?

799 :デフォルトの名無しさん:2013/06/08(土) 07:45:35.82
ISO/IEC 14882:2011
D ¶2
These are deprecated features, where deprecated is defined as: Normative for the current edition of the Standard, but not guaranteed to be part of the Standard in future revisions.
D.5 ¶1
For compatibility with the C standard library and the C Unicode TR, the C++ standard library provides the 25 C headers, as shown in Table 154.
Table 154 - C headers 抜粋
<stdio.h>

800 :デフォルトの名無しさん:2013/06/08(土) 07:59:51.36
deprecatedの定義を噛みつかれてんだろ

801 :デフォルトの名無しさん:2013/06/08(土) 09:53:12.82
>>795
ハゲはもうC++から身を引いた方がいい
ウザすぎ

802 :デフォルトの名無しさん:2013/06/08(土) 10:13:03.33
そろそろハゲの呼び方を統一しようぜ
ビルヨネ/ビャーネ
ストラウス/ストロス/ストロヴス
トラップ/トルップ

803 :デフォルトの名無しさん:2013/06/08(土) 10:20:59.39
>>802
Wiipedia的にはビャーネ・ストロヴストルップがせいかいかと
http://www.stroustrup.com/pronounciation.wav

↑の音声でも言っているが、発音揺れは当人も承知のようだ

804 :デフォルトの名無しさん:2013/06/08(土) 11:03:31.67
Wikipediaはこの世で最も信用してはならないもの
まあハゲはハゲだ

805 :デフォルトの名無しさん:2013/06/08(土) 11:11:57.59
>>804
ググって出てきやすい、って意味で言ってるんじゃね?
「ストロストルウップ」でググっても全然引っかかってこないし
(引用符付きだと「"ストロストルウップ"との一致はありません。」、無しだと全然関係ないページが出てくる)

806 :デフォルトの名無しさん:2013/06/08(土) 11:20:56.07
C++14ではその読み方も正式に定義されるらしい

807 :デフォルトの名無しさん:2013/06/08(土) 12:01:15.90
「びよーん・すっぽすっぽ」と呼んでも怒られないどころか、
発音がうまいと褒められたとか何とか。

808 :デフォルトの名無しさん:2013/06/08(土) 12:02:42.91
じゃあビヨ〜ンでいいんじゃないかな

809 :デフォルトの名無しさん:2013/06/08(土) 12:10:39.28
o< ´・ω・` >oビローン

810 :デフォルトの名無しさん:2013/06/08(土) 12:17:38.85
びろーん
すっぽんぽん
ぷらぷら
これらが全てつながっているとしたら…

811 :デフォルトの名無しさん:2013/06/08(土) 13:09:03.75
>>810
頭皮を隠さないことも加えてあげてください

812 :デフォルトの名無しさん:2013/06/08(土) 14:01:25.31
ワロタw

813 :デフォルトの名無しさん:2013/06/08(土) 16:37:35.37
http://ja.forvo.com/word/bjarne_stroustrup/#da

814 :デフォルトの名無しさん:2013/06/09(日) 22:50:00.90
struct unko {
virtual ~unko() = 0;
};
struct X :unko{
~X(){}
};
int main(){X i;}
このプログラムがエラーになるんですが
何故なんでしょうか?

815 :デフォルトの名無しさん:2013/06/09(日) 23:02:27.98
純粋仮想デストラクタは定義も必要

816 :デフォルトの名無しさん:2013/06/09(日) 23:17:58.62
>>815
典型例なアスペ回答乙
エラーメッセージ見りゃわかるだろ

817 :デフォルトの名無しさん:2013/06/09(日) 23:22:47.23
まるで糞

818 :デフォルトの名無しさん:2013/06/09(日) 23:27:27.79
struct unko {
 virtual ~unko() = 0;
};
unko::~unko(){}

問題1 純粋仮想関数なのに実体を持つのは変だろ
問題2 実体が必要ならそもそも=0禁止にするのが筋じゃね?
問題3 virtual ~unko()=0{}がダメなのは何故?
問題4 何で実体が必要なの?
これらの疑問を816が解決します↓

819 :デフォルトの名無しさん:2013/06/09(日) 23:37:24.95
規格にはルールが書いてあるが
その理由までは書かれていない
規格に書いてないことは
憶測でしかないので答えられませぬ

820 :デフォルトの名無しさん:2013/06/09(日) 23:40:17.26
↑こいつアスペ

821 :デフォルトの名無しさん:2013/06/09(日) 23:47:31.81
では代わりに815が答えます↓

822 :デフォルトの名無しさん:2013/06/09(日) 23:57:14.06

コンストラクタ・デストラクタは継承関係に於いて特別な振る舞いをする
通常の関数と違い継承関係を舐めるように呼ぶので純粋仮想でも実体が必要


さあ?


文法的にアカンからじゃね?わからん


1の答えにがこれだったかもしれぬ

ちなみに、(デストラクタでない)純粋仮想関数でも実体を持つことは可能

823 :デフォルトの名無しさん:2013/06/10(月) 00:05:54.45

他に純粋仮想関数がないインターフェイスでもインターフェイスを明示できるから使ったらいいんじゃね?


オーバーライドの文法的にNG

か?

824 :デフォルトの名無しさん:2013/06/10(月) 00:15:36.30
結論 C++はクソ言語

825 :デフォルトの名無しさん:2013/06/10(月) 00:52:45.36
C++以上に強力な言語って考えられないが

826 :デフォルトの名無しさん:2013/06/10(月) 00:54:39.20
>他に純粋仮想関数がないインターフェイスでもインターフェイスを明示できるから使ったらいいんじゃね?
意味的におかしいって指摘に対して使ったらいいんじゃねとは
何言ってんだこのばかは

>オーバーライドの文法的にNG
オーバーライド?
function-definitionとmember-declaratorが排他的だからだろ
何言ってんだこのばかは

827 :デフォルトの名無しさん:2013/06/10(月) 00:58:38.32
>>825は糞と強力が相反するものと考えてるバカ

828 :デフォルトの名無しさん:2013/06/10(月) 01:00:13.76
つまり言い方的には
2
他に純粋仮想関数がないインターフェイスでもインターフェイスを明示したいとうC++ユーザーの要望に答えたんじゃね?



829 :デフォルトの名無しさん:2013/06/10(月) 01:04:19.24
インターフェースという概念が無い言語で
インターフェースであることを明示
という発想がおかしい
さてはJAVAドカタだな

830 :デフォルトの名無しさん:2013/06/10(月) 01:18:23.35
>問題1 純粋仮想関数なのに実体を持つのは変だろ
そうですね。規格策定の委員会メンバーはお疲れだったのでしょう。

>問題2 実体が必要ならそもそも=0禁止にするのが筋じゃね?
そうねすね。それが一番いいと思います。

>問題3 virtual ~unko()=0{}がダメなのは何故?
=0という珍妙な文法を考えた委員会のレベルを察して下さい。

>問題4 何で実体が必要なの?
>>822の通りです。

831 :デフォルトの名無しさん:2013/06/10(月) 01:36:06.81
>>830
珍妙ではあるけど関数のアドレスがNULL(0)であるって理由づけするとそこまで変でも…いや変か?

832 :デフォルトの名無しさん:2013/06/10(月) 01:41:17.42
意味的には純粋でも実装がそうでない
のなら virtual ~unko()=0{}
これを認めるよう構文を見直すか
デストラクタに限り=0は{}と同等
とすべきだと思うのだけれど

>>831
関数ポインターじゃなくて関数が
ゼロとはこれ如何に

833 :デフォルトの名無しさん:2013/06/10(月) 01:45:20.04
デストラクタを純粋仮想関数にすればインスタンスが作れなくなる
無意味って訳じゃない

834 :デフォルトの名無しさん:2013/06/10(月) 01:51:13.10
ただの一メンバーの=0が「関数定義が無い」
だけでなく、
「このクラスはインスタンスを作れない」って
別の意味でも使われているからこうなる。
class D = 0 : public B {};
こうすればよかった。

835 :デフォルトの名無しさん:2013/06/10(月) 07:08:09.72
クソ言語はどうしようもないなまったく

836 :デフォルトの名無しさん:2013/06/10(月) 07:40:36.74
abstract が予約語にあればこんなキモい文法には・・・

837 :デフォルトの名無しさん:2013/06/10(月) 09:55:56.12
予約語どんどん作れって禿に言ってみな

838 :デフォルトの名無しさん:2013/06/10(月) 12:52:39.19
言う先はハゲじゃなくてWG21だから
ハゲはもうすっこんでろ

839 :デフォルトの名無しさん:2013/06/10(月) 14:37:23.96
=0 つってんのに virtual が必要とか、もうやめれ
virtual でない = 0 とか、デフォで virtual になるクラスでも計画しているならともかく

840 :デフォルトの名無しさん:2013/06/10(月) 16:49:41.69
C++11でfinalとoverrideのキーワードを
追加したんだから同時にabstractも
追加すべきだった

841 :デフォルトの名無しさん:2013/06/10(月) 19:52:46.08
ひらめいた! 属性なら互換性も問題なくね?
[[abstract]] ←これ★
struct ConcreteUnko final : BaseUnko {
 [[abstract]] ←これ★
 [[noreturn]]
 inline virtual auto mf() const volatile && throw() -> void final override {
 }
};

842 :デフォルトの名無しさん:2013/06/10(月) 19:57:16.79
>>834
いいかもね
ついでにデフォがprivate継承ってのも廃止で

//private継承マジ死ねアホカス

843 :デフォルトの名無しさん:2013/06/10(月) 20:11:16.89
private継承はnoncopyableで使うから要る

844 :デフォルトの名無しさん:2013/06/10(月) 20:13:21.52
>>841
そこでJAVAのアノテーション地獄の再来です

>>842
メンバーをprivateってのは普通だけど、
親クラスをprivateってのは普通の使い方
じゃないよね まったく

>>843
デフォルトをpublicって話でしょ

845 :デフォルトの名無しさん:2013/06/10(月) 20:16:00.84
それ以上の怨念を感じた

846 :デフォルトの名無しさん:2013/06/10(月) 20:27:56.14
互換性を考えるとenum classのように
新しい宣言にするしかないだろうね。
キーワードの追加は難しいだろうから
使い回しでこんな感じ。
explicit class D : B, private noncopyable {
  int private_mem;
public:
  D() : private_mem() {}
};

847 :デフォルトの名無しさん:2013/06/10(月) 20:36:44.54
>>843
void operator=(kuso const &) = delete;
でいいじゃない

848 :デフォルトの名無しさん:2013/06/10(月) 20:40:18.06
オブジェクト指向原理主義者(≒Java厨)はよっぽどprivate継承が気に入らないみたいだな
使いまくってやるわw
超便利なんだなこれがw

849 :デフォルトの名無しさん:2013/06/10(月) 20:50:09.35
D言語ではpublic継承しかできなくなった

850 :デフォルトの名無しさん:2013/06/10(月) 20:52:18.13
>よっぽどprivate継承が気に入らない
意味的に最悪だね。
private継承を使う人は正直
頭からウジが湧いてるんじゃないかと思う

851 :デフォルトの名無しさん:2013/06/10(月) 21:04:09.01
>>848
細かいことだけどJAVA厨のオブジェクト指向は
一般のオブジェクト指向と意味が違うよ
教義は
・インターフェースこそオブジェクト指向
・つまりJavaが最高のオブジェクト指向
・デザパタ名の連呼で会話しようぜ
・C++とかスモールトークは
 インターフェースが無いから偽物

852 :デフォルトの名無しさん:2013/06/10(月) 21:10:42.14
多重継承があるから必要なのか

853 :デフォルトの名無しさん:2013/06/10(月) 21:11:39.59
>>850
仮想デストラクタでないクラスを拡張したい時に
private継承してpublicでusingしまくるという手は使える
例えばSTLのクラステンプレートを拡張するとか

854 :デフォルトの名無しさん:2013/06/10(月) 21:14:17.86
まさに糞コード量産機の発想!

855 :デフォルトの名無しさん:2013/06/10(月) 21:17:37.94
C++は型そのものをメタプログラミングで操作するようになって、純粋なC++コード(って言い方も違和感あるが)
は型なしに近い使用感を目指してるというか、上手く言えてないがそんな感じな感じがする感じ。
っていうか、テンプレート書く側の人と使う側の人の間に隔たりが出来てるというか出来つつあるというか・・・・・・

856 :デフォルトの名無しさん:2013/06/10(月) 21:26:27.52
今時天ぷらもあげられないカスグラマがいんのか?

857 :デフォルトの名無しさん:2013/06/10(月) 21:32:44.78
大量のKUSOが排泄されるのもC++の魅力のうち。

858 :デフォルトの名無しさん:2013/06/10(月) 21:36:31.84
javaならKUSOが生まれないとか都市伝説だろう
sacalaなら、Dならと色々出てくるがKUSOは生まれ続ける
言語の数だけ生まれてくる

859 :デフォルトの名無しさん:2013/06/10(月) 21:48:57.67
質問です
void operator delete(void*, size_t)って
何のためにあるのでしょうか?
operator new(size_t)に対応するのが
void operator delete(void*)
void operator delete(void*, size_t)
の両方っていうのがさっぱりわからんとです

860 :デフォルトの名無しさん:2013/06/10(月) 21:53:49.09
>>855
C++はオナニー専用言語
実務につかっちゃダメ
他人のオナニーなんか
見たくないだろう?

861 :デフォルトの名無しさん:2013/06/10(月) 21:55:01.06
>>859
アロケータを自分でマネージするための大人の都合ですQZがよくやってるね

862 :デフォルトの名無しさん:2013/06/10(月) 21:56:26.75
Qt使ってるぅ〜?

863 :デフォルトの名無しさん:2013/06/10(月) 22:00:15.10
operator new(size_t)
void operator delete(void*)
 →OK
operator new(size_t, X, Y)
void operator delete(void*, X, Y)
 →OK
operator new(size_t)
void operator delete(void*, size_t)
 →OK ???
operator new(size_t, size_t)
void operator delete(void*, size_t)
 →oops!
こんな糞言語仕様考えた奴は死んだ方がいい

864 :859:2013/06/10(月) 22:05:37.35
>>861
大人の都合ですか…
とりあえずおまじない程度に理解しておきます

865 :デフォルトの名無しさん:2013/06/10(月) 22:10:55.27
>void operator delete(void*, size_t)

二番目の引数は、何が渡されるん?

866 :デフォルトの名無しさん:2013/06/10(月) 22:30:52.06
>>830
=0文法を最初に考え付いて実装した上に
あまつさえ販売したのばボーランドの連中だったはず
中○正○郎は気の利いた文法じゃーんみたいなことを確か言っていたが

867 :デフォルトの名無しさん:2013/06/10(月) 22:46:02.89
蓬乱の連中も当時は優秀だったんだよ
=fuck みたいのも考えていたようで
auto配列の初期化みたいなKuSo600tツァーリボンバはともかく

868 :デフォルトの名無しさん:2013/06/10(月) 22:52:35.23
国際標準を定める委員会は自分たちの瑕疵を
ボーランドのせいにするようです
>>863もどこぞのベンダーの糞仕様なのでしょう

869 :デフォルトの名無しさん:2013/06/12(水) 19:54:41.35
hackだぜ

fuckだぜ
は雲泥の差がある

870 :デフォルトの名無しさん:2013/06/12(水) 20:08:12.19
皆が明らかにこれは変だろってところを修正した新しい言語はよ作れや
Dは失敗事例として諦めよう

871 :デフォルトの名無しさん:2013/06/12(水) 20:21:03.39
C#からガベコレ抜いたような言語になりそうだ

872 :デフォルトの名無しさん:2013/06/12(水) 20:30:40.91
それが正解な気がする

873 :デフォルトの名無しさん:2013/06/12(水) 20:40:29.34
例外さえ白紙撤回からやり直してくれれば俺は何も言うまい
生newは目をつぶってもいい

多重継承は諸説あるが俺は現状でよいと思う

874 :デフォルトの名無しさん:2013/06/12(水) 21:34:16.24
C++ほど見方次第でどうにでも化ける言語って無いみたいだな

875 :デフォルトの名無しさん:2013/06/12(水) 21:35:21.96
>>872
パフォーマンスという言葉を知らないのか?それとも処理が終わるまで何時間でも待てる
時間的余裕があるのか?

876 :デフォルトの名無しさん:2013/06/12(水) 21:58:44.08
>>875
時間あるよ
土地、家、十分な金が遺産で手に入ったから暇なんだ

877 :デフォルトの名無しさん:2013/06/12(水) 22:01:57.58
今時C#のパフォーマンスが遅いという老害

878 :デフォルトの名無しさん:2013/06/12(水) 22:43:44.15
C++使いが目障りな人が何故かこのスレに来て不快な思いをしてるようです。好んで

879 :デフォルトの名無しさん:2013/06/12(水) 22:44:15.48
マゾだね

880 :デフォルトの名無しさん:2013/06/12(水) 23:12:13.79
嫌いの度が過ぎると目が離せなくなるんだよ。
それはもう限りなく愛に近い憎しみというかw

881 :デフォルトの名無しさん:2013/06/12(水) 23:14:25.67
目障りなんて一言も言ってないのにせん妄まで始めたか

882 :デフォルトの名無しさん:2013/06/12(水) 23:33:58.63
>>881
お前、ちゃんと外出てるか?人間と会話してるのか?

883 :デフォルトの名無しさん:2013/06/12(水) 23:38:58.15
rubyのようにメンバ変数の先頭に@付けたい
あれすごいいいと思うのに、後発の言語も取り入れないな

884 :デフォルトの名無しさん:2013/06/12(水) 23:43:11.43
>>882
おまえ、ちゃんと C++ で発話しているか? マシンと話しているか?
人語には幻想修飾あるいは期待値参照とでも言うべき面倒なものが多くて混乱するのはわかるが

885 :デフォルトの名無しさん:2013/06/13(木) 00:29:18.26
ふむ

886 :デフォルトの名無しさん:2013/06/13(木) 00:31:09.45
ここでアスペという言葉を多用するコミュ障が出現する予感

887 :デフォルトの名無しさん:2013/06/13(木) 00:50:46.51
>>873
例外の何が気に入らないのか聞かせてもらおうか。

888 :デフォルトの名無しさん:2013/06/13(木) 01:25:23.68
テンプレートと格闘すること数週間、メタプログラミング楽しい。
なんだこれ?変に気持ちいいぞw
まあ他人の書いたテンプレートバリバリなコードは相変わらず読めないけどw

889 :デフォルトの名無しさん:2013/06/13(木) 06:36:53.45
coccinelle.lip6.fr/docs/main_grammar013.html
これあったらC++別にいらないし
Cで十分だな

890 :デフォルトの名無しさん:2013/06/13(木) 06:43:24.89
メタプロは頭のトレーニングにはなるが
自作ライブラリを活用する機会がそんなにあるかと言われるとそうでもない

891 :デフォルトの名無しさん:2013/06/13(木) 07:08:28.25
テンプレートは手抜きのための仕組み。型を明示せず機械任せにする。
JavascriptとかPHPとか動的プログラムでは標準的。

892 :デフォルトの名無しさん:2013/06/13(木) 07:29:50.22
マクロとかテンプレートとか、麻疹みたいなもんで、一度ははまる。

PL/1 は、プリプロセッサで if 文どころか for 文やサブルーチンまで使えたので、無茶苦茶凝れたのもいい思い出だ (w

893 :デフォルトの名無しさん:2013/06/13(木) 07:37:42.14
それいいな
構造化マクロを次の仕様に入れようぜ

void f() {
#define N 100
#begin
#define N 200
myputint(N); // 200
#end
myputint(N); // 100
}

894 :デフォルトの名無しさん:2013/06/13(木) 10:22:21.92
delete [] は配列のサイズが分らなくても開放できるのに
なぜ我々は配列の長さを整数型に保存して使用しなければならないのですか?

895 :デフォルトの名無しさん:2013/06/13(木) 10:32:18.10
vector使えハゲ

896 :デフォルトの名無しさん:2013/06/13(木) 11:56:26.70
>>887
嫌いなところが多すぎるから、ああ言ったんだが
たとえばRTTIがもれなく付いてくることとか

897 :デフォルトの名無しさん:2013/06/13(木) 12:39:46.69
>>895
vectorはクラス内部にsizeを保存して無いとでも?

898 :デフォルトの名無しさん:2013/06/13(木) 13:34:01.53
馬鹿か?

899 :デフォルトの名無しさん:2013/06/13(木) 13:40:43.31
配列newしたときコンパイラーはどっかにサイズを保存しているから
delete[]が出来るとおもうのがごく普通の考え方とおもうんですけど、
我々がそのサイズにアクセスできれば各自でサイズを保存するような
二度手間は必要なくなるとおもうんですけど・・・

900 :デフォルトの名無しさん:2013/06/13(木) 13:45:16.47
>>894
delete[]が必要とし、どこかから取得している情報は「配列のサイズ」じゃないからだよ
もっとも、デストラクタを実行する回数とか見てるとアホかと思うことはあるけどね

901 :デフォルトの名無しさん:2013/06/13(木) 14:30:13.59
>>899
ヒープのサイズを記憶してるのはOS
ヒープブロック全体のサイズを知りたいならOSに問い合わせればいい

902 :デフォルトの名無しさん:2013/06/13(木) 14:43:02.77
なるほど、C++言語のsize_ofがOSに問い合わせる機能を持ってないのがいけないのか。
なぜ実装しないのか、そこが知りたいと思うのは私だけだろうか・・・

903 :デフォルトの名無しさん:2013/06/13(木) 14:51:27.79
>>899
ある領域を解放したり、サイズを取得したりする方法は、アロケータの実装次第なわけで、
でもポインタからは、その領域を確保したのがnewなのか、mallocなのか、OSのネイティブAPIなのか、ユーザー定義のアロケータか、はたまたスタック領域のポインタなのか区別できない。

確保と解放については常に1セットで使え(mallocとfree、newとdelete)という運用で
この問題を解決しているわけだけど、サイズ取得関数にそれと同じことを要求するのは難しい。

それとも何とかしてポインタからアロケータを判別して、よきに計らえるようにするか?
ポインタは領域の「先頭」以外の任意の場所を指すことができるから、前後のデータからアロケータを判別することはできない。あくまでアドレスしか手がかりはない。
方法としては、アロケータが管理している領域をアドレスで検索かけて、ヒットしたらそのポインタはそのアロケータで確保されたものとみなして適切なサイズ取得関数を呼ぶということになるんじゃないだろうか。
コストが鬼のようにかかると思うけどな。

まぁ、今書いたことは全部オレの妄想だけどね

904 :デフォルトの名無しさん:2013/06/13(木) 14:54:19.92
malloc/freeに対応するサイズ取得関数、new/deleteに対応するサイズ取得関数、new[]/delete[]に対応するサイズ取得関数
をそれぞれ用意し、適切に使い分けるのはプログラマの責任、でいいんじゃね

905 :デフォルトの名無しさん:2013/06/13(木) 15:41:45.69
ヒープブロックの先頭かどうかの判断を言語機能としてどう実現するのか
アホ過ぎてヨダレ垂れたわ

906 :デフォルトの名無しさん:2013/06/13(木) 15:44:41.30
実装するならするで、そう難しくはないんだけどね
そんなアホなもん作って誰か喜ぶとは思えないし

907 :デフォルトの名無しさん:2013/06/13(木) 15:50:18.17
operator newの返す領域がどこから確保されたかは
コンパイラーは知らないんだから
ヒープサイズをOSに訊くとかあり得ん。
operator [] deleteの前に適切な回数だけ
デストラクターを呼ぶのを実現するには
newの返したアドレスを一覧管理してるか、
必用より多めなサイズをoperator newに要求
して管理情報を隠し持たせるしかないんじゃないの

908 :デフォルトの名無しさん:2013/06/13(木) 16:02:37.63
つまり一言で言うと D を使えってことだな

909 :デフォルトの名無しさん:2013/06/13(木) 16:47:10.14
>>903
>アロケータが管理している領域をアドレスで検索かけて
取得したメモリを分割して提供するアロケータとかあるから入れ子も考慮せにゃならんし、
あらかじめすべてのアロケータをサイズ取得関数に教えて置く必要もある。
…ダルいなぁ、これ。

910 :デフォルトの名無しさん:2013/06/13(木) 16:55:19.91
ここまで、delete[] operatorとoperator delete[]の
区別がついているのが>>899>>907だけ

911 :デフォルトの名無しさん:2013/06/13(木) 16:58:48.29
parse error と well-formed の区別がついてない人、そんなに多いか?

912 :デフォルトの名無しさん:2013/06/13(木) 17:08:18.63
>>910
で?

913 :KUSO KOTE:2013/06/13(木) 19:14:16.16
>>894
delete[]式がoperator delete[]を呼ぶ前に
適切な個数のデストラクターを呼び出すのは、
先頭要素の直前で配列要素数を覚えているから。
5.3.4p12
new T[5] results in a call of operator new[](sizeof(T)*5+x), and
Here, x and y are non-negative unspecified values representing array allocation overhead; the result of the
new-expression will be offset by this amount from the value returned by operator new[]

それを取得する機能が言語仕様に無いのが
何故かと訊かれると、それはわりませぬ。。

914 :デフォルトの名無しさん:2013/06/13(木) 19:31:24.35
適当ぶっこいてる奴らばっかだな!

配列 new の普通の実装では
配列の要素数を格納する領域を余分に確保して
その次の領域を返すんだよ。
ただし、デストラクタを呼ぶ必要のある型だけだけどな。

そういう実装である場合の動作例を挙げるとだな、
例えばデストラクタを持つクラス A の配列を new する事を考える
sizeof(A) が 8 とすると、new A[10] とすると 一見 80 バイトの領域を確保すると思われるんだが、
実は 88 バイトの領域が確保される。
その先頭 8 バイトに要素数である 10 を入れて、
残り 80 バイトの先頭のアドレスを new A[10] は返す。

delete[] では渡されたポインタの前にある要素数を取得して、
その数だけ逆順ループしてデストラクタを呼ぶ。

C++ の規格ではこの実装を行えるように、
配列 new を行った際に new の引数に渡される確保するメモリサイズは
sizeof(A) * 要素数でなく、更に +α があっても良いとしている。

operator new/delete をオーバーロードしてみると
こういう動きになっているのが分かるはずだ。
operator new に渡されるサイズは +α されてるし、
operator new が返すアドレスと new A[10] が返すアドレスにはズレがあるし、
operator delete に渡されるアドレスは operator new が返すアドレスに一致し、
delete[] に渡したアドレスとはズレがある。

要するに要素数を云々する部分は operator new/delete の外で行われ、
operator new/delete はただ言われたサイズでメモリを確保し、
渡されてきたメモリを開放すれば良い。

915 :デフォルトの名無しさん:2013/06/13(木) 19:34:06.68
ひとつ前のレスも読めない奴が
偉そうに

916 :デフォルトの名無しさん:2013/06/13(木) 19:35:00.12
デストラクタの有無で扱いが変わるのもやってみれば分かるはずだ
デストラクタが無い場合は、通常要素数は保存されない
保存しても意味が無いから。

new[] は確実に要素数を保存するわけじゃないから、
要素数を確実に取得する手段は存在しない。
だから自分で覚えておく必要がある。

917 :デフォルトの名無しさん:2013/06/13(木) 19:36:21.92
ひとつ前のレスも読めない奴が
偉そうに

918 :デフォルトの名無しさん:2013/06/13(木) 19:40:25.84
ひとつ前のレスも読めない奴が
偉そうに

919 :デフォルトの名無しさん:2013/06/13(木) 19:47:06.94
>new[] は確実に要素数を保存するわけじゃないから、
>要素数を確実に取得する手段は存在しない

なるほど勉強になった。ご苦労。

920 :デフォルトの名無しさん:2013/06/13(木) 19:50:43.08
>それを取得する機能が言語仕様に無いのが
>何故かと訊かれると、それはわりませぬ。。

なんてクソな事言ってるレスなんざ知らねえよ!

921 :デフォルトの名無しさん:2013/06/13(木) 20:03:27.23
クソクソ言う奴が糞の法則

922 :デフォルトの名無しさん:2013/06/13(木) 20:05:13.27
自己紹介乙

923 :デフォルトの名無しさん:2013/06/13(木) 20:08:05.58
わずか1レス、しかも空行を数えても4行の中で自己矛盾とはねえw

924 :デフォルトの名無しさん:2013/06/13(木) 21:03:18.21
おまえらよくそんなに勉強してるな
暇人とよんでやろう

925 :デフォルトの名無しさん:2013/06/13(木) 23:31:37.32
> ひとつ前のレスも読めない奴が偉そうに
時差レスの可能性も考慮できない脳味噌ならプログラミングなんてすべきじゃねーな、と横で見てて思った。

926 :デフォルトの名無しさん:2013/06/13(木) 23:34:21.31
レスの分量を見れば時差レスは明白なんだがね

927 :デフォルトの名無しさん:2013/06/13(木) 23:57:13.50
時差で自己フォロー乙

928 :デフォルトの名無しさん:2013/06/14(金) 00:18:25.57
>>914
おまえ何とか餃子の糞コテだろ?
1yスレから出てこないでください
いつも長文がうっとおしいです

929 :デフォルトの名無しさん:2013/06/14(金) 00:31:06.71
餃子食いたいな
今日の晩飯は餃子食うか
おすすめの餃子屋ある?
できればテイクアウトできるところがいいがイートインオンリーの店でも可能

930 :デフォルトの名無しさん:2013/06/14(金) 00:35:34.65
>>928
何で QZ でなく敢えて餃子と言ったのかは
知らんが、スルーしろやカス。

931 :デフォルトの名無しさん:2013/06/14(金) 07:30:41.97
>>928
俺はコテじゃないぞ

932 :片山博文MZパンク ◆0lBZNi.Q7evd :2013/06/14(金) 20:56:59.02
>>929
iタウンページで検索

933 :デフォルトの名無しさん:2013/06/14(金) 23:44:46.76
>sizeof(A) が 8 とすると、new A[10] とすると 一見 80 バイトの領域を確保すると思われるんだが、

どうみてもQZの文体でした

934 :デフォルトの名無しさん:2013/06/15(土) 01:58:28.85
>>913
達人プログラマが無駄を削ぎ落としたコードでメモリを直接見たり触ったり管理するというのがCの文化やがな
配列長を管理してくれるしくみが固定長/可変長をとわずのべつまくなく配列につくとか
そーいうセンスからすると余計な機能やがな

935 :デフォルトの名無しさん:2013/06/15(土) 02:03:31.27
つまらん・・

936 :デフォルトの名無しさん:2013/06/15(土) 05:54:08.01
>>934
D&E読めや
最初はC++でも個数を言語側で覚えておかずに delete[10] p; という風に
解放時にプログラマが個数を指定するようになっていた

しかしあまりにもエラーが多すぎるのであんたの言葉で言うと「Cの精神に反する」
かも知れないが個数を覚えておく形式に変わった

歴史を見て物を言えや

937 :デフォルトの名無しさん:2013/06/15(土) 06:13:02.83
削除にも個数書いた方がクールだよな

938 :デフォルトの名無しさん:2013/06/15(土) 06:19:18.02
>>936
それであんな文法なのか。
にしても、サイズを覚える仕様を配列時のみに限定する辺り、
Cの精神が完全に無視されたというわけでもなかったりするんかな。
…ってCのfreeも(配列長ではないがメモリサイズを)覚えとるやん!
Cの精神云々関係なく実装コストとミス対策がせめぎ合ってきた歴史、
と解釈することもできちゃうかもなぁ…

939 :デフォルトの名無しさん:2013/06/15(土) 08:35:05.61
何がCの精神なのかよく分からん
自前で覚えるのと比べりゃゼロオーバーヘッドだから問題ないだろ

940 :デフォルトの名無しさん:2013/06/15(土) 08:52:53.75
>>936
うぜー言語にデストラクタを導入したから自滅した、というだけであって
そのエピソードはCの文化云々とは関係ないだろ;

>>938
典型的なmalloc()/free()の実装ならメモリブロックのサイズ/sizeof(T)でTの配列の要素数がわかる
が、malloc()の実装方法の詳細まで規格で決まっているわけではないから
環境によってはdelete[]の導入のせいで空間的コストを追加で支払わされるケースがあるのかも試練、

941 :デフォルトの名無しさん:2013/06/15(土) 08:58:55.38
システム記述言語を、業務アプリに使うのが間違ってるだけ。
適材適所でやればいいよ。

942 :デフォルトの名無しさん:2013/06/15(土) 09:04:57.50
>>940
mallocって指定した以上のメモリを確保する実装でも別にいいんじゃねーの
メモリブロックのサイズから要素数求められんの?

943 :デフォルトの名無しさん:2013/06/15(土) 09:12:04.33
>>942
知らん普通はメモリ使用効率をとり、
 malloc()で指定したサイズ=確保されたメモリブロックのサイズ(管理用のヘッダは除く)
のはず
マルチコアのシステムだとメモリブロックがキャッシュラインサイズ(128 Byteとか)の境界に整列していた方が
良いかもしれん(実際_aligned_malloc()みたいなものもある)んおでそう単純にも遺憾かも試練、

944 :デフォルトの名無しさん:2013/06/15(土) 09:49:12.12
>>943
特定の境界にアラインされてないと char 配列以外で
パフォーマンス落ちたりCPUによっては例外出たりするから
メモリブロックを特定のバイト数単位で管理しているはずだと思う

945 :デフォルトの名無しさん:2013/06/15(土) 12:04:18.15
アロケーションの都合で大きめにとることがあるんだから
実際に必用なサイズを記憶する必用は発生することがある。
長さを覚えるための領域のサイズは
先頭要素の前になるだろうから、
そのために必用な最小のサイズの計算は
要素のアライメントの情報を持ってる
コンパイラでないと難しんでは。

946 :デフォルトの名無しさん:2013/06/15(土) 12:13:18.01
で alignof と alignas ができたわけだ

947 :デフォルトの名無しさん:2013/06/15(土) 12:48:41.94
>>944
ああ忘れてたわスマン

>>945
別に
そのシステムで整列に関して最も制限の強い型のサイズ(sizeof(double) == 8 Byte)とか)
の境界に整列させときさえすれば、整列に関しては無問題、
これはmalloc()を使うユーザープログラムのコンパイル時ではなくて、
malloc()のコンパイル時に決定できる
詳しくはK&R参照
キャッシュラインサイズで整列させないとまずいというのはパフォーマンスに関わる話

948 :デフォルトの名無しさん:2013/06/15(土) 12:52:50.43
そのシステムで最も制限がキツイ型を得るマクロは?

949 :デフォルトの名無しさん:2013/06/15(土) 13:17:59.39
>>947
>8 Byte)とか)の境界に整列させときさえすれば、整列に関しては無問題

4バイトですむ所も一律に8バイトに
すればokとかバカですか?

950 :デフォルトの名無しさん:2013/06/15(土) 13:23:52.70
何言ってんの?
mallocは何の型として使われるか分からないから
最大に合わせないとだめなんだぞ
operator new も同じ

951 :デフォルトの名無しさん:2013/06/15(土) 13:38:30.92
>>949
藻前は話を理解していない

>>950
だから、(環境によるが、典型的には)doubleで整列させとけばでおk
どんなサイズの構造体を作っても、開始アドレスを(環境によるが、例えば)8の倍数にしておけば
整列に関する問題は生じない

952 :デフォルトの名無しさん:2013/06/15(土) 14:02:23.40
__m128や__m256を考えると

953 :デフォルトの名無しさん:2013/06/15(土) 14:06:28.53
>>952
そういうレアケース(SIMD絡み)には_aligned_malloc()を使う
8バイトで済むところを毎回128バイト使っていると、>949に刺されっぞ

954 :デフォルトの名無しさん:2013/06/15(土) 14:14:58.84
まあねw

955 :デフォルトの名無しさん:2013/06/15(土) 17:59:47.50
そしてハブられる long double

956 :デフォルトの名無しさん:2013/06/15(土) 18:23:46.46
そう言えばそんな型あったね

957 :デフォルトの名無しさん:2013/06/15(土) 18:41:48.17
CPUの不動少数演算を使う限り、floatで事足りるんじゃ?

958 :デフォルトの名無しさん:2013/06/15(土) 18:42:18.46
×不動
○浮動

959 :デフォルトの名無しさん:2013/06/15(土) 18:54:03.18
GPUの、なら分かるが

960 :デフォルトの名無しさん:2013/06/15(土) 18:56:33.32
情報量が多くても誤差が小さくなるだけで無くならないからなあ

961 :デフォルトの名無しさん:2013/06/15(土) 19:03:12.31
アナログで精度の高い計算が出来れば良いのだが
アナログの方が精度が悪そうというのも

962 :デフォルトの名無しさん:2013/06/15(土) 19:15:04.74
高精度が欲しければ拡張ライブラリがあるし
アナログならオペアンプが腐るほど存在する

963 :デフォルトの名無しさん:2013/06/15(土) 19:35:16.40
オペアンプって計算に使えるもんなの

964 :デフォルトの名無しさん:2013/06/15(土) 19:48:27.95
>floatで事足りるんじゃ?
やりたいことにも依るけど
8バイト無いと精度が足りなくて
困ることは希によくある

965 :デフォルトの名無しさん:2013/06/15(土) 19:49:17.23
稀にっていうか、数値計算じゃざらだよ

966 :デフォルトの名無しさん:2013/06/15(土) 19:55:33.48
>>957
あんなに有効精度が小さい型なんてマジ勘弁w

967 :デフォルトの名無しさん:2013/06/15(土) 20:03:54.52
物理やると128bit欲しくなる事だってザラ

968 :デフォルトの名無しさん:2013/06/15(土) 20:07:03.81
単精度でことたりるなら、SIMDの並列度が倍になる

969 :デフォルトの名無しさん:2013/06/15(土) 20:09:14.01
>>963
電子式アナログコンピュータというものがあってだな…
現在でもアナログとデジタルの境界部分ではアナログコンピュータ的な処理も無いこたない

精度についてだがPCMオーディオで知っての通り、
民生品で固定桁24bit超えてくるからIEEE754の32bit floatでは有効桁が余裕で足りない。

970 :デフォルトの名無しさん:2013/06/15(土) 20:39:18.77
アナログでデジタル計算するわけじゃなくて、
数値をアナログで表現して、アナログのまま計算するって事だよ
アナログなら無理数も表せるという、そういう意味

971 :デフォルトの名無しさん:2013/06/15(土) 20:45:51.77
だんだん意味わかんなくなってきた
円周率や自然対数の底をアナログで欲しいのか?

それで1兆桁だか340澗桁だかの精度が欲しいのか?
ちなみに観測可能な宇宙に素粒子はおよそ何個有るか知ってるか?

たとえば 0.1 なら ratio<1,10> のような分数表現で誤差は避けられるが

972 :デフォルトの名無しさん:2013/06/15(土) 20:47:21.54
技術が進歩しすぎて、計測器が精度20桁になったりするから困る
ピコメートルとかフェムト秒とか、ほんと勘弁してください

973 :デフォルトの名無しさん:2013/06/15(土) 20:48:21.48
まあそういうこと
でも、アナログでやろうが誤差は入るんだろうし
そうなるとあまり意味は無いのかな

974 :デフォルトの名無しさん:2013/06/15(土) 21:06:00.87
アナログ2ちゃんねるにすれば複素数も計算できるね

975 :デフォルトの名無しさん:2013/06/15(土) 21:11:16.48
しかしアナログ値同士の計算は可能なのかが問題だ
足し算引き算はともかく、他は難しそう

976 :デフォルトの名無しさん:2013/06/15(土) 21:35:53.83
>>975
乗算回路とか積分回路とかとかいうのがあってだな……

977 :デフォルトの名無しさん:2013/06/15(土) 21:44:17.81
あ、そういうの要らないです

978 :デフォルトの名無しさん:2013/06/15(土) 21:51:30.15
>>976
おもしろいな
ハードの話はよく知らないから興味深い

979 :デフォルトの名無しさん:2013/06/15(土) 22:09:34.27
>>977
低脳なお前の話は聞いてない

980 :デフォルトの名無しさん:2013/06/15(土) 22:30:12.37
>>979
あ、スレ違いだから要らないです

981 :デフォルトの名無しさん:2013/06/15(土) 22:31:35.02
>>980
お前そのものがスレ違い

982 :デフォルトの名無しさん:2013/06/15(土) 22:31:57.36
まあオペアンプがスレ違いなのは確かだから何も言えないw

983 :デフォルトの名無しさん:2013/06/15(土) 22:32:54.47
一番の感心所は
物理シミュレーションをオペアンプで実行できるかどうか、だ
特に、多体問題を解決してくれるとなお良い

984 :デフォルトの名無しさん:2013/06/15(土) 22:34:10.48
>>983
あ、スレ違いと基地外は要らないです

985 :デフォルトの名無しさん:2013/06/15(土) 22:34:50.99
もう埋めに入ってんだからどうでもいいじゃん

986 :デフォルトの名無しさん:2013/06/15(土) 22:42:34.76
>>983
出来るよ
多粒子系を利用した多粒子系計算システムを組めばよい

987 :デフォルトの名無しさん:2013/06/15(土) 22:47:50.18
>>985
あ、そういうのも要らないです
スレ違いの分際で開き直るとか
サイテーですね

988 :デフォルトの名無しさん:2013/06/15(土) 22:50:59.33
>>986
実例とかあるかな

989 :デフォルトの名無しさん:2013/06/15(土) 22:58:49.43
>>988
続けんなよカス。

990 :デフォルトの名無しさん:2013/06/15(土) 23:13:03.98
産めましておめでとうございます

991 :デフォルトの名無しさん:2013/06/15(土) 23:13:32.70
せめて次スレ立てて

992 :デフォルトの名無しさん:2013/06/15(土) 23:15:22.30
>>991
ほい
C++相談室 part103
http://toro.2ch.net/test/read.cgi/tech/1371305675/

993 :デフォルトの名無しさん:2013/06/15(土) 23:17:12.68
>>992


994 :デフォルトの名無しさん:2013/06/15(土) 23:18:58.61
アナログコンピュータノOSヲカイハツシタイ

995 :デフォルトの名無しさん:2013/06/15(土) 23:19:28.78
次スレでは知られざるC++11の深層が
明らかになります

996 :デフォルトの名無しさん:2013/06/15(土) 23:28:16.07
to be continued...

997 :デフォルトの名無しさん:2013/06/15(土) 23:37:20.22
アナログマー

998 :デフォルトの名無しさん:2013/06/15(土) 23:42:05.91
東大のパソコンオタクといっしょにアナログパソコンを作りましょう

999 :デフォルトの名無しさん:2013/06/15(土) 23:46:22.79
>>998
基地外は去れ

1000 :デフォルトの名無しさん:2013/06/15(土) 23:46:51.60
>>1000なら糞コテ死滅

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

229 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)