[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 05/09 21:45 / Filesize : 205 KB / Number-of Response : 843
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part56



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

テンプレその他 >>2-15 付近参照

前スレ
class C++相談室lt;part56gt;
pc11.2ch.net/test/read.cgi/tech/1170343752/l50



593 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 23:43:15 ]
tomcat

594 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 00:01:10 ]
わろた

595 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 00:03:35 ]
べ、別にわろてなんかいません!勘違いしないでください!

596 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 11:29:42 ]
トムも仏も無い

597 名前:デフォルトの名無しさん [2007/09/15(土) 19:56:06 ]
ところで作りかけのソースあっぷしたら虐めてくれますか?

598 名前:デフォルトの名無しさん [2007/09/15(土) 21:39:52 ]
うん

599 名前:デフォルトの名無しさん [2007/09/17(月) 03:19:16 ]
あるテキストファイルを行の順番を逆にして出力したいんだけど、
スマートなやり方が思いつきません。

今は

vector<string> str;
テキストファイルから1行読み込み
str.push_back(読み込んだ文字列);
for(int i=str.size()-1;i>=0;i--) cout << str[i] <<endl;

こうしてるんだけど、これだとファイルが数百MByte以上になったときにバッファを大量に食うので避けたい。
打開策として、インプットファイルを終端からReadするって手があるのですが、
これ以外でいい方法はありませんか?

600 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 03:29:23 ]
ファイルを分割して読み込む

601 名前:599 [2007/09/17(月) 03:41:50 ]
>>600
あーなるほど!
それも一つの手ですね!



602 名前:599 [2007/09/17(月) 04:01:35 ]
>>600
お礼を言い忘れました。
どうもありがとうございました。

603 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 05:15:30 ]
あとはまぁ、行頭位置のインデックスを作るとか。
元ファイルを調べて、「改行の次の位置」をvector<ifstream::pos_type>型のコンテナにでも詰め込めば、
あとは好きな行を取り出せる。

同じテキストファイルを、毎度毎度ひっくり返して表示する仕様の場合、
そのインデックスを、a.txtに対してa.indexとか名前付けて保存しておけば、2度目以降は速いよね。

604 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 07:14:59 ]
数百MB単位のファイル読むときはちゃんとmemory mapped file使おうぜ。
このスレの範疇からは外れるが。

605 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 08:23:03 ]
>>604
でもさ、>>599の場合だと、
結局は、一度は最初から最後まで全部読み込まないといけないことには変わりないし、
先頭から読んでいくのと違いあるのかな。

普通のモダンなOSはディスクアクセスから予測した先読みのキャッシュぐらいあるだろうし

606 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 09:16:07 ]
つ[tail -r]

607 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 12:10:29 ]
$ tail -r
tail: オプションが違います -- r
詳しくは `tail --help' を実行して下さい.


608 名前:デフォルトの名無しさん [2007/09/17(月) 13:31:44 ]
つか、テキストファイルを逆順に表示する必要があるのか?

609 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 13:34:05 ]
実用的な場面はあまりないかもしれないけど、言語の勉強のための課題としては
手ごろな内容なんじゃないかな。

610 名前:デフォルトの名無しさん [2007/09/17(月) 13:35:00 ]
tail -f /var/log/messages でいいでね?

611 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 14:05:18 ]
馬鹿はすっこんでろ



612 名前:デフォルトの名無しさん [2007/09/17(月) 14:18:17 ]
言語の勉強ならなぜにstd::vectorを使う?


613 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 14:26:42 ]
C++の勉強ならSTLが適当だろう。C++スレだし

614 名前:デフォルトの名無しさん [2007/09/17(月) 14:32:09 ]
勉強が目的なんでしょ?


615 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 14:35:55 ]
「言語文法の勉強」って限定してないなら標準ライブラリの使用法も範疇だろ

616 名前:デフォルトの名無しさん [2007/09/17(月) 15:17:22 ]
c++の質問じゃないかもしれないけど
0x00000F00
こってどういう意味なんでしょうか?
16進法かなと思うんですが

617 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 15:27:26 ]
明らかにC++じゃないしプログラムの質問でもないぞ
0x00000F00は10進数の3840だ。

618 名前:デフォルトの名無しさん mailto:age [2007/09/17(月) 15:29:33 ]
.

619 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 15:31:05 ]
>>616 数値のリテラルを16進数で書きたいときの書き方。
その数値自体の意味までは判らんよ。

620 名前:デフォルトの名無しさん [2007/09/17(月) 15:37:41 ]
3840ってことはF00ってことでおk?

621 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 15:39:47 ]
>>620
何がOKかさっぱりわからん。3840(10)=F00(16)ってだけだ。
わからんならWindows標準の電卓でも使ってくれ。



622 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 15:44:17 ]
>>617
一応C++の質問になるなじゃない?
CやC++など一部の言語では16進数を表記する文法として0x〜を採用しているだけで、
一般的に16進数を0x〜と表記するという規則はないでしょ。

623 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 15:50:12 ]
いやー、どこの言語でも0xか\xのプリフィックスが付いたら
16進数だと思うけど。

624 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 15:56:26 ]
"0x"が仮にC++特有だとしてもそれ以降はただの16進数だしな

625 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 15:58:36 ]
数字の混ざったトークンにa - fが入ってたら接頭子がなんであれ16進と解釈できるだろ。

626 名前:599 mailto:sage [2007/09/17(月) 16:00:52 ]
>>603-615
どうも、ありがとうございました。
勉強になります。

学校の課題とかではないです(私はもう学生ではないので…)
株と為替の時系列データを処理するプログラムを書いているのですが、
データの入手先によって、系列の時間が上り順のものと下り順のものの2種類あるので、
一方を並べ替えることで1つの書式にそろえようとしたわけです。

627 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 16:04:36 ]
>>625
17進数〜36進数という可能性も。

628 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 16:13:47 ]
1バイト文字コードなら256進数までありうる

629 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 16:52:10 ]
>>616
死ね

630 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 16:57:01 ]
そこは気を利かせて
0xDEAD
とか書かないと

631 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 17:01:14 ]
>>630
0xDEAD=57005
実はお前さんの書き込み時間は、57分00.5秒だったのでは…



632 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 17:29:46 ]
0xDEADBEEF

633 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 19:23:11 ]
0xBADCAFFE

634 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 19:51:52 ]
0xBACA

635 名前:デフォルトの名無しさん mailto:C++でOOPらしいコードを書くにはどうすればいいだろうか [2007/09/18(火) 19:54:44 ]
0xCPLASPLASDEOOPRASIIKODEWOKAKUNIHADOUSUREBAIIDAROUKA

636 名前:デフォルトの名無しさん [2007/09/18(火) 20:19:58 ]
どうせなら CPLUSPLUS ってかけよ

637 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 20:21:27 ]
>>635
C++はマルチパラダイム言語だ。そんな意味のない目標は捨てて身軽になろう。
OOPなんて所詮たくさんある道具の内の一つに過ぎない。

638 名前:デフォルトの名無しさん [2007/09/18(火) 20:25:01 ]
>>636
気づかなかったわ
>>637
okそうするよ

639 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 22:36:41 ]
そういやどっかのサイトにあったけど、「OOPは呼び出し元を再利用するための手法の一つ」
というのはかなり納得した。特にC++のはそうだよな。


640 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 22:40:04 ]
定義なんぞどうでもいい

641 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 22:43:20 ]
定義?定義じゃネーヨ
概念だろ



642 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 00:03:17 ]
テンプレート関数にテンプレートクラスを渡したいのですが、可能でしょうか
具体的には
std::list<int> a;
std::list<double> b;

func( a );
func( b );

のようにしたいです

643 名前:642 mailto:sage [2007/09/19(水) 00:12:49 ]
自己解決しました

644 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 00:17:08 ]
template <typename T> void func(std::list<T> x)
{
};
こんな感じ?

645 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 00:17:59 ]
そんなちょっと考えたら解決するようなことをいちいち・・・

646 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 00:30:38 ]
馬鹿だからなんだぜ?

647 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 12:05:47 ]
KODE

648 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 12:15:12 ]
氷結しよっ!

649 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 12:43:44 ]
>>639
それはOOPっていうか、古くは各種アプリのプラグイン(DLL)に始まる
インタフェイス抽象とかコンポーネント化とかの特徴のような気が・・・


650 名前:デフォルトの名無しさん [2007/09/19(水) 20:34:13 ]
>>649
それは呼び出される側の再利用でなくて?

651 名前:デフォルトの名無しさん [2007/09/19(水) 21:28:47 ]
今ポインタの宿題をしていて  数値を交換するというやつで実行前の値の表示とでたのですがどういういみですか?



652 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 21:48:45 ]
その質問を訊く身にもなってください。
今流行りのアスペルガーですか?

653 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 21:48:59 ]
意味がわからんし、C言語スレへ池

654 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 21:49:31 ]
俺に免じて許してやってくれ。彼は5歳なんだ。

655 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 21:54:15 ]
俺アスペルガーだけどこんな奴と一緒にしないで欲しい

656 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 05:03:48 ]
「数値を交換するというやつで実行前の値の表示とでたのですがどういういみですか?」
とはどういういみですか?

657 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 05:09:02 ]
数値を交換するというやつで実行前の値の表示とでたのですがどういういみですか?

What abhorring is of of display of the value before it executes it by the guy of
exchanging numerical values it?

憎悪が交換数値の奴でそれを実行する前の価値の表示のものであること、それ?

(゚Д゚)?

658 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 06:20:59 ]
>>651
お前があほという意味じゃ

659 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 07:09:57 ]
ある仮想関数が、メンバ変数を書き換えないと想定されている場合、constを付けた方がいいんでしょうか?
例えばこんな感じ↓

class A {
public:
virtual int GetX() const = 0;
};

class B : public A {
public:
virtual int GetX() const { return x_; }
private:
int x_;
};

const A*型を使う場面があるのかが気になります。

660 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 07:20:55 ]
>>659 そうですね。

661 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 07:31:21 ]
>>659
つけられるconstは全てつけるべき。
非constである必要ができたら、非const版を追加するかconstを外すか熟考すべし。



662 名前:659 mailto:sage [2007/09/20(木) 07:36:33 ]
ありがとうございます。

663 名前:kkptcnZciZ mailto:ekeskb@bokqzg.com [2007/09/20(木) 12:34:39 ]
KOMUgI <a href="vunuddokfscm.com/">vunuddokfscm</a>, [url=pliwysnvpdex.com/]pliwysnvpdex[/url], [link=uquzjkpzhomt.com/]uquzjkpzhomt[/link], hukythasnspn.com/

664 名前:マターリ ◆AbENcvTP5o mailto:sage [2007/09/20(木) 14:27:35 ]
いきなりですみませんがこのスレに協力してくれる人を探しています。
ttp://sports2.2ch.net/test/read.cgi/entrance2/1190215633/l50

665 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 14:57:12 ]
>>664
マルチすんな。

666 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 15:16:10 ]
>>650
ん?
プラグインやインタフェイス抽象は主として呼び出す側の再利用に繋がると思うけど。

呼び出される方の利用の仕方がまちまちだと、
呼び出す側はいちいちそれに合わせなくてはならないわけだけど、
インタフェイスや呼び出し規約(API)という形に抽象化し共通化しておくことによって、
呼び出し側を変更せずに機能を追加してゆくことができる。

もちろん呼び出される側を再利用する仕組みでもあるんだけど、
呼び出される側の再利用だけのためであれば単にAPI公開で十分なわけで。

667 名前:デフォルトの名無しさん [2007/09/20(木) 16:37:16 ]
template<class T> class A
{
public:
void (A<T>::*func)();
};

template<class T> class B
{
public:
static void (B<T>::*func)();
};
template<class T> void (B<T>::*B<T>::func)() = NULL;


template<class T, class U> class C
{
public:
void (U::*func)();
};


template<class T, class U> class D
{
public:
static void (U::*func)();
};
template<class T, class U> void (D<T, U>::*U::func)() = NULL;


クラスDのようにしたいんですけど、どなたかわかる方いませんか?
Visual Studio2005 SP1


668 名前:デフォルトの名無しさん [2007/09/20(木) 16:38:31 ]
ちなみにクラスD以外はビルドOKです

669 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 16:49:48 ]
template<class T, class U> class D
{
public:
static void (U::*func)();
};

template<class T, class U> void (U::*D<T, U>::func)() = NULL;

こうだろ?

670 名前:デフォルトの名無しさん [2007/09/20(木) 17:19:20 ]
うぉ、ビルドとおった〜

ありがとう!!

昨日からずっと考えてたよ。

671 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 18:48:48 ]
横からごめん

template<class T, class U> void (U::*D<T, U>::func)() = NULL;

ってどういう意味?



672 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 19:04:46 ]
>>671
単なる、staticなメンバー変数funcの定義だよ。
NULLで初期化してるだけ。


673 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 19:05:53 ]
void (U::*)() 型のstaticメンバ変数 D<T, U>::func を定義して NULL で初期化している

674 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 20:44:48 ]
最近某入力デバイス共有ソフトのソースと某モデリングソフトのプラグインサンプルのソースと
見る機会があったんだけど
そのどっちも、どう考えても継承ツリーの最底辺、絶対継承されっこないし実際されてない
javaだったらfinalがついてもおかしくないクラスのメンバで
継承元の仮想関数をオーバーライドしている関数にvirtualがついてた

薄々感じてはいたんだけどどんな状況でもオーバーライドした関数にはその目印にvirtualをつけるっていう
暗黙のコーディングルール(というかおまじない?)のようなのが流行してるのかな?
それともvirtual修飾子の意味をほとんどの人が誤解している?

675 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 20:51:49 ]
かなり昔から流行ってるよね。

676 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 20:56:41 ]
C#のvirtual, overrideキーワードを見るよろし

677 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 20:58:33 ]
>>676
C# なんか存在しない頃から流行ってるよね。

678 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 21:24:07 ]
別にはやってないだろ

679 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 21:26:07 ]
文法的にはどっちでもいいんだっけ?

680 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 21:27:37 ]
多分継承元のクラスから関数宣言コピペして、面倒だからvirtual削除してないだけだろ。

681 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 21:40:33 ]
virtualつけてもoverrideかどうかは分からない
ということに最近気づいた



682 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 21:41:32 ]
overrideする側はvirtual要らないんだっけ
俺はいつもコメントにoverrideって書くけど

C#がうらやましいぜ

683 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 21:53:43 ]
基本クラスがvirtualなら十分でそれ以降は任意だったと思うがドキュメントが出てこない。
継承が深くなるとvirtualかどうか確認するのにいくつもヘッダーファイルを遡ることになるから、
overrideしたところにもvirtualがあるとわかりやすい。
いま基本クラスと書いたが途中からvirtualっていうのもありなんだよな。
#include <iostream>
using namespace std;
class A { public: void Say() { cout << "hello A" << endl; }};
class B : public A { public: virtual void Say() { cout << "hello B" << endl; }};
class C : public B { public: void Say() { cout << "hello C" << endl; }};
int main(){
 A *a = new C(); a->Say();
 B *b = new C(); b->Say();
 return 0;}
結果
hello A
hello C

684 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 21:59:49 ]
一度virtual付ければ後は無くておk。
俺はドキュメントなんか鼻から探すつもりもありませんがw


685 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 22:01:01 ]
あ、でもvirtualはいつも付けてる。
理由は>>683と一緒。


686 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 22:01:12 ]
sealedが欲しい。途中から隠蔽w

687 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 22:06:18 ]
#define public protected


688 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 22:26:15 ]
とにかく、C#なんかより前から流行ってるよね。

689 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 22:35:25 ]
>>686
sealedは継承禁止じゃね?

690 名前:デフォルトの名無しさん [2007/09/20(木) 22:36:54 ]
void func(const T& param)
{
T.Hoge();
}

っておかしい?
型Tは何かわからないからそのメソッドHoge()を呼ぶのはおかしい?

691 名前:デフォルトの名無しさん [2007/09/20(木) 22:37:32 ]
void func(const T& param)
{
param.Hoge();
}
の間違いでした



692 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 22:38:24 ]
継承される事を前提に作ってないクラスはデフォルトでsealed(final)
って仕様だとうれしいんだけど

小規模で作ってる分にはいらないけどさ

693 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 22:42:09 ]
大規模開発なら「派生型を作らないこと」とドキュメントに書けばいいような・・・

オープンソース物みたいにソースがドキュメントって感じのだと、
そういう言語によるディレクティブは役に立つとは思うけど。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<205KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef