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

C++相談室 part45

■ このスレッドは過去ログ倉庫に格納されています
0001(*^ー゚)b グッジョブ!!2005/11/26(土) 21:20:04
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
テンプレートライブラリ(STL含む)に関する質問は
専用の別スレにお願いします。
IDE(VC++など)などの使い方の質問もその開発環境のスレに
お願いします。

前スレ
http://pc8.2ch.net/test/read.cgi/tech/1128512737/
0153デフォルトの名無しさん2005/12/01(木) 23:22:07
>>152
仕様では、charT*を引数とするoperator=は
*this = basic_string<charT, traits, Allocator>(pointer_to_string);
を行うことになっている。
つまり、一時オブジェクトが作られ、それがthisに代入されることが保証されている。
0154デフォルトの名無しさん2005/12/01(木) 23:34:18
おー、ありがとう。
安心して良いって事だね。
0155デフォルトの名無しさん2005/12/01(木) 23:35:28
効率も悪いってことだな
0156デフォルトの名無しさん2005/12/01(木) 23:38:18
std::string は可読性も上がり、シンプルにコードをかけるが
効率最悪
0157デフォルトの名無しさん2005/12/02(金) 00:01:13
>>155
文字列が丸ごとコピーされるとは限らないよ
リファレンスカウントによる実装もある
0158デフォルトの名無しさん2005/12/02(金) 00:02:25
>>157
部分文字列まで考慮したRefCountの実装って相当面倒な気がするんだけど、
実際のSTLの実装で使われてたりするんかな?
0159デフォルトの名無しさん2005/12/02(金) 00:12:35
王者が1枠に来るのを待っとったで。明日は鉄板やな。
8Rはいくらなんでも王者をバカにしすぎやわ

7R
6-2 30000

12R
1-3 10000
1-5 20000
01601592005/12/02(金) 00:20:14
スマン
誤爆や
0161デフォルトの名無しさん2005/12/02(金) 12:00:08
少し上のexpression templateの話題
efficient c++に書いてあるけれど、すべてをinline展開するとコードサイズが増えすぎるので注意
コードサイズが増えると、キャッシュミスが多発して効率が下がることも。

使用コンパイラが、組込型変数の場合だけRVOする場合
=のついてない算術演算子(operator+()とか)はexpression templateが必要かも
ただし、expression templateは、「演算子の種類とlhs, rhsへのポインタ」などをメンバに持つ
一時オブジェクトを生成するコストがかかる。
線形代数ライブラリみたいに巨大なオブジェクトの一時オブジェクト生成を阻止したいときならいざしらず
class hoge_t {
 int x, y;
};
みたいに小さなクラスのときは、逆効果だと思う。
どうしてもスピードがほしい部分なら、
hoge0 = hoge1; hoge0 *= hoge2; hoge0 *= 0.5;と展開するのがいいんじゃないかな。

コンパイラによっては:
int i = 10;
return i;
はRVOせず
return int(10);
はRVOするようなパターンもあるらしい。operator*()の定義を、最適化されやすいよう変えてみては。
01621052005/12/02(金) 20:38:47
>>161
コンパイル時に右辺の変数の値が確定している場合 expression template
を使えば、よく出来たコンパイラならコンパイル時に左辺値を計算するため
最高の実行速度と最小のコードサイズを得ることが出来る。

というのが >>107 の紹介したページの主張(の一部)だと。
0163デフォルトの名無しさん2005/12/03(土) 00:38:07
しかしそれほどクリティカルなケースがあふれてるものかね?
C++ でストレートに書いて問題になったことなどないのだが
0164デフォルトの名無しさん2005/12/03(土) 07:21:27
http://www.osl.iu.edu/~tveldhui/papers/techniques/
>This is a very elaborate, complex solution which is difficult to extend and
>maintain. It is probably not worth your effort to take this approach.
とあるように,効率のためにETが必要なほどのケースは滅多に存在しない.
01651102005/12/03(土) 07:46:15
解決しました。
長い関数の最初で、ある型の自動変数に同じ型の参照を代入していたせいでした。
コンパイルエラーにならないけど壊れるんですね。
0166デフォルトの名無しさん2005/12/03(土) 10:13:29
>>164
いいサイト紹介してくれてありがとう。

ただその引用の箇所は例えば boost::lambda あたりを揶揄してるっぽいので
可読性と一時オブジェクト生成コストのトレードオフについての論評じゃないと思う。
0167デフォルトの名無しさん2005/12/03(土) 11:11:08
Alt と Enterキー が同時に押されたのを検出したいのですが、
WinProc 内(WM_KEYDOWN / WM_SYSKEYDOWN)にて
検出しようというのは間違っているのでしょうか。
0168デフォルトの名無しさん2005/12/03(土) 11:25:32
間違ってる
このスレで聞くのも間違ってる
0169デフォルトの名無しさん2005/12/03(土) 12:06:37
>166 前後ちゃんと呼んでなかったスマソ
0170デフォルトの名無しさん2005/12/03(土) 12:44:18
C++勉強中です。

class A
{
private:
A();
public:
static A* Create()
{ return new A; }
};

これはどういうことでしょうか?
static関数って通常は非staticメンバ関数を呼び出せないですよね
0171デフォルトの名無しさん2005/12/03(土) 13:07:42
>>170
どこで非staticなメンバ関数を呼び出してるの?
0172デフォルトの名無しさん2005/12/03(土) 13:13:52
コンストラクタとか?そんなわけないよな
0173デフォルトの名無しさん2005/12/03(土) 13:19:43
コンストラクタって非staticなメンバ関数じゃないんすか。そうですか。
0174デフォルトの名無しさん2005/12/03(土) 13:34:22
誰が呼び出したかに注意するといいよ
0175デフォルトの名無しさん2005/12/03(土) 14:44:51
たぶん private: にコンストラクタがあるので staic メンバ関数内で
インスタンス化したときになんでコンパイルエラー出ないのか?
ってことを言いたいんだと思うのだが、それの答えは。

staticメンバ関数は friend みたく非公開メンバにアクセスできるから。
0176デフォルトの名無しさん2005/12/03(土) 14:53:09
一方「非staticメンバ関数を呼び出せない」に引っかかっているんだとしたら
その文面を「暗黙の this-> を省略できない」と読みかえればいいだにょん。
01771702005/12/03(土) 15:03:40
「暗黙の this-> を省略できない」
なるほど。
理解できました。ありがとうございました。
0178デフォルトの名無しさん2005/12/03(土) 16:34:52
質問をプログラマ板に書いたところ、ここの掲示板が良いと紹介されました。
質問:
http://pc8.2ch.net/test/read.cgi/prog/1129609762/440
よろしくおながいします。
学生ではなく現在はH/W設計もかけもちしています。
長年プログラムを組んで食ってきましたが、オブジェクト指向の言語は未経験です。

0179デフォルトの名無しさん2005/12/03(土) 16:44:18
>>178
推薦図書スレ行ったら・・・と言おうとしたけど荒れてるね。
演習的なのをやりたいのならExceptional C++かな?
ただWisdomSoftのを読んだだけだと厳しいかもしれない。

#マ板の割にはいいレス付いてるなw
#俺がひどいスレしか見てないだけかもしれんが。
0180デフォルトの名無しさん2005/12/03(土) 17:41:19
>>168
失礼しました。
0181デフォルトの名無しさん2005/12/03(土) 17:43:44
>>179
K&Rは感動の良書で、そんな演習の入ったC++本を探していますが、
気に入ったもの見つからないのです。
K&Rは1章の問題(1日で踏破できた)をやるだけで、ひととおり
C言語プログラムが書けるように工夫して書かれてました。

コンストラクタ、ディストラクタの概念などは、C言語にはなかったじゃない
ですか。なのでC++仕様の大きさには感心しています。
ただ正直のところは、クラスの定義について、どのような考え方で
システム構成を構築するか、あるいはシステムをどのように分割して
クラスに分解する?・・・みたいな考え方も知りたいところです。

あとは、どんなの応用を想定して、クラスの継承をできるようにC++ではしているのか、
その根本的思想を知りたい、と思います。

なお、
マ板は、読むと精神的に良くないのですが、酷い会社環境で
苦労している人(自分もそう)の話から、自分の知らない
世の中の現実から、学べ取れるものがあります。

0182デフォルトの名無しさん2005/12/03(土) 17:48:39
クラス、オーバーロード、オーバーライド、ポリモフィズム、例外、テンプレート、STL

大雑把に言えば、C++の基礎文法はこんなとこ。後ろに行くほど分野によって不要だったりもする。
上記でまだ分からないものがあれば、ウェブなり、入門書なりでまずは補完すること。
このレベルなら独習シリーズでいいんじゃね?

で、C++の機能の多くはオブジェクト志向の実装のためにあるわけだからオブジェクト指向もかじっ
ておかないと、意味わからないことも多いと思われる。

ただし、組み込みみたいに特殊な分野だと、また文化が違ったりするから、目的がはっきりしている
なら、その点ハッキリさせて質問したほうがいいと思われ。
0183デフォルトの名無しさん2005/12/03(土) 17:55:22
>>181
>システム構成を構築するか、あるいはシステムをどのように分割して
>クラスに分解する?・・・みたいな考え方も知りたいところです。
>あとは、どんなの応用を想定して、クラスの継承をできるようにC++ではしているのか、
>その根本的思想を知りたい、と思います。

それはもう言語の話じゃないな。
0184デフォルトの名無しさん2005/12/03(土) 18:08:08
_beginthreadexで作ったスレッドをメインスレッドから強制的に終了させる方法ってないすか?
0185デフォルトの名無しさん2005/12/03(土) 18:19:48
ワーカスレッドでない場合は、クラスで隠蔽して、起動前にフラグ立てて、
デストラクタ処理で終了待ちのループさせるとかしか思いつかんけど。
0186デフォルトの名無しさん2005/12/03(土) 20:32:08
>>184
環境依存の話はスレ違いなのです。。。

【初心者歓迎】C/C++室 Ver.24【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1131691023/

こちらへどうぞ
0187デフォルトの名無しさん2005/12/03(土) 21:02:38
>>178
言語仕様や文法がどうこうというのを気にするんじゃなくて

オブジェクト指向とはどういうものか、というのを一度
言語という枠を超えて(SmalltalkとかRubyとか)勉強して、
理解してからC++に戻ってきても遅くないと思うよ。
0188デフォルトの名無しさん2005/12/04(日) 01:39:42
class A
{
public:
  int i;
  A( int _i ):i( _i ){};
  A(){ A(1); }
};

A a;
printf("%d\n", a.i );

で分けわからない数値が出力されます。
コンストラクタ内で別のコンストラクタを呼び出すのはダメなんでしょうか?
0189デフォルトの名無しさん2005/12/04(日) 01:40:42
ダメです
0190デフォルトの名無しさん2005/12/04(日) 03:33:48
>188
呼び出しても一時オブジェクトが生成されるだけだよ。
デフォルト引数使って逃げるか、init() みたいな関数に共通処理をくくり出すか(初期化じゃなくなっちゃうけど)かな。
0191デフォルトの名無しさん2005/12/04(日) 06:24:58
class A
{
public:
  int i;
  A( int _i = 1 ):i( _i ){};
};


class A
{
public:
  int i;
  A( int _i ) { init(_i); };
  A(){ init(1); }
  void init( int _i ) { i = _i; };
};
0192デフォルトの名無しさん2005/12/04(日) 09:57:43
A(int i=1): i(i){}
0193デフォルトの名無しさん2005/12/04(日) 10:12:55
A(int i=1): { i = i; }
01941882005/12/04(日) 11:45:37
一時オブジェクトが生成されるだけなんですか。
解りました。ありがとうございました。
0195デフォルトの名無しさん2005/12/04(日) 12:14:25
>>194
どこだか忘れたけど、C++入門なんて偉そうに書いてるWebSiteでその手の間違いを堂々と書いてたな。
ご丁寧に勘違いに基づいた結果に合うようなサンプルまで用意して。
もしあんたがそのサイトで勉強しているならとっととそのページをブックマーク、キャッシュごと捨ててしまえ。
0196デフォルトの名無しさん2005/12/04(日) 14:39:38
なんで何も知らないのに入門なんか書こうとするんだろうなあ・・・
0197デフォルトの名無しさん2005/12/04(日) 14:46:06
自分が無知なことを知らないから
(というより、自分は結構詳しいと勘違いしているから)
0198デフォルトの名無しさん2005/12/04(日) 14:57:14
http://www.amazon.co.jp/exec/obidos/ASIN/475611895X/
http://www.amazon.co.jp/exec/obidos/ASIN/4797328541/
>>178はこれら読むしかないんじゃないの?
それかオブジェクト指向の本
0199デフォルトの名無しさん2005/12/04(日) 15:06:55
コンストラクタについての質問です。
独習C++で勉強した後、VC++(MFC)の勉強をしていたら、
次のような文を何気なく使われているのを発見しました。

class TestView: public CView
{
/*各種オブジェクトの宣言*/
private:Crect m_rectEllipse;
}

CMyView :: CMyView : m_rectEllipse(0,0,200,200) //←ココ
{
/* CMyViewのコンストラクタ
.
.
.
*/
}

"ココ"の文っていろいろ調べたんですが、載ってなくて。
こういう初期化の書き方ってありなんでしょうか。
それとも何か別の意味があるんでしょうか。
0200デフォルトの名無しさん2005/12/04(日) 15:09:42
>>199
初期化リストでぐぐってみ。
基底クラスのコンストラクタを呼び出す意味と、メンバを初期化する意味がある。
02011992005/12/04(日) 16:01:30
解決しました。ありがとうございました。

デフォルトコンストラクタを持たないクラスのオブジェクト、
const 宣言されたメンバ、リファレンスメンバ
はメンバ初期設定リストによって初期化されなければならない。
0202デフォルトの名無しさん2005/12/04(日) 16:36:08
>>201
そんな限定的に使うんじゃなくて、なるべく全部
初期化リストで初期化するようにしような。
0203デフォルトの名無しさん2005/12/04(日) 18:17:30
CMyView::と{の間に : m_Hogehogeとかが大量に入るのが当たり前だったのか
0204デフォルトの名無しさん2005/12/04(日) 18:27:35
引数なしのデフォルトコンストラクタが用意されてないとそうなる罠
0205デフォルトの名無しさん2005/12/04(日) 21:22:37
メンバ変数の初期化リストなんてあんま見ないなと思ったら
そもそもPODじゃないデータを初期化でコピーした記憶が無かった
0206デフォルトの名無しさん2005/12/04(日) 21:54:35
hogeというクラスがあって

int KANSUU(hoge *a){}
という関数があった場合hogeを継承したhogehogeクラスを引数にとることはできるんでしょうか?
0207デフォルトの名無しさん2005/12/04(日) 21:55:43
>>206 試してみたら?
0208デフォルトの名無しさん2005/12/04(日) 23:50:50
>>206
継承を理解していればそんな質問を投げないぞ。
0209デフォルトの名無しさん2005/12/05(月) 00:09:48
>178
つ http://www.pearsoned.co.jp/washo/prog/wa_pro51-j.html

これは誰も紹介しないのか……初心者にちょうどいいとおもうけど。
0210デフォルトの名無しさん2005/12/05(月) 00:12:21
BruceEckelのThinking in C++ってどうなの?
Thinking in Javaが名著なだけに、是非読んでみたいと思ってるんだけど
邦訳が出てないようだし・・・
原著買うしかないかなぁ
0211デフォルトの名無しさん2005/12/05(月) 00:32:27
基底クラスに派生クラスのアドレスを代入したときの動きのメカニズムや
クラス情報がどのようにメモリに配置されるかなどを図で説明した本はないでしょうか?
0212デフォルトの名無しさん2005/12/05(月) 00:45:10
>>211
EffectiveC++にもvptr周りは図付きで説明されてた気がするが
もうちょっと詳しく知りたいならARMかD&Eじゃね?
0213デフォルトの名無しさん2005/12/05(月) 02:04:32
>>212
ARMはともかくD&Eなら近くの本屋さんにあると思うので調べてみます。
ありがとうございました
0214デフォルトの名無しさん2005/12/05(月) 02:06:33
ARMやD&Eが何の略かわかりません(><)
0215デフォルトの名無しさん2005/12/05(月) 02:14:57
>>214
ARM http://www.amazon.co.jp/exec/obidos/ASIN/4901280392/
D&E http://www.amazon.co.jp/exec/obidos/ASIN/4797328541/
0216デフォルトの名無しさん2005/12/05(月) 02:16:02
ARM : The Annotated C++ Reference Manual : プログラミング言語C++
D&E : The Design And Evolution of C++ : C++の設計と進化
0217デフォルトの名無しさん2005/12/05(月) 04:00:21
>>216
>ARM : The Annotated C++ Reference Manual : プログラミング言語C++
邦訳タイトルが違う >>215 が正しい
0218デフォルトの名無しさん2005/12/05(月) 05:26:34
>>211
"vtable c++"でぐぐってみるとか。手っ取り早く知るにはまずこれ。
0219デフォルトの名無しさん2005/12/05(月) 05:28:56
それにしても今晩はよく雷が落ちるなあ。さっきからUPSが3回も作動した。
0220デフォルトの名無しさん2005/12/05(月) 07:13:51
C言語で関数ポインタを使って

typedef {
 int (*func)(int param);
}funcList[]={
 func1,func2,func3・・・
};

int callFunc(int funcNum,int param)
{
 return funcList[funcNum].func(param);
}

のような実装をC++のクラスでできますか?
関数ポインタによるリスト化したいのは protected なメソッドです。
そのクラスは継承されるのが前提でひとつのプログラム内部で複数のインスタンスが生成されるのでクラスの外に定義するのはしたくありません。
switch文で分岐もメソッド数が200以上になりそうなので実用的でないし。
0221デフォルトの名無しさん2005/12/05(月) 07:37:47
>>220
ttp://www.emit.jp/prog/prog_cpp0.html
0222デフォルトの名無しさん2005/12/05(月) 08:02:08
>>219
地震の前兆です
0223デフォルトの名無しさん2005/12/05(月) 11:47:41
どなたか、教えてください。以下で func3() の値がおかしくなってしまいます。

class base_1 {
public:
base_1() : data_( 123 ) {}
int get() { return data_; }
int data_;
};
class base : public base_1 {
public:
typedef base_1 base_1_type;
public:
int GET() { return base::base_1_type::get(); }
};
class other { public: int dummy_; };
class derived : public other, public base {
public:
int func1() { return base::base_1::get(); }
int func2() { return base::GET(); }
int func3() { return base::base_1_type::get(); }
};
int main( int argc, char * argv[] )
{
derived D;
printf( "%d\n", D.func1() );
printf( "%d\n", D.func2() );
printf( "%d\n", D.func3() );// おかしい!
}
0224デフォルトの名無しさん2005/12/05(月) 11:55:22
>>223
cygwin g++ 3.4.4 で動かしたら 123 が3個表示された。
ただし、先頭に #include <cstdio> を足した。

なんかマイナーなコンパイラ使ってる?
02252232005/12/05(月) 11:58:05
Microsoft VC++.NETです。
どうもbase_1のthisポインタがsizeof(other)だけずれるんです。
0226デフォルトの名無しさん2005/12/05(月) 13:26:12
2003で試したけど、thisが&D+4byteを指してないといけないのに+8byteのところ指してた。
0227デフォルトの名無しさん2005/12/05(月) 13:38:10
class derived : public base, public other {
public:
02282232005/12/05(月) 14:12:51
みなさん、どうも。
自分の環境だけでなかったので、コンパイラの癖みたいなものでしょうか?

いろいろおかしいところはあって、
・func3()で base::get() とか base_1_type::get() だと問題は発生しない。
・たとえばotherとかにメンバ関数get()を持たせると問題は発生しない。
・base内でのtypedefをprivateにしてもコンパイルビルドはできてしまう。
・派生させるクラスの順序によって症状が変わる

もともと、base_1はtemplateだったんですが、単純化するとこうなりました。
template名が長かったのでtypedefしたんですが…
0229デフォルトの名無しさん2005/12/05(月) 15:10:07
>>228
http://lab.msdn.microsoft.com/productfeedback/SearchResults.aspx?stype=1&fields=1&category=11
このページの下のほうにバグレポートなるリンクがある。
02302232005/12/05(月) 16:13:36
>>229
ありがとう。いろいろあるみたいですね。折をみて聞いてきます。
とりあえず、不便ですが回避したコードでやってます。
02311812005/12/05(月) 20:53:07
みなさん、色々な本の紹介やアドバイスありがとうございます。
情報はすべてメモしました。

今日はとりあえず、先日見つけたWEBの演習を始めました。
今日はコンストラクタ関数と、そのオーバーロードによる
初期化の具体的やり方がわかりますた。
実際に演習で組むと、頭が良くなったような錯覚に陥りますw

紹介いただいた本は、本屋さんで眺めてから、自分に合うか
見極めようと思います。
0232デフォルトの名無しさん2005/12/05(月) 21:37:40
181 はどのサイトで勉強しているのだろう。ちょっと気になる。
0233デフォルトの名無しさん2005/12/05(月) 23:12:12
すいません、C++の勉強をしているんですが。
fstreamでファイルから読み込みをする際に
区切り文字を設定する事はできないのでしょうか?
csvのファイルを読み込むときはどうしたら良いのかわからなくて…。
スペース区切りがデフォルトですよね?
0234デフォルトの名無しさん2005/12/05(月) 23:18:34
>>233
たとえばboost::tokenizer
0235デフォルトの名無しさん2005/12/06(火) 00:40:22
トークン文字が複数の場合は面倒だがgetlineじゃダメなのか?
0236デフォルトの名無しさん2005/12/06(火) 01:42:04
STLとかイテレータとかまだ全然理解できてないです。。。
getlineでできそうでした。
ありがとうございました。
02371812005/12/06(火) 23:44:29
>>232
http://wisdom.sakura.ne.jp/programming/cpp/
ここを全部、読解しました。

昨日から、下の演習をやっています。最初のほうは飛ばして、クラスから
はいっています。
http://www.sist.ac.jp/~suganuma/learn/enshu.htm

・・・ここも探しあてにけっこう時間かけて苦労して見つけました。
0238デフォルトの名無しさん2005/12/07(水) 00:01:37
そんなんでいいのか。
OOなんて出番なさそうな演習だな。
02392322005/12/07(水) 01:11:33
>>237
>>237
http://wisdom.sakura.ne.jp/programming/cpp/ を読んでみた。
今まで見たC++入門サイトの中では最高の部類だとおもた。よく見つけてきたなぁ。

http://www.sist.ac.jp/~suganuma/learn/enshu.htm も読んでみた。
ちょっとあれだけど・・・。実際C++で良質の演習問題を提供するって難しい。
0240デフォルトの名無しさん2005/12/07(水) 01:13:05
・・・・そうか?
それのCの方を見たことあるが、
一部用語が統一されてなかったりして、
書いてる本人もわかってるのかいなってところがあったが・・・。
0241デフォルトの名無しさん2005/12/07(水) 01:16:10
>>239
Rogue Wave
0242デフォルトの名無しさん2005/12/07(水) 01:19:19
ケチらんで本買えと

>実際C++で良質の演習問題を提供するって難しい。
禿本の演習問題があるじゃん
0243デフォルトの名無しさん2005/12/07(水) 01:26:26
禿禿うっさいぞ( ゚Д゚)ゴルァ!!
02442392005/12/07(水) 01:30:28
>>240
ごまかしはあるけどあからさまな嘘は書いていないので好印象。
レイアウトに気を配って重要なところに自然に目がいくように
配慮されているとこがすごく良いと思った(印刷物だとお金が掛かるのでやりたくても出来ない)。
0245デフォルトの名無しさん2005/12/07(水) 01:33:12
Kittyってサイトが上がるたびに叩かれてる記憶が
02462392005/12/07(水) 01:42:02
>>241
Rogue Wave が tools++ を提供しているところで
エピステーメーが推奨しているってとこまでは知ってるけど・・・

Rogue Wave が日本語の演習問題を出しているのか?
Rogue Wave 有名すぎて調べにくいぞ。

02472392005/12/07(水) 01:47:29
>>242
プップー!
237 は 買ってみた上で翻訳が糞なんでもっと効率の良いソースを求めているのだ。
0248デフォルトの名無しさん2005/12/07(水) 02:37:35
俺が演習問題出してやる。


問1
自動販売機を分析して、C++で制御プログラムを作成せよ。

問2
エレベータシステムを分析して、C++で制御プログラムを実装せよ。


各 6時間

0249デフォルトの名無しさん2005/12/07(水) 02:41:46
うっわー出たよ  自販機問題とエレベータ問題wwっwwwwww
w
0250デフォルトの名無しさん2005/12/07(水) 04:37:40
あとは巡回セールスマン問題ができたら完璧だな
0251デフォルトの名無しさん2005/12/07(水) 07:49:23
>239の上のサイト、入門にありがちな応用が身に着かない教え方だな。
0252デフォルトの名無しさん2005/12/07(水) 07:57:14
あーダメだ、
>ただし、綺麗で保守的なプログラムを書きたいのであれば
>適当な位置で変数を宣言するのではなく、ブロックの先頭でまとめて宣言するべきです
こんなこと書いてるよ。
■ このスレッドは過去ログ倉庫に格納されています