■過去ログ置き場に戻る■ 1- 前250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

C++相談室 part14
751 名前:デフォルトの名無しさん :03/01/21 14:37
inがなにがしかのコンパイラ拡張のプロパティという可能性はありうるな。
この場合のinの実体はメソッドだ。

752 名前:デフォルトの名無しさん :03/01/21 14:50
struct {
 class {
  int data[10];
  public:
  int& operator [](int n) {
   if (n < 0 || (sizeof(data)/sizeof(data[0])) <= n) {
    throw なんちゃら_error();
   }
   return data[n];
  }
 } in;
} fftData;

753 名前:746 :03/01/21 15:01
thanx>>752
でも、operatorの文字は無いみたい。

http://sourceforge.net/project/showfiles.php?group_id=51043&release_id=134725
から拾いますた。


754 名前:デフォルトの名無しさん :03/01/21 18:24
fftDataは、inていう実数の配列を持っとるわけだが。

755 名前:746 :03/01/21 18:48
>>754
あ、本当ですね。有難うございました。

なんか、inという名前と標準入力で混乱してました。

756 名前:デフォルトの名無しさん :03/01/21 20:27
今さ、ふっと
「テンプレート使えば Power(べき乗)をコンパイル時に計算できるなぁ」と
思ったんだけど、なんかうまくいかない。

考えがうまくまとまってないんだけど、だれかアドバイスくんない?
以下、書きかけのコードね。
template <typename T, int X, int Y>
struct Power
{
public: enum
{
Value = Power<T, X, Y - 1>::Value * X;
};
};

template <typename T, int X>
struct Power<1>
{
public: enum
{
Value = X;
};
};
よろしくおながいします。

757 名前:デフォルトの名無しさん :03/01/21 20:43
>>756

template <int N>
struct Power {
enum { Value = Power<N - 1>::Value * N };
};

template <>
struct Power<1> {
enum { Value = 1 };
};

int main()
{
Power<10> p;

std::cout << p.Value << std::endl;
}

758 名前:デフォルトの名無しさん :03/01/21 21:01
前VCで再帰テンプレートやったら
あきまへんでー言うエラー吐かれた気が。
C++の規格ではどうなってるんでしょ?

759 名前:C++厨 :03/01/21 21:25
>あきまへんで

(*゚∀゚)=3
大阪まだ〜?

760 名前:デフォルトの名無しさん :03/01/21 21:46
>>756
ちょっと前にいろいろ作ったなぁ・・・。
最大公約数、最小公倍数、フィボナッチ数、log、順列、組合せ、etc. ...
もっと応用範囲はありそうだけど、ここよりはtemplate統合スレ向きの話題かも。

>>757
インスタンスつくらなくても、
std::cout << Power<10>::Value << std::endl;
でいける。

761 名前:756 :03/01/21 21:53
>>757
引数減ってるじゃん?っていうか、それは何を求めてるんですか?


762 名前:デフォルトの名無しさん :03/01/21 21:55
>>757
はべき乗ではなくて階乗を求めていると思われ。

763 名前:デフォルトの名無しさん :03/01/21 21:58
ワロタ

764 名前:デフォルトの名無しさん :03/01/21 22:00
べき乗ならこうでは?

template <int A, int N>
struct Power {
enum { Value = Power<A, N - 1>::Value * A };
};

template <int A>
struct Power <A, 1>{
enum { Value = A };
};

int main()
{
std::cout << Power<5, 3>::Value << std::endl;
}

765 名前:デフォルトの名無しさん :03/01/21 22:06
ちなみにこういうのはコンパイルが通らない。

template <typename T, T A, int N>
struct Power {
enum T { Value = Power<T, A, N - 1>::Value * A };
};

template <typename T, T A>
struct Power <T, A, 1>{
enum T { Value = A };
};

int main()
{
std::cout << Power<double, 5, 3>::Value << std::endl;
}

766 名前:デフォルトの名無しさん :03/01/21 22:13
>>765
enum T ってのは何か意味あんの?タグ名?

767 名前:デフォルトの名無しさん :03/01/21 22:15
どちらにしてもenumはdouble型にはならんわな。

768 名前:デフォルトの名無しさん :03/01/22 03:51
>>760
うぷキボソヌ

769 名前:デフォルトの名無しさん :03/01/22 14:58
情報系の人間ではないんですが、ソフトの改良をすることになり困っております。
処理した画像を連番で指定したフォルダに保存するようにしたいのです。
どのように考えればいいかだけでもご指導お願いします。

770 名前:デフォルトの名無しさん :03/01/22 15:31
>>769
画像を処理する→連番で指定したフォルダに保存

ってかんじでOKかい?

771 名前:C++厨 :03/01/22 15:35
for (uint i = 1; i < 10; ++i) {
&nsp;ostringstream os;
&nsp;os<<"hikky"<<i<<".jpg";
&nsp;ofstream fo(os.str().c_str(), std::ios::binary | std::ios::out);
&nsp;//君のofstreamに入りたいハァハァ...
}

みたいなのはどうでしょうか?

772 名前:C++厨 :03/01/22 15:37
ナンカチガウ(-_-)

773 名前:760 :03/01/22 15:48
>>768
>>760
> うぷキボソヌ
家帰らんとコヲド持ってこれん。
明日まで待ってくれ。

774 名前:デフォルトの名無しさん :03/01/22 15:52
>>771
&nbsp;

775 名前:デフォルトの名無しさん :03/01/22 16:07
例えば最大公約数なら

#include <iostream>

template <int M, int N>
struct GCD {
enum { Value = GCD<N, M % N>::Value };
};

template <int M>
struct GCD<M, 0> {
enum { Value = M };
};

int main()
{
std::cout << GCD<121, 77>::Value << std::endl;
}

776 名前:デフォルトの名無しさん :03/01/22 16:09
最大公約数を利用して最小公倍数を求める:

template <int M, int N>
struct LCM {
enum { Value = M * N / GCD<M, N>::Value };
}

777 名前:デフォルトの名無しさん :03/01/22 16:13
フィボナッチ数を求める:

#include <iostream>

template <int M>
struct Fibonacci {
enum { Value = Fibonacci<M - 2>::Value + Fibonacci<M - 1>::Value };
};

template <>
struct Fibonacci<0> {
enum { Value = 1 };
};

template <>
struct Fibonacci<1> {
enum { Value = 1 };
};

int main()
{
std::cout << Fibonacci<8>::Value << std::endl;
}

778 名前:デフォルトの名無しさん :03/01/22 16:15
順列とか組み合わせはどういう考え方で行くのかな・・・・・

779 名前:デフォルトの名無しさん :03/01/22 16:16
スマソ。フィボナッチ数を若干修正。

template <>
struct Fibonacci<1> {
enum { Value = 1 };
};

template <>
struct Fibonacci<2> {
enum { Value = 1 };
};

780 名前:デフォルトの名無しさん :03/01/22 16:25
アッカーマン関数

#include <iostream>

template <int M, int N>
struct Ackermann {
enum { Value = Ackermann<M - 1, Ackermann<M, N - 1>::Value>::Value };
};

template <int N>
struct Ackermann <0, N> {
enum { Value = N + 1 };
};

template <int M>
struct Ackermann <M, 0> {
enum { Value = Ackermann<M - 1, 1>::Value };
};

int main()
{
std::cout << Ackermann<3, 4>::Value << std::endl;
}

781 名前:デフォルトの名無しさん :03/01/22 16:30
こういうテンプレートプログラムを書いていると、感覚的にはPrologで
書くのとよく似ていると思うのは俺だけか?

782 名前:デフォルトの名無しさん :03/01/22 16:41
>>781
漏れは関数型言語(Haskellとか)で書いてるような気がしてくる。

783 名前:デフォルトの名無しさん :03/01/22 16:56
・・・と思ったら他の方がいろいろ書いてくれてますね。

>>778
残るは順列と組合せだけ。記憶を頼りに書いてみます。

#include <iostream>

// 順列
template<int M, int N> struct P {
  enum{ value = M * P<M - 1, N - 1>::value };
};

template<int M> struct P<M, 0> {
  enum{ value = 1 };
};

// 組合せ
template<int M, int N> struct C {
  enum{ value = C<M - 1, N>::value + C<M - 1, N - 1>::value };
};

template<int M> struct C<M, 0> {
  enum{ value = 1 };
};

template<int M> struct C<M, M> {
  enum{ value = 1 };
};

int main() {
  std::cout << P<5, 3>::value << ", " << C<5, 3>::value << std::endl;
}

784 名前:760 :03/01/22 16:59
スマソ>>783>>760です。
上のコードはg++ 3.2で通ることを確認・

785 名前:デフォルトの名無しさん :03/01/22 17:03
>>783>>784
ああなるほど、順列と組み合わせは、順列の数とnPr組み合わせの数nCrを
求めるだけなのか。
どうやって(1,2,3)のような表現をするのかと悩んでいますた。

786 名前:デフォルトの名無しさん :03/01/22 19:31
標準入出力が無いOSで、コンパイル通すためにダミークラス作ろうと思います。
std::cerr
みたいなのはネームスペースstdにcerrという変数かメソッド(どっち?)用意するとして、
std::cerr<<"realFF
みたいな標準入力受けたり出来ますか?

787 名前:ブラシさん :03/01/22 19:53
実行と終了を繰り返すと、OSがフリーズします。怪しい部分を書きます。
このソースでのブラシの使い方で問題点があったら指摘してください。

 case WM_RBUTTONDOWN:

  hDC = GetDC(hWnd);

  hBrush = CreateSolidBrush(255);
  rect.left = 10;
  rect.top = 10;
  FillRect(hDC, &rect, hBrush);
  DeleteObject(hBrush);

  hBrush = CreateSolidBrush(128);
  rect.left = 20;
  rect.top = 20;
  FillRect(hDC, &rect, hBrush);
  DeleteObject(hBrush);

  ReleaseDC(hWnd, hDC);

 break;

788 名前:デフォルトの名無しさん :03/01/22 20:53
>>787
ここじゃないと思うが・・

789 名前:誘導するのも面倒なので :03/01/22 20:59
>>787
rect.right と rect.bottom は初期化してますか?

790 名前:デフォルトの名無しさん :03/01/22 21:03
loki の SmallObject を試してみたら
標準のアロケータより遅い。圧倒的に遅い。

みんなのところは本当に早くなってる?
ちなみに VC6Std と BCC5.5 と gcc-2.91.57 で試したが
全部標準のアロケータの倍近く時間がかかってるみたい。

791 名前:790 :03/01/22 21:04
ちなみに ThreadingModell は外した状態ね。
シングルスレッド同士のガチンコ対決だけど遅いのです。

792 名前:デフォルトの名無しさん :03/01/22 21:21
そりゃシングルスレッドだったら標準のが一番はやかろーもん

793 名前:デフォルトの名無しさん :03/01/22 21:26
>>792
malloc(), free() と比較すると、そうとも言えんよ。STL のアロケータだと、最初から
かなりキッチリ最適化されてるヤツが多いけど。

>>791
比較環境が良く分からん…

794 名前:デフォルトの名無しさん :03/01/22 22:21
C++始めたばかりなんですがクラスがいまいち理解できません。
クラスを詳しく説明してるサイトはありますでしょうか?

795 名前:デフォルトの名無しさん :03/01/22 22:25
ここにあるような、高度なテンプレートの使い方を解説しているサイトはありますか?

796 名前:デフォルトの名無しさん :03/01/22 22:26
>>794
http://www.em-sphere.com/rule/class.htm

797 名前:794 :03/01/22 22:29
>>796
RPG系はあまり好きじゃないんで、すいません

798 名前:デフォルトの名無しさん :03/01/22 23:00
>>795
そんなに高度でもないと思うけど・・・・・
こちらの方が高度かも

http://pc3.2ch.net/test/read.cgi/tech/1037795348/l50

799 名前:デフォルトの名無しさん :03/01/22 23:48
>>796
なんでやねん ( ´∀)fつ

800 名前:デフォルトの名無しさん :03/01/22 23:52
>>795
金を払って書籍「Generic Programming」と「Modern C++ Design」でも読むのが近道。


801 名前:デフォルトの名無しさん :03/01/22 23:57
>>800
ありがとう。

802 名前:ブラシさん :03/01/23 00:43
>>788,789
書いてなかった rect.right と rect.bottom はまともな数字が入っています。
別の部分でのバグのようなので、他を探してみます。
ありがとうございました。
SelectObjectが必要と言われるかもしれないと思っていました。

803 名前:769 :03/01/23 00:45
>770
現在のプログラムでは、撮影して画像処理した後に自分で名前を付けてBMP形式で保存するようになっています。
それを何とか連番で自動保存したいのです。

804 名前:デフォルトの名無しさん :03/01/23 00:57
throwがある関数は必ずtry{}でくくらないと駄目なんでしょうか?
例外を捕捉しなくても良いときもあるのですが、
今はそんなときにもtry,catchをしてます。
これは無駄なような気がしているのですが…

805 名前:デフォルトの名無しさん :03/01/23 00:59
>>804
補足しなくても良いときがあるならくくらなくて良いでしょ

806 名前:756 :03/01/23 01:04
みんなありがとん。
<ストライク>パクらせて</ストライク>参考にさせてもらいました。

807 名前:ブラシさん :03/01/23 01:10
オーバーフローの問題。
型を超える数字計算は、計算の途中で型を超えても、
型に納まる範囲内の結果は正常に得ることができるのか

例えば、クリックするたびに、3の累乗の1の位の値を
表示するというプログラム。
3, 9, 7, 1 ............

static BYTE byte = 3;
char buf[10];

 case WM_LBUTTONDOWN:
  wsprintf(buf, "%u", byte);
  MessageBox(NULL, buf, "", MB_OK);
  byte*=7;
  break;

これは byte が255を越えてからも正しい結果を得られるんでしょうか?

808 名前:804 :03/01/23 01:11
>>805
そうすると、プログラムは終了してしまいますよね?
…私のthrowの使い方間違ってるのかな…?

例えば、
mallocでメモリ確保失敗してもNULLが返るだけですが、
newだと例外が発生するのでtry,catchしないと終了してしまうのではないかなあ、と。

809 名前:デフォルトの名無しさん :03/01/23 01:17
>>808
その通りです。
例外が発生してcatchしないとunexpected()が呼び出されて
異常終了します。

810 名前:デフォルトの名無しさん :03/01/23 01:17
>>808
間違ってない。
ってゆーかどういう動作を期待してるわけ?
newの失敗を無視してどうやってプログラムを続けることができるだろうか?
アクセス違反で即アボンじゃん

811 名前:768 :03/01/23 01:28
>>760をぉ、色々サンクスコ。家帰ってまた何かあったらヨロシコ。

812 名前:808 :03/01/23 03:31
>>809-810
返答ありがとうございます。
Cから移ってきたばかりなので、C++の作法がまだよくわかってないみたいです…

>>808では、例えでnewを出しただけでして、
実際は自作の関数にthrowを導入することを考えてました。

少し調べてみたのですが、BCBやVC++にはnew(nothrow)という
例外出さないnewもあるみたいですね。
こういうことをやりたかったのですが、ヘッダファイルを見る限り
今の私には手に負えそうに無いです…
もう少しC++の勉強してからまたチャレンジしたいと思います。

ありがとうございました。

813 名前:デフォルトの名無しさん :03/01/23 03:50
>>807
オーバーフローすると正確な値は得られんよ。
例えば4ビットのコンピュータで8があるとする。
1000
4倍すると
100000
しかし、4ビットだから右の0000しか得られない。
8の4倍と0の区別ができないから。

814 名前:デフォルトの名無しさん :03/01/23 04:05
オーバーフローは例外でトラップできないからチェックするには計算のたびに
いちいちキャリーフラグ調べないといけないんだよな。 めんどくさ。

815 名前:デフォルトの名無しさん :03/01/23 04:43
>>813
> 型に納まる範囲内の結果は正常に得ることができるのか
ということだから、>>813 の形だと「できる」ってことになるね。

でも、これってどんな CPU 、どんなコンパイラを使っても
そうなるって保証されてることなのかな?
足し算引き算は大抵大丈夫だと思うけど、掛け算はどうなの?

816 名前:レゴ :03/01/23 04:45
あちらの方から飛んで来ました。
実行結果をファイルに出力するやり方を教えて欲しいです。
自分でずっとやってるんですが、中々うまくいきません。

817 名前:デフォルトの名無しさん :03/01/23 04:47
計算の途中ではいったんintに拡張されてその後元の型に押し込められる・・・はず

818 名前:レゴ :03/01/23 04:47
#include <iostream.h>
#include<stdio.h>

void main()
{
FILE *fp,*fc;
fp=fopen("素数−実行結果.txt","w");
int i, j ,f,n=1000,c=0;
// 1から1000までの数の素数を求める
// i, jはループ変数
// fは一回でも割り切れたら1。
// 一度も割り切れなかったら0。
for(i = 2; i <= n; i++) // i(==2,3,4,..,1000)について調べる。
{
f = 0;
for(j = 2; j < i; j++) // j(==2,3,...,i)で割ってみる。
{
if(i % j == 0) // あるjで割り切れたらfは1。
f = 1;
}
if(f == 0){// iを割り切るjがなかった場合
cout << i << "は素数です。" << endl;
c++;
}
}
printf("%d個です。",c);
fc=fclose("素数−実行結果.txt","w");
}
ここから、どう直していけば良いのか分からないんです。

819 名前:デフォルトの名無しさん :03/01/23 04:49
>>818
宿題スレ行け。つーか、どう直すも一から書き直せって感じだが。

820 名前:レゴ :03/01/23 04:49
817>>
はい。何か、エラーが出ました。
変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。って・・・

821 名前:デフォルトの名無しさん :03/01/23 04:51
>>818
予想以上だな・・・
とりあえずこっち来たってことはC++風の書き方がしたいわけだな?

822 名前:レゴ :03/01/23 04:53
でも、一応
#include <iostream.h>
#include<stdio.h>

void main()
{
int i, j ,f,n=1000,c=0;
// 1から1000までの数の素数を求める
// i, jはループ変数
// fは一回でも割り切れたら1。
// 一度も割り切れなかったら0。
for(i = 2; i <= n; i++) // i(==2,3,4,..,1000)について調べる。
{
f = 0;
for(j = 2; j < i; j++) // j(==2,3,...,i)で割ってみる。
{
if(i % j == 0) // あるjで割り切れたらfは1。
f = 1;
}
if(f == 0){// iを割り切るjがなかった場合
cout << i << "は素数です。" << endl;
c++;
}
}
printf("%d個です。",c);
}
だけなら、普通に動くんですよ☆

823 名前:デフォルトの名無しさん :03/01/23 04:54
プロcなんてしらんが、まずC言語というのでやってみたらどうだ?

824 名前:レゴ :03/01/23 04:58
ファイル名がcppなだけで、
殆ど、C言語で書いてるんだと思います。
あんまし理解してないので、今死でやってたんですけど。

825 名前:レゴ :03/01/23 05:00
今あるプログラムを出来るだけ形を残しつつ、
テキストファイルに出力出来るようにしたいんです。


826 名前:デフォルトの名無しさん :03/01/23 05:00
とりあえず
822の1行目を
#include <iostream.h>

#include <fstream.h>

に直し、
void main()
{
の次の行に
ofstream cout( "素数−実行結果.txt" );

を挿入するだけで君の期待する物は得られる

827 名前:デフォルトの名無しさん :03/01/23 05:05
>>826
えーそうなのー?簡単だね。
>>825
多分だけど時間がありそうだから、「C言語 fopen」とかで検索して
関数の使い方を調べてみたらどう?
そこまで組めたならチョコっと調べたら出来ると思うんだけどなー

828 名前:レゴ :03/01/23 05:07
凄いです!
coutの部分が全てファイルに出力されてました。
どうしてそんなに分かるんですかぁ〜?凄いですねぇ〜。

後、最後の printf("%d個です。",c);
という部分も結果としてテキストへ出したいのですが、
ofstream printf( "素数−実行結果.txt");
って書けば良いんですかね?


829 名前:デフォルトの名無しさん :03/01/23 05:11
>>828
ちゃうちゃう
cout に出力してるところと同じ方法で出力すれば良い
上の方で
cout << i << "は素数です。" << endl;
とやっているのだから、
同じように
cout <<*************(宿題)****************

しかしその分だとC++どころかCの文法もあいまいなようだし、
なぜcout << で文章が出力されるのかもわかってないっしょ?
そのままだと今後厳しいだろうからちゃんと入門書読んどいたほうが良いよ

830 名前:レゴ :03/01/23 05:18
はぅ〜
頑張ります☆

831 名前:レゴ :03/01/23 05:20
出来ましたぁ〜!
めっちゃ感動です!!!

832 名前:デフォルトの名無しさん :03/01/23 05:21
壮大なネタだったな

833 名前:レゴ :03/01/23 05:23
#include <fstream.h>
#include<stdio.h>

void main()
{
ofstream cout( "素数−実行結果.txt" );
int i, j ,f,n=1000,c=0;
// 1から1000までの数の素数を求める
// i, jはループ変数
// fは一回でも割り切れたら1。
// 一度も割り切れなかったら0。
for(i = 2; i <= n; i++) // i(==2,3,4,..,1000)について調べる。
{
f = 0;
for(j = 2; j < i; j++) // j(==2,3,...,i)で割ってみる。
{
if(i % j == 0) // あるjで割り切れたらfは1。
f = 1;
}
if(f == 0){// iを割り切るjがなかった場合
cout << i << "は素数です。" << endl;
c++;
}
}

cout << "素数は、" << c << "個です。" << endl;
}
こんな感じです。
本当にありがとう御座いました。
本当に感謝してます☆ありがとう御座いました。

834 名前:デフォルトの名無しさん :03/01/23 05:30
>>833
(*⌒ー')ノやったね♪
>>829
C++には便利な関数あるのね。勉強になった。 

835 名前:レゴ :03/01/23 05:32
ネタって・・・、
こっちは、訳分かんなくて、必死だったんですよぉ。
色々、ありがとう御座いました。助かりました。

836 名前:デフォルトの名無しさん :03/01/23 05:35
結局coutのままか…

837 名前:デフォルトの名無しさん :03/01/23 05:36
そういえば前sendmail?が判らないって駄々こねてた人がいたんね。

838 名前:レゴ :03/01/23 05:41
今から、爆睡したいトコなんですが、
他の課題が在るので、そっち頑張ります。
また来た時は、宜しく御願いします。
御休み為さいです☆☆

839 名前:デフォルトの名無しさん :03/01/23 06:28
もう来なくていいよ(・ε・)

840 名前:デフォルトの名無しさん :03/01/23 07:00
そういえばC++を勉強し始めた頃はcoutが出力を行っているんだと思っていた。
coutはCのstdoutみたいなもので、出力を行っているのは<<なんだよな。

841 名前:デフォルトの名無しさん :03/01/23 07:07
>>840微妙

842 名前:デフォルトの名無しさん :03/01/23 07:58
>>840美乳

843 名前:デフォルトの名無しさん :03/01/23 08:05
>>840陰毛

844 名前:デフォルトの名無しさん :03/01/23 08:06
>>840微尿

845 名前:デフォルトの名無しさん :03/01/23 09:00
>>840飲尿

846 名前:デフォルトの名無しさん :03/01/23 09:02
>>840美称


847 名前:ブラシさん :03/01/23 09:41
>>813,814
ありがとうございます。キャリーフラグはアセンブラでないと無理みたいですね。

848 名前:ageMAN :03/01/23 10:00
ファイルをドロップした時、ドロップされたウインドウを一番手前に
持ってくるには特殊な処理が必要だと思うけど、そういうすごいテクニックを
やってるソースはどこかにないかな?

849 名前:デフォルトの名無しさん :03/01/23 10:02
>>848
別にすごくないよ。

850 名前:デフォルトの名無しさん :03/01/23 11:05
>>レゴ
 ちゃんと勉強しろ…っていいたくなる人だね

851 名前:デフォルトの名無しさん :03/01/23 11:12
>>790
亀レスだが、
Loki のスモールオブジェクトは
VC++.NET でリリースビルドすると、標準 new よりやや速くなる。



852 名前:840 :03/01/23 11:24
>>842-846
なんなんだよあんたたちは(T_T)


853 名前:デフォルトの名無しさん :03/01/23 14:35
>>852微妙

854 名前:デフォルトの名無しさん :03/01/23 14:52
>>852
美乳

855 名前:デフォルトの名無しさん :03/01/23 15:33
>>852陰毛

856 名前:デフォルトの名無しさん :03/01/23 15:59
fstreamでテキストファイルを開いてstring型変数に
行を読み込む処理はどうやればいいですか?
f>>s;とやっても行の途中までしか読み込めません。

857 名前:デフォルトの名無しさん :03/01/23 16:05
>>856
std::getline(f, s, '\n');

858 名前:C++厨 :03/01/23 16:05
std::getline(f, s);

とかで、どうよ。

859 名前:デフォルトの名無しさん :03/01/23 16:07
>>856
やっぱり
std::getline(f, s); でいいや。

860 名前:C++厨 :03/01/23 16:12
( ゚∀゚ )ぱぱぱぱ〜ん
ぱぱぱぱ〜ん
ぱぱぱぱ、ぱぱぱ〜
ぱぱぱぱ、ぱぱぱ〜
I love you forever
I'll want you to fuck me

ついに俺もケコーンの時期が北か(*゚∀゚)
>>857-858ハァハアx

861 名前:デフォルトの名無しさん :03/01/23 16:16
>>860
C++の標準ライブラリを理解している人が増えてきてうれしいよ。

862 名前:856 :03/01/23 16:22
>>857-858
ありがとうございます。見落としていました。
ifstream::open/getにstringが渡せないのは不便ですが
char*/string両方サポートするのは面倒ということなんでしょうか。

863 名前:デフォルトの名無しさん :03/01/23 16:30
>>862
面倒というより、開発してきた経緯があって、多分別々のスタッフが
担当していたので整合が取れてないだけの話では?C++のライブラリ
にはそういう面がいっぱいある。

864 名前:デフォルトの名無しさん :03/01/23 18:14
basic_stringはSTLだがiostreamはSTLじゃない
元々別のライブラリだったものを同じstdネームスペースに突っ込んでるだけ

865 名前:デフォルトの名無しさん :03/01/23 18:25
basic_stringもSTL由来じゃないだろ。

866 名前:山崎渉 :03/01/23 20:00
(^^)

867 名前:デフォルトの名無しさん :03/01/23 20:14
        iostream, ... : C++ 標準ヘッダ
                ↓
vector, list, ... : STL → std ← char_trait : basic_string, ...

868 名前:デフォルトの名無しさん :03/01/23 20:32
おまいら
using namespace std;
はもちろんデフォだよな?

869 名前:デフォルトの名無しさん :03/01/23 20:33
>>868
付けてません。

870 名前:デフォルトの名無しさん :03/01/23 20:37
>>868
付けてません。

871 名前:デフォルトの名無しさん :03/01/23 20:55
>>868
まさか。*.cpp 内で

using std::vector;

とか並べることはあるが。

872 名前:デフォルトの名無しさん :03/01/23 20:57
>>871
同意。

873 名前:デフォルトの名無しさん :03/01/23 22:37
>>868
氏ね

874 名前:868 :03/01/23 23:37
何で付けないんだよ。ブルッてんのか?
なんも実害ないだろ。

875 名前:デフォルトの名無しさん :03/01/23 23:39
名前空間の外はできるだけ綺麗にしておきたい。

876 名前:デフォルトの名無しさん :03/01/23 23:44
使わないなら using namespace って何のためにあるんだ?

877 名前:デフォルトの名無しさん :03/01/23 23:47
宗教戦争

878 名前:デフォルトの名無しさん :03/01/23 23:50
>>876
初心者&なまぐさ坊主のため。

879 名前:474 :03/01/23 23:52
>>876
ライブラリのサンプルコードをすっきりさせるため。

880 名前:デフォルトの名無しさん :03/01/23 23:53
>>874
> なんも実害ないだろ。
いや using namespace std; するとコンパイルが通らなくなるソースは、すぐに
書けるだろ。

> 使わないなら using namespace って何のためにあるんだ?
歴史的事情

881 名前:デフォルトの名無しさん :03/01/24 00:02
using〜 を
ヘッダに書く奴は馬鹿。
ソースでグローバルに書くのは好きずき。
関数の中で書くのはデフォ。

882 名前:876 :03/01/24 00:08
>>877
一億光年くらい納得した。

883 名前:デフォルトの名無しさん :03/01/24 00:09
>>880
書こうと思えば書けるが、標準で使われてしまっている名前はなるべく避けるのが
常識じゃないか?
とすれば、名前の衝突はそうそう発生しない。

884 名前:デフォルトの名無しさん :03/01/24 00:10
おいおい、ここで宗教戦争始めるのか?
なら ↓ こっち逝ってくれ。
http://pc3.2ch.net/test/read.cgi/tech/1031355713/l50

885 名前:デフォルトの名無しさん :03/01/24 00:14
うちの会社はstd::を付ける事にきまってるので、using使ったソースを
納入した場合全部書き直しとなります。

886 名前:デフォルトの名無しさん :03/01/24 01:01
それはマ板のネタ

887 名前:デフォルトの名無しさん :03/01/24 01:16
ある保守を任されたソースに書かれてることについて疑問があるのですが、
クラス内においてメンバ関数の処理を記述してあるようなもの。
これの宣言にinlineがついているのですが、これってなにか意味があるんでしょうか?
クラス内のメンバ関数宣言にinlineがつくというのは、クラス定義の
外側で関数定義するときにinlineを省略できる。このためだけに使うものだと
思っていたのですが、他になにか理由があるのでしょうか?

888 名前:デフォルトの名無しさん :03/01/24 01:19
しばらくするとstd::を書くのが快感になってくるんです

889 名前:デフォルトの名無しさん :03/01/24 01:21
>>887
> 外側で関数定義するときにinlineを省略できる

省略できたっけ?

890 名前:デフォルトの名無しさん :03/01/24 01:26
>>889
中で関数定義する時にinlineを省略できると間違えたと思われ。

891 名前:デフォルトの名無しさん :03/01/24 01:26
>>888
禿同

892 名前:デフォルトの名無しさん :03/01/24 01:29
>>888
同じく。時々手が震えて::が;;になったり:::になったりするのがまたイイ。

893 名前:デフォルトの名無しさん :03/01/24 01:29
class CLS{
inline char get();
};
char CLS::get(){
こういう書き方ができるとC++Primerには書いてあるんだけど・・・

894 名前:デフォルトの名無しさん :03/01/24 01:33
>>893
それはインラインにならないんじゃ・・・・

895 名前:デフォルトの名無しさん :03/01/24 01:36
>>893
げっ、こういう書き方も有効みたいだ。初めて知ったよ。
規格書ではどの辺を読めばいいのだろうか。

896 名前:デフォルトの名無しさん :03/01/24 01:42
で、、、なにか理由があるんでしょうか?

897 名前:デフォルトの名無しさん :03/01/24 01:46
>>896
普通外部で関数を定義するとinlineにならないが、クラス宣言の所で
inlineと書いておくと、外で関数を定義してもちゃんとinlineになるみたいだ。

規格書読んだけど目がちかちかしてどこに書いてあるのかわからなかった。
識者のレスをきぼん。

898 名前:デフォルトの名無しさん :03/01/24 01:50
>>897
クラス定義の中でメンバ関数の処理が書いてあるということは
inlineキーワードは付いても付いてなくても無条件でinlineに
なるから、意味ないですよね?ネームスペーススコープで
メンバ関数を定義するときは上の例みたいにいろいろと
あるみたいですが。。。

899 名前:デフォルトの名無しさん :03/01/24 01:52
それともinline関数にはちゃんとキーワードを付けた方が
コードが見やすいから、これをコーディング規約にしてしまおう
なんてのがあったのかな。その辺のドキュメントが残ってないから
ちょっと分からないのでなんともいえないですけどね。

900 名前:デフォルトの名無しさん :03/01/24 01:53
>>897 9.3.3

901 名前:デフォルトの名無しさん :03/01/24 02:00
>>898
class内部でメンバ関数の定義を書いてしまった場合は、そのメンバ関数
はinlineになりますが、class外部でメンバ関数の定義を書いた場合、その
関数がinlineになるかどうかは、メンバ関数の宣言の所にinlineと書いて
あるかどうかで決まるようです。

>>900
thanks.

902 名前:デフォルトの名無しさん :03/01/24 02:02
>>898
そのため、クラスの内部に定義を書こうと、外部に書こうと常にinlineに
なるように、クラス内部でメンバ関数全部にinlineと書くことに決めてある
んじゃないでしょうか。

903 名前:デフォルトの名無しさん :03/01/24 02:20
>>902
やっぱりコーディング規約的な話ですかね。
関数の処理実体があるかどうかなんて一目瞭然だと
思うのだけど、C屋さんには紛らわしかったりしたのかな。
とりあえず、このことは忘れて作業に戻ります。
みなさんどうもでした。

904 名前:デフォルトの名無しさん :03/01/24 02:26
903です902さんのよく読んでませんでした。
クラス定義においてinline関数にはinlineキーワードを
付けることを必須と決めておけば、メンバ関数を外に
出したときにinlineキーワードを付け忘れてもinline化
されるという意味ですね。この規則ってC++的常識から見て
どうなんでしょうかね。

905 名前:デフォルトの名無しさん :03/01/24 02:29
>>904
どうなんだろ
俺はコンパイラの最適化を盲信してinlineはどこにも使わないけどな

906 名前:デフォルトの名無しさん :03/01/24 02:45
>>904
>>900さんの規格書の項目を読んでみられるといいよ(英文だけど)。
拙い和訳をすれば、「メンバ関数をinline化するにははクラスの宣言部に
inlineと書いても、定義部でinlineと書いてもよい。」のような意味になると
思います。

規格書にちゃんと書いてあるので、文法的にも正しいはずです。
というか俺もこれから使わせてもらいますね。

907 名前:デフォルトの名無しさん :03/01/24 08:42
次スレのテンプレ、いいの作ったからスレ立ては>>907に任しとき

908 名前:デフォルトの名無しさん :03/01/24 09:40
>>883
常識、で済めば話は簡単なんだがな…

909 名前:デフォルトの名無しさん :03/01/24 12:58
コンストラクタの暗黙の変換は役に立たないのか?

#include<iostream>
using namespace std;

struct A
{
A(int){}
};

void F(double i)
{
std::cout << "F(double)";
}

void F(A a)
{
std::cout << "F(A)";
}

int main()
{
F((int)123);//F(double)
}

910 名前:デフォルトの名無しさん :03/01/24 13:27
それは無理なんじゃ。。
Fのパラメータを評価する段階でint型の値をAにマッチさせる
理由はないわな。

911 名前:デフォルトの名無しさん :03/01/24 15:27
オーバーロードの解決では、標準変換 (int => double) のほうが
ユーザ定義変換 (A(int) {}) より優先するからね。C++3rd 7.4 参照。

912 名前:デフォルトの名無しさん :03/01/24 19:45
すみません。質問させてください。
プログラムからファイルの名前を変えたり、ファイルを削除する必要がでてきました。
環境はWindowsですが、なるべく「標準」でやりたいと思います。
ところが、調べてみると、C++でどうするか書いてある本が見当たりません。
Cでは、removeやrenameが使えるようなのですが、他にC++らしい方法はないのでしょうか。
ご存知の方、お願いします。

913 名前:デフォルトの名無しさん :03/01/24 19:50
>>912
std::remove
std::rename

914 名前:デフォルトの名無しさん :03/01/24 21:41
#pragma comment(linker, "/nodefaultlib:\"libc.lib\"")
#pragma comment(linker, "/entry:\"DllMain\"")
↑を使ってビルドすると、
すごく小さいサイズのファイルが出来上がって、
普通に動作してる気がするけど、
他の環境で使ったときに不具合がでるとか
何か問題ってあるのでしょうか?

915 名前:デフォルトの名無しさん :03/01/24 21:45
>>914
pragmaつかっといて、他の環境ってどういうこと?
まぁまずはスレ違いダナ。VCスレいけば?

916 名前:デフォルトの名無しさん :03/01/25 01:06
#include <unistd.h>
main()
{
int i,j;
printf("program start");
j=fork();
if(j>0)
{
printf("parent-1");
sleep(5);
printf("parent-2");
sleep(5);
printf("parent-3");
}
if(i==0){
printf("child-1");
sleep(8);
printf("child-2")
}
return(0);
}

すみませんがエラー1になるのですが、実行の仕方を教えてください

917 名前:デフォルトの名無しさん :03/01/25 01:08
>>916
UNIX板へ逝け。

918 名前:デフォルトの名無しさん :03/01/25 01:24
#include <cstdio>
#include <unistd.h>
int main(){
int i,j;
printf("program start\n");
j=fork();
if (j>0) {
printf("parent-1\n");
sleep(5);
printf("parent-2\n");
sleep(5);
printf("parent-3\n");
}
if (i==0) {
printf("child-1\n");
sleep(8);
printf("child-2\n");
}
return(0);
}

919 名前:デフォルトの名無しさん :03/01/25 01:27
#include <cstdio>
#include <unistd.h>
int main(){
int i,j;
std::printf("program start\n");
j = ::fork();
if (j > 0) {
std::printf("parent-1\n");
::sleep(5);
std::printf("parent-2\n");
::sleep(5);
std::printf("parent-3\n");
}
if (i == 0) {
std::printf("child-1\n");
::sleep(8);
std::printf("child-2\n");
}
return(0);
}
本当はこうしないとダメかな??

920 名前:マルチはだめですよ〜 :03/01/25 01:44
はわわ〜

921 名前:デフォルトの名無しさん :03/01/25 04:15
ファイルサイズを取得するには、C言語ならファイルをバイナリモードで
開いておき、
fseek(fi, 0, SEEK_END);
size = ftell(fi);
のような感じで簡単にできましたが、C++ではtellg()の返す値の型が
std::ios::pos_typeのためにそれができません。
もちろん大概のコンパイラのstd::ios::pos_typeはunsignedもしくは
unsigned longのtypedefなのですが、それに依存せずファイルサイズ
を簡単に取得する方法はありますでしょうか?

922 名前:デフォルトの名無しさん :03/01/25 04:46
ない。
何故なら、「ファイルサイズ」 が環境依存の概念だから。
環境依存でないのなら、それを取得する標準関数が用意されるはずだ。

923 名前:デフォルトの名無しさん :03/01/25 04:59
>>922
そうですか・・・・ありがとうございました。
どうしても必要な時はstd::fseek()などを使ってやる事にします。

924 名前:デフォルトの名無しさん :03/01/25 05:24
>>919
いいかげん荒らすのはやめてくれんかね。

925 名前:デフォルトの名無しさん :03/01/25 11:03
string型は積極的に使うべき?

926 名前:デフォルトの名無しさん :03/01/25 11:31
やってはいけないことが分かっているなら使うべき

927 名前:デフォルトの名無しさん :03/01/25 11:56
やってはいけないこととは何?

928 名前:デフォルトの名無しさん :03/01/25 12:14
>>927
タイトなループ中で const string& をとる関数 foo() に

 foo("string");

と書くとか。毎回 string オブジェクトのコンストラクト・デストラクトが行われて
泣ける。

929 名前:デフォルトの名無しさん :03/01/25 12:31
なるほど

930 名前:デフォルトの名無しさん :03/01/26 00:47
最適化されるだろ。

931 名前:デフォルトの名無しさん :03/01/26 01:15
コンストラクタ・デストラクタの最適化はうまく逝くのだろうか?

932 名前:デフォルトの名無しさん :03/01/26 01:19
されないだろ。つかされたら困る。

933 名前:デフォルトの名無しさん :03/01/26 01:33
ベンチマークテストでもやってみるべ。
風呂入ってくるから後で。

934 名前:デフォルトの名無しさん :03/01/26 01:43
>>933
ハァァ?ベンチマークとるまでもないだろ。
理性的に考えれば結果は明白。これだからベンチマーク厨は・・・




とかいう芳しいのが別のスレに居た。

935 名前:デフォルトの名無しさん :03/01/26 02:09
>>934
まあそう言わずに、どれだけ実際に違うのか見てみましょうよ。

g++3.2.1(MinGW)で以下の関数を QueryPerformanceCounterで測定。

void dummy(const std::string& s)
{
}

void func1()
{
for (int i = 0; i < LOOP; i++)
dummy("test");
}

void func2()
{
std::string s("test");
for (int i = 0; i < LOOP; i++)
dummy(s);
}

936 名前:デフォルトの名無しさん :03/01/26 02:12
コンパイルオプションは -O3。

LOOP = 500000 で実験。

func1 = 365125
func2 = 1944

ご覧のように、std::stringのコンストラクタを呼んだ方は100倍以上も
遅くなってしまいますた。

-O2だと
func1 = 371604
func2 = 7711

これでも全然遅いです。

937 名前:デフォルトの名無しさん :03/01/26 02:17
933じゃないけど試してみたよ。

VC7, gcc3ともに毎回コンストラクト/デストラクトしてた。
最適化オプションつけたらvc7は5倍ぐらい速くなったけど、
gcc3は1.2倍程度だった。

stringの生成をループの外に持ってったら、
最適化オプションなしで20倍ぐらい速くなった。

ところで、foo()の中身を、引数のstringの長さをグローバル変数に足しこむ
のにしてたんだけど、
ループ外にもってったのをvc7で最適化したら、ループが無くなってました。
gcc3は残ってた。

938 名前:937 :03/01/26 02:20
書いてるうちに別の方が書き込みを・・・
やってることはほぼ同じです。

939 名前:デフォルトの名無しさん :03/01/26 02:29
>>937
VC7の方もなかなか速いね。gccは-O3にしたらループは
残るものの、callが無くなっていました。

int len;

void dummy(const std::string& s)
{
len += s.length();
}

でやったら、-O3で

func1 = 379483
func2 = 9185

という結果。これがまあ実際の使用上の差かもしれません。

940 名前:デフォルトの名無しさん :03/01/26 02:58
enumって何ナノ?定数のtypedef?
継承できないよね?
勝手にできないと思って、拡張するとき
#defineでごまかしてるんだけど。

classにstatic constならべたclassを継承すれば
継承っぽいなぁ。めんどいけど。

詳しい方ご教授ください。

941 名前:デフォルトの名無しさん :03/01/26 03:11
enumに整数以外の型も使えたらなあ・・・

942 名前:デフォルトの名無しさん :03/01/26 03:13
>>940
enum は列挙型で、それ自身独立した型。enum から整数には暗黙の変換が
利くけど、整数から enum や異なる enum 間の変換にはキャストが必要。

おそらく

class Foo {
public:
 enum TYPE1 { A, B, C, ... };
 virtual func(TYPE1 t);
};

なんてのがあって enum を拡張したいのだと思うけど、それは設計が腐ってる。

func() の中で t の値で処理を場合分けしていて、かつ t に対して将来の追加が
考えられるなら、処理自体をカプセル化して別のクラスに括り出すことを考えた
方が良い。

class Cmd {
public:
  virtual func(Cmd& foo) = 0;
};
// enum に対応して Cmd の派生クラスを作っておく
// Cmd 派生クラスのインスタンス生成は Factory パターンでも使って下さい

class Foo {
public:
  virtual func(Cmd* cmd);
};


943 名前:C++厨 :03/01/26 13:20
enumeration
【名】《【複】enumerations》
(1)数え上げること; 列挙.
(2)目録, 表 (=list).
 by Roboword

944 名前:デフォルトの名無しさん :03/01/26 16:16
cygwin 上の g++ で

$ g++ hoge.cpp -I /hogeinc

と書いてコンパイルしてるんですが、この -I /hogeinc を書かなくても
自動的に対象ディレクトリを見てくれるようにするにはどうしたらいいですか?

945 名前:デフォルトの名無しさん :03/01/26 16:18
知らん。
makefile工夫すれば書くのはめんどくさくないと思うが。

946 名前:デフォルトの名無しさん :03/01/26 16:19
>>944
specs に書いておく。gcc -v すると specs ファイルのパス名分かるから、あとは
それをエディタで開いて書き換えましょう。

947 名前:944 :03/01/26 16:48
>>945
make 使うまでもないちいさなプログラムのテストとかで面倒くさいんです。

>>946
できましたー!ありがとうございます!!
これは gcc ならどんな環境でも有効な方法なんでしょうか?

948 名前:デフォルトの名無しさん :03/01/26 18:40
質問があります。
非常に日本語で表しにくいのですが…
ある範囲内の数値でIDを自動的に生成するようなクラスは
どのように実装したらよいでしょうか?
例えば、Get()で新しいIDを、Release(ID)でIDの解放を行うような
ID管理のクラスを作りたいのですが。
最初はstd::vector<bool>を使って使用中か否か管理しようかと
思ったのですが、intの全範囲で使用可能などとなると管理が
できなくなってしまうので…
皆様のご意見をお聞かせください。

949 名前:デフォルトの名無しさん :03/01/26 18:53
>>948
それしか方法が無いと思うが。
できるのは、容量を縮めるのに bitset を応用できるくらい?

950 名前:デフォルトの名無しさん :03/01/26 19:08
>>949
Get, Release に特定のパターンがあるなら、最適化する余地はある。たとえば
多くの場合、

 まとめて Get
 まとめて Release

するなら、

 ここから、ここまで確保されている (最小 ID と最大 ID のタプル)

っつーのを持たせた方が良い。

何の前提もつけられないとなると、完全に全範囲持たせるしかないよな…

951 名前:デフォルトの名無しさん :03/01/26 19:59
>>948
std::set<int>、で、どう?

952 名前:デフォルトの名無しさん :03/01/26 22:11
>>907
立てるの?立てないの?
■過去スレ■
Part1 http://piza.2ch.net/tech/kako/980/980175292.html
Part2 http://pc.2ch.net/tech/kako/996/996640937.html
Part3 http://pc.2ch.net/tech/kako/1003/10038/1003832761.html
Part4 http://pc.2ch.net/tech/kako/1009/10090/1009071535.html
Part5 http://pc.2ch.net/tech/kako/1014/10142/1014217496.html
Part6 http://pc.2ch.net/tech/kako/1018/10184/1018454705.html
Part7 http://pc.2ch.net/tech/kako/1021/10217/1021787032.html
Part8 http://pc3.2ch.net/tech/kako/1025/10250/1025010364.html
Part9 http://pc3.2ch.net/tech/kako/1027/10273/1027347982.html
Part10 http://pc3.2ch.net/tech/kako/1029/10293/1029315669.html
Part11 http://pc3.2ch.net/tech/kako/1032/10323/1032345774.html
part12 http://pc3.2ch.net/tech/kako/1035/10350/1035005882.html
part13 http://pc3.2ch.net/tech/kako/1038/10380/1038031395.html
part14 http://pc3.2ch.net/test/read.cgi/tech/1041328679/
■関連スレ■
【C++】template 統合スレ -- STL/Boost/Loki, etc.
http://pc3.2ch.net/test/read.cgi/tech/1037795348/

STLスレッド     http://pc.2ch.net/tech/kako/1004/10042/1004287394.html
STLスレッド part2 http://pc3.2ch.net/tech/kako/1026/10267/1026793823.html

953 名前:デフォルトの名無しさん :03/01/27 00:33
class A
{
  A();
}
class B : public A
{
  B();
}
この場合手持ちのコンパイラでは
A::A()が先に実行されるのですが
これは規格で保証されてる事なのでしょうか?

954 名前:デフォルトの名無しさん :03/01/27 00:34
>>953
保証されてる。デストラクタがその逆であることも。

955 名前:デフォルトの名無しさん :03/01/27 00:38
>>954
ありがとうございます

956 名前:デフォルトの名無しさん :03/01/27 02:27
>>928->>939の書き込みに感動しました。
実行時間の測定は、gccというかUNIXの場合timeを使うのですよね。
VCの場合、どうやって測定するのでしょうか。

957 名前:デフォルトの名無しさん :03/01/27 02:32
>>956
トリッキーなコード2より転載。windows.hをインクルードして呼ぶ。

int prof(void (*func)())
{
__int64 start, end, freq;
HANDLE hprocess;
DWORD oldclass;

hprocess = GetCurrentProcess();
oldclass = GetPriorityClass(hprocess);

Sleep(10);
SetPriorityClass(hprocess, REALTIME_PRIORITY_CLASS);
QueryPerformanceFrequency((LARGE_INTEGER*)&freq);
QueryPerformanceCounter((LARGE_INTEGER*)&start);

func();

QueryPerformanceCounter((LARGE_INTEGER*)&end);
SetPriorityClass(hprocess, oldclass);

return (int)(end - start);
}

958 名前:デフォルトの名無しさん :03/01/27 02:35
>>949
VC++6では既に, std::vector<bool>は1要素1bitで保持してる(はず)。
激しく環境依存だけど。


959 名前:デフォルトの名無しさん :03/01/27 03:55
新スレ立てました C++相談室 part15
http://pc3.2ch.net/test/read.cgi/tech/1043605481/

960 名前:デフォルトの名無しさん :03/01/27 04:01
足りないと思われるものがあるなら今のうちに次スレの
方に貼り付けておいてください。今日はもう寝ます、お休みなさい。

961 名前:デフォルトの名無しさん :03/01/27 06:12
漏れの脳みそは足りないと思うのですが、何を貼り付ければいいですか?

962 名前:デフォルトの名無しさん :03/01/27 07:33
汝には、当家に伝わる秘伝中の秘伝である
ありがた〜い、塗り薬を授けるので
今すぐ、頭をかちわって、脳みそを送るが良いぞ

963 名前:デフォルトの名無しさん :03/01/27 08:28
これから頭をかち割ってみます

964 名前:デフォルトの名無しさん :03/01/27 11:52
v(^・^)v

965 名前:デフォルトの名無しさん :03/01/27 12:03
963 は絶息しますた。

966 名前:デフォルトの名無しさん :03/01/29 14:01
そういえば次スレの案内がないので(またサーバー変わったみたいだし)
C++相談室 part15
http://pc2.2ch.net/test/read.cgi/tech/1043605481/l50

967 名前:デフォルトの名無しさん :03/02/05 22:15
DeveloperStudioってVisualC++.NETについてるの?
いまVisualStudio.NETアカデミックを持ってるけど・・・

968 名前:967 :03/02/06 03:42
解決しました。ありがとうございました。

969 名前:デフォルトの名無しさん :03/02/08 00:16
age

970 名前:デフォルトの名無しさん :03/02/08 00:38
ちょっと前に、ベンチマークに時間を計る話がありましたよね。
俺の環境では、Cygwinでtimeとするといいと思うんですが、そこで出てくる
real、user、sysの意味がよくわかりません。
実時間、ユーザー時間、システム時間って言葉ではさっぱりです。
ベンチマークになるのは、どれなんでしょう?

971 名前:デフォルトの名無しさん :03/02/08 10:27
boost::timer

972 名前:デフォルトの名無しさん :03/02/11 17:49
> 安く作成

(・∀・)カエレ!

973 名前:デフォルトの名無しさん :03/02/12 23:10
>>970
real … プログラムの起動から終了までの時間
user … ユーザー側の実行に CPU が費やした時間
sys … OS側の実行に CPU が費やした時間

全体の処理時間を評価したいなら real 時間
アルゴリズムを評価したいなら user 時間
OS の機能を評価したいなら sys 時間

974 名前:デフォルトの名無しさん :03/03/12 13:41
sage

975 名前:デフォルトの名無しさん :03/03/13 20:30
age

976 名前:デフォルトの名無しさん :03/03/14 18:36
ぬるぽ

977 名前:デフォルトの名無しさん :03/03/14 18:58
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/  
 (_フ彡        /  ←>>976

C++相談室 part15
http://pc2.2ch.net/test/read.cgi/tech/1043605481/l50

978 名前:デフォルトの名無しさん :03/03/14 19:10
  ( `Д´)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V・∀・)/  
 (_フ彡        /  ←>>977

C++相談室 part17
http://pc2.2ch.net/test/read.cgi/tech/1047560042/

979 名前:デフォルトの名無しさん :03/03/15 00:54
 | ̄ ̄ ̄|___
 |        ヌノ|
 |______|
    ∧∧ ||
    ( ゚д゚)||
    / づΦ


980 名前:デフォルトの名無しさん :03/03/15 01:59
 ______
 |__     |
     |レポ   |
     |___|  
    ∧∧ ||
    ( ゚д゚)||
    / づΦ

981 名前:デフォルトの名無しさん :03/03/15 02:29
  ( `Д´)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V・∀・)/  
 (_フ彡        /  ←>>980

C++相談室 part17
http://pc2.2ch.net/test/read.cgi/tech/1047560042/


■過去ログ置き場に戻る■ 1- 前250 最新50
DAT2HTML 0.33f Converted.