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


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

C++相談室 part38
1 名前:デフォルトの名無しさん :04/11/26 21:49:00
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
テンプレートライブラリ(STL含む)に関する質問は
専用の別スレにお願いッス。

前スレ part37
http://pc5.2ch.net/test/read.cgi/tech/1098543578/

過去スレ、関連スレ、関連リンクなどは >>2-20 あたり

2 名前:デフォルトの名無しさん :04/11/26 21:49:42
1 http://mimizun.mine.nu:81/2chlog/tech/piza.2ch.net/tech/kako/980/980175292.html
2 http://pc.2ch.net/tech/kako/996/996640937.html
3 http://pc.2ch.net/tech/kako/1003/10038/1003832761.html
4 http://pc.2ch.net/tech/kako/1009/10090/1009071535.html
5 http://pc.2ch.net/tech/kako/1014/10142/1014217496.html
6 http://pc.2ch.net/tech/kako/1018/10184/1018454705.html
7 http://pc.2ch.net/tech/kako/1021/10217/1021787032.html
8 http://pc3.2ch.net/tech/kako/1025/10250/1025010364.html
9 http://pc3.2ch.net/tech/kako/1027/10273/1027347982.html
10 http://pc3.2ch.net/tech/kako/1029/10293/1029315669.html
11 http://pc3.2ch.net/tech/kako/1032/10323/1032345774.html
12 http://pc3.2ch.net/tech/kako/1035/10350/1035005882.html
13 http://pc3.2ch.net/tech/kako/1038/10380/1038031395.html
14 http://pc5.2ch.net/tech/kako/1041/10413/1041328679.html
15 http://pc5.2ch.net/tech/kako/1043/10436/1043605481.html

3 名前:デフォルトの名無しさん :04/11/26 21:50:28
16 http://pc5.2ch.net/tech/kako/1045/10457/1045746245.html
17 http://pc5.2ch.net/tech/kako/1047/10475/1047560042.html
18 http://pc5.2ch.net/tech/kako/1050/10501/1050177746.html
19 http://pc5.2ch.net/tech/kako/1052/10526/1052625846.html
20 http://pc5.2ch.net/tech/kako/1055/10551/1055162298.html
21 http://pc5.2ch.net/tech/kako/1057/10575/1057580107.html
22 http://pc5.2ch.net/tech/kako/1060/10603/1060361082.html
23 http://pc5.2ch.net/tech/kako/1062/10626/1062690663.html
24 http://pc5.2ch.net/tech/kako/1066/10665/1066546387.html
25 http://pc5.2ch.net/tech/kako/1067/10679/1067949669.html
26 http://pc5.2ch.net/test/read.cgi/tech/1070164402/ (迷子)
27 http://pc5.2ch.net/test/read.cgi/tech/1074454641/ (迷子)
28 http://pc5.2ch.net/test/read.cgi/tech/1077985164/
29 http://pc5.2ch.net/test/read.cgi/tech/1082047479/
30 http://pc5.2ch.net/test/read.cgi/tech/1084030770/
31 http://pc5.2ch.net/test/read.cgi/tech/1086185282/
32 http://pc5.2ch.net/test/read.cgi/tech/1088236078/
33 http://pc5.2ch.net/test/read.cgi/tech/1090180012/
34 http://pc5.2ch.net/test/read.cgi/tech/1092018643/
35 http://pc5.2ch.net/test/read.cgi/tech/1093958200/
36 http://pc5.2ch.net/test/read.cgi/tech/1096304546/
37 http://pc5.2ch.net/test/read.cgi/tech/1098543578/

4 名前:デフォルトの名無しさん :04/11/26 21:51:02
■基本■
[C++ FAQ]
 http://www.parashift.com/c++-faq-lite/
 http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
  Cとその仕様を比較しながらの解説なので分かりやすい。
  ***** 質問の前に必ずこの二つに目を通してください *****

[禿 Stroustrup]
 http://www.research.att.com/~bs/
[C++ International Standard]
 http://www.kuzbass.ru/docs/isocpp/
 http://www.kuzbass.ru/docs/ansi_iso_iec_14882_1998.pdf
 http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=38110&ICS1=35&ICS2=60&ICS3=
[JTC1/SC22/WG21 - C++]
 http://www.open-std.org/jtc1/sc22/wg21

[C/C++ Users Journal]
 http://www.cuj.com/
[cppll (ML)]
 http://www.trickpalace.net/cppll/ (日本語)

5 名前:デフォルトの名無しさん :04/11/26 21:52:01
■Books■
amazon.com C,C++関連書籍
 http://www.amazon.com/exec/obidos/tg/browse/-/3956/ref=br_bx_c_1_3/

The C++ Programming Language
 http://www.amazon.com/exec/obidos/ASIN/0201700735/
 http://www.amazon.co.jp/exec/obidos/ASIN/475611895X/ (翻訳)
C++ Primer (3rd Edition)
 http://www.amazon.com/exec/obidos/ASIN/0201824701/
 http://www.amazon.co.jp/exec/obidos/ASIN/4756140068/ (翻訳)
The C++ Standard Library
 http://www.amazon.com/exec/obidos/ASIN/0201379260/
 http://www.amazon.co.jp/exec/obidos/ASIN/4756137156/ (翻訳)
Effective C++
 http://www.amazon.com/exec/obidos/ASIN/0201924889/
 http://www.amazon.co.jp/exec/obidos/ASIN/4756118089/ (翻訳)
More Effective C++
 http://www.amazon.com/exec/obidos/ASIN/020163371X/
 http://www.amazon.co.jp/exec/obidos/ASIN/4756118534/ (翻訳)
Exceptional C++
 http://www.amazon.com/exec/obidos/ASIN/0201615622/
 http://www.amazon.co.jp/exec/obidos/ASIN/4894712709/ (翻訳)
More Exceptional C++
 http://www.amazon.com/exec/obidos/ASIN/020170434X/
Exceptional C++ Style
 http://www.amazon.com/exec/obidos/ASIN/0201760428/

6 名前:デフォルトの名無しさん :04/11/26 21:52:34
■Books(Templateまわり)■
Effective STL
 http://www.amazon.com/exec/obidos/ASIN/0201749629/
 http://www.amazon.co.jp/exec/obidos/ASIN/4894714108/ (翻訳)
Modern C++ Design
 http://www.amazon.com/exec/obidos/ASIN/0201704315/
 http://www.amazon.co.jp/exec/obidos/ASIN/4894714353/ (翻訳)
C++ Templates
 http://www.amazon.com/exec/obidos/ASIN/0201734842/
C++ Template Metaprogramming
 http://www.amazon.com/exec/obidos/ASIN/0321227255/

7 名前:デフォルトの名無しさん :04/11/26 21:53:19
■Libraries■
[Boost]
 Boost http://www.boost.org/
 (日本語) http://www.kmonos.net/alang/boost/
 (日本語) http://shinh.skr.jp/boost/
[STL]
 STLport http://www.stlport.org/
 SGI-STL http://www.sgi.com/tech/stl/
 STLFilt http://www.bdsoft.com/tools/stlfilt.html
 (日本語) http://www005.upp.so-net.ne.jp/episteme/html/stlprog/
 (日本語) http://www.wakhok.ac.jp/~sumi/stl/
[Loki]
 http://www.moderncppdesign.com/
 LokiPort-MSVC7 http://www.geocities.com/rani_sharoni/LokiPort.html
 LokiPort-MSVC6sp5 http://fara.cs.uni-potsdam.de/~kaufmann/?page=lokiport
[他]
 ACE http://www.cs.wustl.edu/~schmidt/
 Blitz++ http://www.oonumerics.org/blitz/
 flex++ Bison++ http://www.idiom.com/free-compilers/TOOL/BNF-15.html
[他ライブラリリンク集]
 http://www.trumphurst.com/cpplibs/cpplibs.phtml
 (日本語) http://www.kmonos.net/alang/cpp/lib.html

8 名前:デフォルトの名無しさん :04/11/26 21:54:20
>>1乙!

9 名前:デフォルトの名無しさん :04/11/26 21:56:14
あ"ー


10 名前:デフォルトの名無しさん :04/11/26 21:58:31
あ"ー

11 名前:デフォルトの名無しさん :04/11/26 22:02:13
あ"ー?

12 名前:デフォルトの名無しさん :04/11/26 22:02:18
あ"ー


13 名前:デフォルトの名無しさん :04/11/26 22:05:51
STLつかうと一気に実行ファイルサイズが10倍に?!

14 名前:デフォルトの名無しさん :04/11/26 22:07:15
1天乙


15 名前:v(^・^)v :04/11/26 22:09:32
>>13
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない。


16 名前:デフォルトの名無しさん :04/11/26 22:15:08


17 名前:v(^・^)v :04/11/26 22:17:08
>>15
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。

18 名前:デフォルトの名無しさん :04/11/26 22:17:51
>>17
実際増えないだろ。

19 名前:v(^・^)v :04/11/26 22:20:01
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?

20 名前:デフォルトの名無しさん :04/11/26 22:20:57
>>19 マルチパラダイムシフト

21 名前:v(^・^)v :04/11/26 22:21:03
>>19
#include <stdafx.h>

後死ね。

22 名前:v(^・^)v :04/11/26 22:22:04
>>21
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。

23 名前:デフォルトの名無しさん :04/11/26 22:24:31
今回のテンプレにマジレス
>>17,>>19 計2件

今回のあ"ー
>>9-12 計4件

24 名前:デフォルトの名無しさん :04/11/26 22:25:18
テンプレにマジレスは
×>>17,>>19
>>18,>>20
の間違いだった

25 名前:デフォルトの名無しさん :04/11/26 22:42:24
ここは人工無能のいるスレでつか?

26 名前:デフォルトの名無しさん :04/11/26 22:50:18
age

27 名前:デフォルトの名無しさん :04/11/27 00:26:12
伊能四郎のような感じですか?

28 名前:デフォルトの名無しさん :04/11/27 00:29:12
珍子産む嚢

29 名前:デフォルトの名無しさん :04/11/27 01:00:31
http://pc5.2ch.net/test/read.cgi/tech/1101484548/
↑はネタスレでいいか。あの俺俺スレみたいに。

30 名前:停止しました。。。 :04/11/27 01:18:40
真・スレッドストッパー。。。( ̄ー ̄)ニヤリッ

31 名前:再開しました。。。 :04/11/27 01:26:57
真・スレッドリジューマー。。。( ̄ー ̄)ニヤリッ

32 名前:デフォルトの名無しさん :04/11/27 01:27:58
初めてみたw

33 名前:デフォルトの名無しさん :04/11/27 01:59:35
どっちが本刷れ?

34 名前:デフォルトの名無しさん :04/11/27 02:04:06
>>33
時間的にはこっちが本スレ。
ネタスレ用にされた方は削除依頼してほしいんだけど。
このスレ一回ageた方がいいのかもしれん。

35 名前:デフォルトの名無しさん :04/11/27 02:08:12
前回に続き重複か。
今後は宣言してから建てるようにしてくれや。

36 名前:デフォルトの名無しさん :04/11/27 10:45:33
age

37 名前:デフォルトの名無しさん :04/11/27 11:03:09
>>35
voidがわざと重複させたように見える

38 名前:デフォルトの名無しさん :04/11/27 11:36:35
下のコードなんですが、なんとか一時オブジェクトを作らずに済ます方法は無いでしょうか

#include <iostream>
#include <list>
class Destroy{
char* name;
public:
Destroy( char* new_name ){
name = NULL;
setName( new_name );
}
Destroy( const Destroy& destroy ){
name = NULL;
setName( destroy.name );
}
~Destroy(){
delete [] name;
std::cout << "デストラクタが呼ばれました" << std::endl;
}
void setName( const char* new_name ){
if( name ){ delete [] name; }
int size = strlen(new_name);
name = new char[ strlen(new_name)+1 ];
strcpy( name, new_name );
}
};
int main(){
std::list<Destroy> list_destroy;
list_destroy.push_back( "Hage" );
std::cout << "--------終了--------" << std::endl;
return 0;
}

39 名前:デフォルトの名無しさん :04/11/27 12:00:46
Destroyへのポインタを格納するようにするとか。
ただそれするとリストを使う意味があるかどうかという問題が。

40 名前:38 :04/11/27 12:14:15
>>39
ありゃ、それしか無いんですか。
ポインタで持つのは良くやるのですが、仰るとおりで、終了時に一々deleteが
必要で面倒なんですよね。面倒というかなるべく危険は避けたいというか。

まぁ、しょうがないので一時オブジェクト有りで…レスありがとうございました。

41 名前:デフォルトの名無しさん :04/11/27 12:28:59
>>40
>終了時に一々deleteが必要で面倒なんですよね。
スマートポインタ


42 名前:デフォルトの名無しさん :04/11/27 12:32:09
counted pointer を copy-on-write で

43 名前:デフォルトの名無しさん :04/11/27 21:19:07
テンプレートクラスにBridgeパターン、もしくはpimplイディオムで、インターフェースと実装を分離したいのですが、どうすればいいのでしょうか。

当たり前なんですが、以下のようにするとエラーです。

// Test.h

class Test_impl;

template<typename T>
class Test {
Test_impl<T> *pImpl;

public:
Test( void );
~Test( void );

void Set( T data );
T Get( void );
};

44 名前:続き :04/11/27 21:19:29
// test_impl.cpp
#include "test.h"

template<typename T>
class Test_impl
{
T p;
public:
Test_impl( void ){}
~Test_impl( void ){}

void Set( T data ){ p = data; }
T& Get( void ){ return p; }
};

template<typename T> Test<T>::Test( void )
{
pImpl = new Test_impl<T>;
}

template<typename T> Test<T>::~Test( void )
{
delete pImpl;
}

45 名前:続き :04/11/27 21:21:17
Getが参照返してるのは見なかったことにして下さい……。

46 名前:デフォルトの名無しさん :04/11/27 21:55:09
>>43
Test_implの前方宣言にもtemplate<typename T>を書けばコンパイルは通ったけど?

47 名前:デフォルトの名無しさん :04/11/27 22:02:47
>>43
// Test.h
template<typename T>
class Test
{
class Impl;
Impl *pImpl;

// test_impl.cpp
#include "test.h"
template<typename T>
class Test<T>::Impl
{


48 名前:デフォルトの名無しさん :04/11/27 23:00:31
あ、忘れてました。

コンパイルは通ると思いますが、実際に宣言すると、外部参照でエラーがでるかと思います。

49 名前:43 :04/11/27 23:02:07
#include "test.h"

int main( void )
{
Test test; // !エラー

return 0;
}

50 名前:デフォルトの名無しさん :04/11/27 23:03:52
>>48-49 意味わからん。

51 名前:デフォルトの名無しさん :04/11/27 23:06:49
しょせんプリプロセッサだから。

52 名前:43 :04/11/27 23:09:25
Test<T> が TestImpl<T> をnewするため、TestImplの定義以降に、Test<T> のコンストラクタを定義しないといけないんですが、テンプレートクラスなんで、出来ないんですよね、、、

53 名前:デフォルトの名無しさん :04/11/27 23:12:37
まさかリンクしてないだけ

54 名前:デフォルトの名無しさん :04/11/28 14:34:06
あれだ。「explicit instantiation」

55 名前:デフォルトの名無しさん :04/11/28 14:37:35
clsss Test test;
だったりして・・・

56 名前:デフォルトの名無しさん :04/11/28 17:01:54
>>52
export が使えない以上、test_inst.cpp を作って、

// test_inst.cpp
#include "test_impl.cpp" // cpp は変えたほうがいいかも
template class T<int>;
template class T<char>;

エラーが出なくなるまで explicit instantiation を並べるしかないんじゃない?

57 名前:43 :04/11/28 18:49:52
>>56
ありがとうございます。この方法でいきたいと思います。

58 名前:デフォルトの名無しさん :04/11/28 23:36:42
規格書丸暗記した。もう俺にC++に関して分からないことはない。

59 名前:デフォルトの名無しさん :04/11/28 23:37:02
ごめんうそついちゃった。今がんばって読んでます。

60 名前:デフォルトの名無しさん :04/11/28 23:39:08
規格書、印刷しようと思っても紙代も馬鹿になんないな…
本とか出てるの?本買った方が安いかも。

61 名前:デフォルトの名無しさん :04/11/28 23:50:10
>>60
JISのなら紙で買えるはず

62 名前:デフォルトの名無しさん :04/11/28 23:50:55
>>61
いくら?どこで買えるの?

63 名前:デフォルトの名無しさん :04/11/28 23:51:45
>>61
ANSI/ISOとJISで差異とかあります?ないなら日本語だし願ったり叶ったり
なんですが。

64 名前:デフォルトの名無しさん :04/11/28 23:57:26
>>62
規格番号 JIS X 3014:2003
標題 プログラム言語C++
和文冊子 17,325円

JSA Web Store から検索・注文できる。
http://www.webstore.jsa.or.jp/webstore/top/index.jsp

65 名前:デフォルトの名無しさん :04/11/28 23:58:43
ありがとう。でも高いー。

66 名前:デフォルトの名無しさん :04/11/29 00:04:39
サソクス

67 名前:デフォルトの名無しさん :04/11/29 00:13:24
>>63
www.jsa.or.jp へ行くと、内容の同一性についてもはっきり区分わけしてあるよ

68 名前:デフォルトの名無しさん :04/11/29 00:32:48
>IDT: identical(一致)
>以下の場合、地域又は国家規格は国際規格と一致している。
>  a) 地域又は国家規格が、技術的内容、構成及び文言において一致している。又は、
>  b) 地域又は国家規格が、ISO/IEC GUIDE 21の4.2節に規定した最小限の編集上の変更はあるが、技術的内容において一致している。「逆も同様の原理」があてはまる。

69 名前:デフォルトの名無しさん :04/11/29 03:44:04
今時紙に印刷されたものを読もうなんてださいな。

70 名前:デフォルトの名無しさん :04/11/29 03:46:40
>>69
煽り乙

71 名前:デフォルトの名無しさん :04/11/29 03:51:06
>>70
JISの中の人乙

72 名前:デフォルトの名無しさん :04/11/29 12:56:47
VC++で計算した数値を引数で表示したいんですが、printfで表示されません。だからMessageBoxを使って表示したいんですがエラーがでます。どうしたらいいんでしょうか?どなたか分かる人教えてください。


73 名前:デフォルトの名無しさん :04/11/29 13:39:35
>>72
言ってることがわかりません。
コードとエラーメッセージをコピペしてください。

74 名前:デフォルトの名無しさん :04/11/29 13:49:31
> 分かる人教えてください。
と書いてあるんだから分からない人は黙っていろよ。

75 名前:デフォルトの名無しさん :04/11/29 13:59:47
おまえもな

76 名前:デフォルトの名無しさん :04/11/29 14:08:31
つーか、マルチなんだからほっとけよ。
http://pc5.2ch.net/test/read.cgi/tech/1101100031/183

77 名前:21 :04/11/29 14:48:47
コードです。
int delta_time=final_time-initial_time;
MessageBox(hwnd,delta_time,"時間",MB_OK);
エラーメッセージは
'hwnd' : 定義されていない識別子です。
hwndをこのコードの前に
HWND hwnd;
と宣言するとこのエラーがでます。
'MessageBoxA' : 2 番目の引数を 'int' から 'const char *' に変換できません
整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です
と表示されます。
誰か分かる人教えてもらえると助かります。

78 名前:デフォルトの名無しさん :04/11/29 15:04:44
>>77
MessageBoxは文字列しか受け付けない。
文字列へ直せ。
MessageBox(NULL, _itoa(delta_time), "時間", MB_OK);

79 名前:デフォルトの名無しさん :04/11/29 22:25:53
〜〜file1〜〜   〜〜file2〜〜
datax1 datay1
datax2 datay2
datax3 datay3
って感じでデータが並んでいるファイルがいくつもあって、それを5つごとに
決まった順番で一つのファイルにまとめたいです。データを順番に並べたんですが
どんどん書き出していくと、file1とfile2と…の間に1行空行ができてしまいます。
具体的にどういうプログラムを書いたかというと

ifstream ifs;
ofstream ofs;
char datax[20],datay[20];
ifs.open(file1); ofs.open(outputfile)
while(!ifs.eof()){
ifs >> datax >> datay;
ofs << datax << " " << datay << "\n";
}
ifs.close();
ifs.open(file2);
while(!ifs.eof()){
ifs >> datax >> datay;
ofs << datax << " " << datay << "\n";
}
ofs.close();

って感じです。実際はfile1、file2と指定するのにループとか使ってるけど。

80 名前:79 :04/11/29 22:27:20
空行があると、その後の処理がまた面倒になるので、空行は
入ってほしくないんですが、このプログラムでおかしいところって
ありますか?

81 名前:デフォルトの名無しさん :04/11/29 22:48:41
>>80
datayに改行が入ってるんでないの?

82 名前:79 :04/11/29 23:15:28
>>81
ビンゴでした。
ありがとうございます。

83 名前:デフォルトの名無しさん :04/11/30 01:26:31
ttp://namazu.org/~satoru/unimag/9/

ここのHPのテキスト "abracadabra" の Suffix Array を作成する C 言語のサンプルプログラムのソースを
VC++6.0でビルドするとerror C2440: 'initializing' : 'void *' から 'int *' に変換することはできません。とエラーが出ます
どうにかならんもんでしょうか?


84 名前:デフォルトの名無しさん :04/11/30 01:32:39
C++ではなくCとしてコンパイルする。

「C言語のサンプルプログラム」って、てめーで書いてるじゃねーか。

85 名前:デフォルトの名無しさん :04/11/30 13:58:49
VC++6, 7.1で、デストラクタを呼び出すときに、
クラス名でなく、変数名を使えるんですが、正しい仕様ですか?
g++ではコンパイルがとおりませんでした。

//以下コード
struct C
{
C(){cout << "C" << endl;}
~C(){cout << "~C" << endl;}
};

int main()
{
C c;
new(&c) C;
c.~c();
}
//以上コード

//以下出力
C
C
~C
~C
//以上出力


86 名前:困りました :04/11/30 14:03:26
VC6 で、最頻値の平均を計算するテンプレート関数を作りました。

/**
 *  Calculate average of mode elements (most frequently appearing elements).
 *  @param  cont    Container of numeric values.
 *  @return         Mode average.
 */
template<typename Cont>
Cont::value_type ModeAverage(const Cont& cont)
{
    typedef map<Cont::value_type, int>  ValueCounter;
    ValueCounter counter;

    // Count up value furequency and get max frequency.
    int maxFreq = 0;
    {
        Cont::const_iterator it;
        for (it = cont.begin(); it != cont.end(); it++) {
            int& c = counter[*it];
            c += 1;
            maxFreq = MAX(maxFreq, c);
        }
    }

87 名前:困りました :04/11/30 14:03:45

    // Sum up container element of the max frequency.
    Cont::value_type sum = 0.0;
    int sumCount = 0;
    {
        ValueCounter::const_iterator it;
        for (it = counter.begin(); it != counter.end(); it++) {
            if ((*it).second == maxFreq) {
                sum += (*it).first;
                sumCount++;
            }
        }
    }

    return sum / sumCount;
}

88 名前:困りました :04/11/30 14:04:10

    // Sum up container element of the max frequency.
    Cont::value_type sum = 0.0;
    int sumCount = 0;
    {
        ValueCounter::const_iterator it;
        for (it = counter.begin(); it != counter.end(); it++) {
            if ((*it).second == maxFreq) {
                sum += (*it).first;
                sumCount++;
            }
        }
    }

    return sum / sumCount;
}


89 名前:困りました :04/11/30 14:04:48
ごめんなさい。2重送信してしまいました。。。

90 名前:困りました :04/11/30 14:05:37
上記の関数をテストする関数を書きました。

    // test ModeAverage
    {
        double data[10] = { 2.0, 1.0, 2.0, 5.0, 3.0, 4.0, 5.0, 2.0, 5.0, 4.0 };
        vector<double> v;
        for (int i = 0; i < 10; i++) {
            v.push_back(data[i]);
        }

        double ave = ModeAverage(v);
        double must = (2.0 + 5.0) / 2;
        ASSERT(DOUBLE_EQUAL(ave, must, 1.0e-100));
    }


91 名前:困りました :04/11/30 14:06:19
このテストが、アクセス違反を起こします。
原因は何が考えられるでしょうか?

92 名前:デフォルトの名無しさん :04/11/30 14:08:57
ここは宿題スレじゃないよ

93 名前:91 :04/11/30 14:24:18
すいません、
int& c = counter[*it];
の前に
if (counter.find(*it) == counter.end()) {
    counter.insert(ValueCounter::value_type(*it, 0));
}
を入れたら正常動作しました。

でもおかしいですね。
map の [ ] は自動的に要素を追加してくれるはずなのに。。。

94 名前:デフォルトの名無しさん :04/12/01 12:38:31
cout<< (1==0)?'a':'b';

うんこ

95 名前:RADE :04/12/01 19:03:52
識者の方にお伺いをしたく思います。
スレ違いかもしれませんが・・・

VC++6.0でCreateFileでCOMポート開いて、通信速度を
1bpsに設定して、オシロスコープで波形観測してみますた。

本当は、通常のCOMポートって、デバイスマネージャ等で設定
できる値以外にどんな値がセットできるかを確認するうえでの
プログラムをしたのですが、幸い1bpsに関してもポート設定
ができましたもので、ならばこの糞遅いボーレートの観測を
してやろうと思いまして。

しかし、です。どうみても1秒間隔でビットが送られているように
みえません。送ったデータは&hAAで、ビット的に10101010となる
ものです。つまり、ハイ・ローの間隔が1秒毎にしたわけです。

擬似的に1bpsが実現していて、ハードウェア的に1bpsは実現して
なかったということでしょうか?


96 名前:デフォルトの名無しさん :04/12/01 19:08:05
誤爆?

97 名前:デフォルトの名無しさん :04/12/01 23:05:15
ネタ?

98 名前:デフォルトの名無しさん :04/12/01 23:05:34
釣り?

99 名前:デフォルトの名無しさん :04/12/01 23:06:07
結論:スレ違い。

100 名前:デフォルトの名無しさん :04/12/02 00:30:24
自分で確保したメモリ領域に対して、あるクラスのコンストラクタをコールすることは出来ないのでしょうか?


101 名前:デフォルトの名無しさん :04/12/02 00:35:47
>>100
placement new

102 名前:100 :04/12/02 00:48:50
>101
ありがとうございます。下記コードを試してみたところ、再定義されましたとエラーが出ました。
void* operator new(size_t size, void* p)
{
  return p;
}

どこかで定義されているだろうと思い、以下のテストコードを試してみましたが、エラーが出てしまいました。
・・・
 int i[32];
 int *pi = new(i) int;
}

環境はVisualC++2002です。何か根本的な間違いをしているのでしょうか?

103 名前:100 :04/12/02 00:54:39
自己解決しました。

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

が原因でした。お騒がせしました。

104 名前:デフォルトの名無しさん :04/12/02 09:50:27
今プログラミング言語C++の例外処理のところを読んでいたら
explicit auto_ptr (X* p = 0) throw() { ptr=p; }
という記述が出てきたのですが、このthrow()とはどういう意味なのでしょうか?

前後を読んでみても何も説明がないようなのですが。

105 名前:デフォルトの名無しさん :04/12/02 09:52:33
「例外を投げるかもしれない関数です」という意味です

106 名前:デフォルトの名無しさん :04/12/02 10:00:14
>>105
P440に書いてありました。
ありがとうございました。

107 名前:デフォルトの名無しさん :04/12/02 10:12:25
>>105-106
オイオイ


108 名前:デフォルトの名無しさん :04/12/02 10:47:13
>>105
知ったか厨は氏ね!

109 名前:デフォルトの名無しさん :04/12/02 11:08:23
throw(e1, e2) は e1 , e2 型、それから派生した型のどれかが投げられる可能性があるという意味
なにも例外を投げない時は throw() と書く

110 名前:デフォルトの名無しさん :04/12/02 12:03:20
可能性で言い出したら、
std::exceptionとその派生がスローする可能性をどう扱うべきなのかと言う点で
ザルのような仕様だよね。

111 名前:デフォルトの名無しさん :04/12/02 12:22:02
一つのクラスが記述されたcppファイルがただいま251KBなのですが、
これってどうでしょう、大きすぎますか?

一応コンポジット関係にあったクラスすら、他のファイルに切り分けたのですが
それでもこの結果です。

些末ですし、普段ならさほど気にならないのですが、
オープンソースにしなければで・・・恥かきたくないなぁ。

112 名前:デフォルトの名無しさん :04/12/02 13:38:39
いっそさっさとオープンにして、その判断を任せればいいんでは?
恥ったって、バージョン上がるごとに過去のソースは恥ずかしく思えるだろうし(たぶん)

むしろその恥を隠すために更新が滞らなくなれば尚更(・∀・)イイ

113 名前:デフォルトの名無しさん :04/12/02 13:50:05
>>111
>112に激しく同意。

114 名前:デフォルトの名無しさん :04/12/02 14:09:59
>>112-133

ぶっちゃけ開発放棄のためのオープンs…ゴッホゴッホ
確かに内容にもよりますし、中見ないことには判断出来ないですよね。
レスありがとうございました。

115 名前:デフォルトの名無しさん :04/12/02 14:18:49
ブランクの何にも書いてないただのウィンドウを作ってみたところ、
一回目だけちゃんとえらーが出ずに窓が開けたんですが、
二回目以降はプロセスにとどまったまま開かず、数回コンパイル>ビルド
を繰り返したところ、
DebugLINK : fatal error LNK1168: cannot open Debug/Win.exe for writing
というメッセージでコンパイルすらできなくなり、そしてまたビルドしたら開かず、コンパイルはまたできるようになって。

一応ネットで模範のコードを2つと、本に書いてあったコード全部試してみて
同じ結果だったので、作り方に問題があるとは思えないけど。。。
プロセスを強制終了させてまたビルドし直しても、またプロセスに留まるだけ。。
これは仕様なの?

116 名前:デフォルトの名無しさん :04/12/02 14:23:02
>>115
PostQuitMessageしてないと超予想

117 名前:115 :04/12/02 14:26:39
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{

case WM_CLOSE:

DestroyWindow(hWnd);

break;

case WM_DESTROY:

PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}

こんな感じでPostQuitMessageしてるよ。

118 名前:デフォルトの名無しさん :04/12/02 14:33:24
>>115
たぶん仕様です。
115が「そういう動作をするコード」を書いたので、C++コンパイラやらOSやらは
正しく仕様どおりにそういう動作をしている、ってこと。

119 名前:デフォルトの名無しさん :04/12/02 14:34:50
C++は不特定多数で開発するオプソには不向き。
中心となる人が優れていて、最初の公開の段階で
ある程度見通しがいいものならいいんだけど。

120 名前:デフォルトの名無しさん :04/12/02 16:12:17
じゃぁある程度見通しがたっていなくともC言語なら開発しやすいわけ?

121 名前:デフォルトの名無しさん :04/12/02 16:45:43
>>120
クラス名とかメソッド名の名前付けのセンスがあわない時に泣きたくなる位じゃないかと思うがなぁ。
仕事ならなんとかなるけど、好きで作ってる物でかち合うと悲しいんだよなぁ。


122 名前:デフォルトの名無しさん :04/12/02 16:49:05
ひととおり動くβ版ができてから公開ってのがいいかもね。
設計段階からオープンにするとたしかにしんどそう。

123 名前:デフォルトの名無しさん :04/12/02 19:13:29
ぶっちゃけ、オープンソースで開発しようったってコード書くやつなんか
限られてる。特に動かないうちなんか興味を持たれることすらまずない。
逆に動かないものを公開するとそれっきりになる危険すらある。

なので、>>122に賛成。

設計から付き合うやつなんて、まずいないって。

124 名前:デフォルトの名無しさん :04/12/02 19:22:01
>>123
まぁ、知合い同士でわいわいする為のネタ。

125 名前:デフォルトの名無しさん :04/12/03 01:11:15
よく、クラスで演算子を定義する時には、
「+」の処理で、あらかじめ実装しておいた「+=」を使えばいいとか聞くけど、
なぜ「+=」の処理で「+」を使うようにしないの?
「+=」は、「a=a+b」を「a+=b」という風に簡略化して書くためにあるものだから、
「+」を先に実装するもんだと思うんだが……。
別におかしいと言ってるわけじゃないんだけど、何か理由があるのかと気になる。

126 名前:デフォルトの名無しさん :04/12/03 01:13:46
+=は代入先のオブジェクトがあるので、テンポラリオブジェクトなしで
演算を終えることができるため。

127 名前:125 :04/12/03 01:16:02
>>126
早い……。
ありがとう。

128 名前:ほんたま :04/12/03 07:09:41
プログラマーのみなさん、教えてください。
ひとつのオブジェクトを2つに分裂させるコードを書きたいのですが、どう書けばいいのですか?
擬似的に2つに分裂したように見えるのではなくて、実際に2つに分裂するコードを書きたいのです。
つまり1つから2つのオブジェクトが同時に発生し、2つのオブジェクトの発生にはほんの少しの時間差もないという、事実上の分裂を書きたいのですが…


129 名前:デフォルトの名無しさん :04/12/03 07:34:00
↓何事もなかったかのようにC++相談室をお送りします。

130 名前:デフォルトの名無しさん :04/12/03 12:03:05
点のリスト PointList を作りました。

struct Point {
  double x, y, z;
}
typedef vector<Point> PointList;

ここで PointList 内の点を列挙することは簡単です。
イテレータを使えばいいです。

PointList points = ...;
PointList::const_iterator it;
for (it = points.begin(); it != points.end(); it++) { ... }

では、PointList 内の x 座標を列挙するするイテレータを
作るにはどうしたらよいでしょうか?
列挙するだけであれば、点を列挙して .x をとればいいですが、
x だけを列挙するイテレータがほしいのです。

x_iterator it = ...;
double x = *it;

このようなイテレータを簡単に作ることはできるでしょか?
イテレータ クラスを自分で書くしかないですか?

131 名前:デフォルトの名無しさん :04/12/03 12:12:11
PointList::const_iterator it;

... it->x ...

132 名前:デフォルトの名無しさん :04/12/03 12:15:25
boostのiterator_adaptorでも使えば?

133 名前:デフォルトの名無しさん :04/12/03 21:02:58
ありがとうございます。やっぱり boost ですか。
これぐらいは C++ 標準で用意してほしいですよね。

134 名前:デフォルトの名無しさん :04/12/03 21:50:34
>>133
文句はC++標準化委員会に言って下さい。
ここはお前の日記じゃねーんだ。

135 名前:デフォルトの名無しさん :04/12/03 21:54:49
技術的に反論できねーカスがスレの存在意義を否定してるんじゃねえよ (プ

136 名前:デフォルトの名無しさん :04/12/03 22:00:32
>>135
負け惜しみか?氏ねば?

137 名前:デフォルトの名無しさん :04/12/03 22:24:31
>>136
あ? 何だお前、それで勝負でもしてたつもりだったのか? (プゲラ

138 名前:デフォルトの名無しさん :04/12/03 22:26:51
>>137
それで技術的な反論のつもりですか?
「はい」ならあなたは完璧に負け犬、「いいえ」なら頭の悪い厨確定ですね ;-)

139 名前:デフォルトの名無しさん :04/12/03 22:35:23
冬厨が湧くにはまだ少し早いと思うのだが。

140 名前:デフォルトの名無しさん :04/12/03 22:43:59
┌───────────────────┐
|致命的なエラー                [×]|
├───────────────────┤
|質問者は致命的なエラーを抱えています。  |
|                             .|
|スルーしますか?                  |
|     [ はい(Y) ] [ いいえ(N) ]        |
└───────────────────┘

141 名前:デフォルトの名無しさん :04/12/03 22:53:21
秋は唯一厨の沸かない季節だと誰が決めたんだろう

142 名前:デフォルトの名無しさん :04/12/03 22:56:35
>>138
お前の脳内で確定されても痛くもかゆくもない
スコープの概念が見えてないアフォが煽ったつもりらしいがw

143 名前:デフォルトの名無しさん :04/12/03 23:34:50
マジレスで失礼するが、
そう口論は感情を抑えて早く離れるべき。

144 名前:デフォルトの名無しさん :04/12/04 11:32:33
void myStrcpy( char* a, char* b){ while (*a++ = *b++) ; }

これで、++は、何を増加させてるのですか?
a,bはCharだから、アスキーコードを考えて、アルファベットが一文字ずつ上がっていくってこと?
この関数もBodyって、whileの部分だけだよね?
ってことは、これ、いつこのループは、終わるんでしょう。。。


145 名前:デフォルトの名無しさん :04/12/04 11:36:25
ポインタの勉強しろ。それで解決する。

146 名前:デフォルトの名無しさん :04/12/04 11:37:52
>>144
++はデリファレンスよりも優先順位が高いから、
*a++ は *(a++) と同じ。
ポインタをインクリメントしてから参照してる。
(後置だから参照してからインクリメントが正しいか)
文字列の終端に来たら *a == 0になってループを抜ける

147 名前:デフォルトの名無しさん :04/12/04 11:38:18
>>144
Cスレ逝けよ。C厨の方がポインタをずっと親切に教えてくれるから。

148 名前:デフォルトの名無しさん :04/12/04 13:53:08
だって a++,b++,!C++ だもんね!

149 名前:デフォルトの名無しさん :04/12/04 14:42:17
>>147
唐突に別の言語の話をはじめて ( ゚д゚)ポカーン されるJ厨等と同類

150 名前:デフォルトの名無しさん :04/12/04 15:12:25
>>149
( ゚Д゚)ハァ?C++だから当然Cのポインタも含んでいるけど、
>>144の質問はどう考えてもCのスレの方がお似合いだろ。
空気読め池沼。

151 名前:デフォルトの名無しさん :04/12/04 15:18:04
>>150
思いこみの激しい人だな。
C は別の言語だ。 C++ じゃない。
似ていようがいまいが、それはあくまで与太話でしかない。
ここはム板だ。技術的な話はドライなスタンスが基本であることは言うまでもない。

152 名前:デフォルトの名無しさん :04/12/04 15:26:07
>>151
じゃあCがC++と「別の」言語だと捉えている貴方に質問しますが、>>144
質問はC++で常に答えてやった方がいいと思うのか?
>>146==>>151だと思うが、別に>>146を俺は叩いたつもりは無いはずだが、
もしかして被害妄想か?

153 名前:デフォルトの名無しさん :04/12/04 15:42:48
>>152
俺は 151 だが 146 ではない。

いいもへったくれもない。
単に C++ の話であり、他のどの言語の話でもない。

154 名前:デフォルトの名無しさん :04/12/04 15:43:57
>>153は池沼。
単なるchar型へのポインタの話でさえCとC++は全く違っていて、互換性の
ある説明は出来ないと思いこんでいるバカ。

155 名前:デフォルトの名無しさん :04/12/04 15:46:52
>>154
C++ のポインタについて聞いている人に C のポインタの答えをするトンマが泣いてるよ

156 名前:デフォルトの名無しさん :04/12/04 15:47:13
もちろんCスレに行けば適切に答えてくれるだろうが、
正しいC++の質問をわざわざ誘導するのはどうかと思うぞ。

157 名前:デフォルトの名無しさん :04/12/04 15:47:50
>>155
もういいよ。アホの相手をするのは疲れた。

158 名前:デフォルトの名無しさん :04/12/04 15:49:37
>>156
そしたらCの質問をあたかもC++の質問のようにする厨が多量に流入しても
お前は答えてやるつもりなんだな!?そしたらもうC専用スレの存在意義が
(100%ではないが95%ほどは)なくなるね。

159 名前:デフォルトの名無しさん :04/12/04 15:51:20
>>155
いちいちageんなウゼえ

160 名前:デフォルトの名無しさん :04/12/04 15:53:39
>>158
ほう、>>144 がそうだとでも言う気かよ

161 名前:デフォルトの名無しさん :04/12/04 15:55:35
>>160
釣りなら海に行ってしてくれ。今日は天気が悪いから釣れないだろうがな

162 名前:デフォルトの名無しさん :04/12/04 15:57:36
>>158
最初にそう断ってからから誘導すれば、荒れずにすんだと思われることが多々ある。

163 名前:デフォルトの名無しさん :04/12/04 15:58:19
>>158
>そしたらCの質問をあたかもC++の質問のようにする厨が多量に流入しても
>お前は答えてやるつもりなんだな!?
Cの質問かC++の質問か区別できない場合には、そうする。

>そしたらもうC専用スレの存在意義が
>(100%ではないが95%ほどは)なくなるね。
そうか?いずれC++を学ぶにしてもCから始める
学習者は多いと思うが。

本人がC++を学んでいるつもりであれば、C++スレに質問するだろう。
そういう場合に、内容がCと重複しているからといって、Cスレに誘導するのは、
独立した言語のスレとしてどうなんだろう、といいたい。

164 名前:デフォルトの名無しさん :04/12/04 16:00:14
>>163
>そうか?いずれC++を学ぶにしてもCから始める
>学習者は多いと思うが。

だったらなおさらの事、CとC++で重複している質問はCスレへ誘導してやれよ。
このスレの過密化を防ぐためにわざわざ独立スレとして立ててるんだろ。


165 名前:デフォルトの名無しさん :04/12/04 16:01:03
>>162
それぐらいは空気読んでわからんか?頭が悪いね。

166 名前:デフォルトの名無しさん :04/12/04 16:06:16
>>144
当分の間はこれと同じことをしていると思えばいい。
void myStrcpy(char* a, char* b) {
 while (1) {
  *a = *b;
  if (*a == '\0')
   return;
  a++;
  b++;
 }
}


167 名前:デフォルトの名無しさん :04/12/04 16:11:55
>>144
void myStrcpy( char* a, char* b){ while (*a++ = *b++) ; }

void myStrcpy( char* a, char* b){ do { *a = *b; a++; b++; } while (*a) ; }

このスレは池沼の住処だから、これ以上のことはCスレで訊きんしゃい。
ちなみにこのコードは空文字が与えられた時の挙動がダメダメってことと
>>144 もすぐに挙動が分からなかったように可読性も悪いコードとして
有名だから真似はせんようにね。

168 名前:デフォルトの名無しさん :04/12/04 16:15:15
>>167
>このコードは空文字が与えられた時の挙動がダメダメ
下のほうのことだよね?

169 名前:デフォルトの名無しさん :04/12/04 16:52:09
この++って、*aと*bが格納されてる場所のアドレスが増えてるってことだよね?
つまり、Bodyにカウントをつけたとしたら、
最初与えられたアドレスから連続していくつ、そのメモリが使われてるか分かるってこと?

170 名前:デフォルトの名無しさん :04/12/04 16:54:52
>>169
Cスレ逝け池沼

171 名前:デフォルトの名無しさん :04/12/04 16:56:38
>>167
アホでたー

172 名前:デフォルトの名無しさん :04/12/04 16:56:59
>>169
そうじゃなくて*a = *b;を行っているから文字列のコピーだよ。関数名見ろ。

173 名前:144 :04/12/04 16:59:11
このスレには>>167みたいな低脳しかいないのですか?

174 名前:デフォルトの名無しさん :04/12/04 17:11:51
167はいつもCスレを荒らしているC++厨

175 名前:デフォルトの名無しさん :04/12/04 17:13:45
>>167
めっちゃ恥ずかしいなお前。人の事を池沼呼ばわりしておいて、
自分が池沼と言われても仕方ないようなレス書いて。

176 名前:デフォルトの名無しさん :04/12/04 17:18:36
>175
>めっちゃ恥ずかしいなお前。人の事を池沼呼ばわりしておいて、
>自分が池沼と言われても仕方ないようなレス書いて。

池沼の住処とは自分の事を指していたのでは?

177 名前:デフォルトの名無しさん :04/12/04 17:39:44
池沼って誰のことですか。

178 名前:デフォルトの名無しさん :04/12/04 17:42:47
144=167のこと。

179 名前:デフォルトの名無しさん :04/12/04 17:55:32
>このスレの過密化を防ぐためにわざわざ独立スレとして立ててるんだろ。

これは初耳

180 名前:デフォルトの名無しさん :04/12/04 17:55:52
166さんありがとう。
当分の間はこれと同じことをしていると思えばいい。
void myStrcpy(char* a, char* b) {
 while (1) {
  *a = *b;
  if (*a == '\0')
   return;
  a++;
  b++;
 }
}


if (*a == '\0')って、if (*a == '\0'||*b == '\0')じゃなくて?


181 名前:デフォルトの名無しさん :04/12/04 17:59:42
*b++は何を表してる?って聞かれたら。。。
低脳なの、承知です。
プログラム初めてなもので・・・。
すいません。

182 名前:デフォルトの名無しさん :04/12/04 18:00:24
池沼・・・

183 名前:デフォルトの名無しさん :04/12/04 18:02:01
>>181
*a に *b を代入しているので、片方を0と比較すればもう片方はその必要がない。

184 名前:デフォルトの名無しさん :04/12/04 19:19:13
質問です。
arrayに入ってる中身の順序を逆さに並び替えたいんだけど、
追加のstrageなしでってことで、XORを使おうとしてるんだけど、
XORがいまいち、よく分からないのです。
reverseOrder(array[]);の定義なのですが・・・。

185 名前:デフォルトの名無しさん :04/12/04 19:21:35
必殺!「いまいちよく分からない」!

186 名前:デフォルトの名無しさん :04/12/04 19:23:36
184です。解決しました。

187 名前:デフォルトの名無しさん :04/12/04 19:24:38
お前の言いたいことがよくわからんが、逆さはとりあえずこれで出来るぞ

#include <algorithm>

const int N = 10;
int array[N];

std::reverse(&array[0],&array[N]);

188 名前:デフォルトの名無しさん :04/12/04 19:25:38
「C++の前にCを学ぶべきか」っていうスレが必要だな

189 名前:デフォルトの名無しさん :04/12/04 19:28:55
>>184
宿題スレで聞いたほうがいいと思う。
なぜなら質問点を明確にできていないから。

(xor について独り言)
神話に出てくる大先生の本にさえ「驚くべき」とか書いてあることを
ノーヒントで放り出す教授の意図はいったい・・・

大学の存在意義がここにあるわけだが

190 名前:デフォルトの名無しさん :04/12/04 19:31:41
>>189
もったいつけずに言いたいことを言ってくれ。

191 名前:デフォルトの名無しさん :04/12/04 19:35:14
どうせ「トリッキーなコード その2」の44だろ?

192 名前:デフォルトの名無しさん :04/12/04 19:37:03
要は初心者レベルの質問は
宿題スレか初心者スレに逝けってことだ

ぼるじょあがC/C++の宿題を片付けますYO! 35代目
http://pc5.2ch.net/test/read.cgi/tech/1101568895/l50
【初心者歓迎】C/C++室 Ver.12【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1101100031/l50

>>144だの>>184だのこのスレで扱う話題じゃない。

193 名前:伊能四郎 :04/12/04 23:59:14
どうもです。

194 名前:デフォルトの名無しさん :04/12/05 00:36:53
ズン!!

195 名前:デフォルトの名無しさん :04/12/06 17:52:54
1 "hogehoge" "hage" 123 //int 文字列 文字列 int
2 "hige hige" 456       //int 文字列 int
3 "hegehege" "hage" 789 //int 文字列 文字列 int

こういう既存のtxtファイルがあるのですが、1や3の様にhageてる場合と
2の様にhageが無い場合があるんです。
STLでこれを、区別して読むにはどうすれば良いのでしょうか。

またhige higeの様に間にスペースが入ってしまう時にも
""内を一息に読み込む方法はあるのでしょうか。
いまは終端の"が無ければ一回読み込み、結局strcatで連結しています。

196 名前:195 :04/12/06 17:54:01
書き忘れすいません
hageは例でして、必ずhageという文字列とは限らないんです

197 名前:デフォルトの名無しさん :04/12/06 18:02:12
>>195
それはSTLの問題ではないだろ。
読み込みパーザを書きなさい。

198 名前:デフォルトの名無しさん :04/12/06 18:03:07
>>195
STL?std::ostream_iteratorでも使うって意味か?
std::ifstreamの間違いじゃないの?

199 名前:195 :04/12/06 18:13:47
しまったSTLは取り消します。仰るとおりstd::fstreamです。

あるいは読み込み区切り文字を変えたりして
簡単に出来ないかなと思ったのですが、やはりこの辺は細かくやらなきゃなんですか。

となるとあまり恩恵も感じられないし、、
fgetsに戻りたくなりますねぇ。レスサンクスでした。

200 名前:デフォルトの名無しさん :04/12/06 18:22:20
std::getline()で一行をstd::stringに読み込み、それをstd::stringstreamに
ぶち込んで、1や3を前提として読んで、エラーが起きればclear()して
seekg()で先頭に戻し、2を前提で読み込む。

201 名前:195 :04/12/06 18:32:46
>>200
ありがとうございます。
そうかそこだけ別streamに取って無理矢理エラーを出させれば良いのか。
感謝です。

202 名前:デフォルトの名無しさん :04/12/06 20:51:40
while(getline(ifs,line)){
escaped_list_separator<char> sep(''\\,' ');
tokenizer<escaped_list_separator<char> > tok(line,sep);
tokenizer<escaped_list_separator<char> >::iterator it = tok.begin();
・・・
}

203 名前:デフォルトの名無しさん :04/12/08 09:51:45
正規表現で一番速いライブラリはどれだと思う?

204 名前:デフォルトの名無しさん :04/12/08 10:07:32
pcre

205 名前:デフォルトの名無しさん :04/12/08 12:29:00
boost::regex は?

206 名前:デフォルトの名無しさん :04/12/08 19:10:52
今読んでる本に組み込み型ってあったんですけど、
これって std::complex 等標準クラスも含まれるんですか?
それとも int, char long 等だけですか?

207 名前:デフォルトの名無しさん :04/12/08 19:12:00
C++の場合はPODと言った方がいいかもな。

208 名前:デフォルトの名無しさん :04/12/08 19:29:31
質問ですunsorted list(ソートされないリスト)で
┏━┳━┳━┳━┳━┳━┓
┃10┃53┃24┃35┃  ┃  ┃
┗━┻━┻━┻━┻━┻━┛
と配列が渡されたとき、「75」を挿入すると

┏━┳━┳━┳━┳━┳━┓
┃10┃53┃24┃35┃75┃  ┃
┗━┻━┻━┻━┻━┻━┛
となるので正しいですか??

また、
┏━┳━┳━┳━┳━┳━┓
┃10┃53┃24┃35┃  ┃  ┃
┗━┻━┻━┻━┻━┻━┛
から53を削除した場合、リストはどの様に並びますか?
よろしくおねがいしますm(_ _"m)


209 名前:デフォルトの名無しさん :04/12/08 19:35:18
>>208
unsorted listでは何を指すかわからない。もっと具体的に書こう。
もし、std::listならば、>>208で正しい。
単に削除と書かず、具体的に実行した関数(erase()など)を添えよう。

210 名前:デフォルトの名無しさん :04/12/08 19:40:50
>>208
マルチうざい。

211 名前:デフォルトの名無しさん :04/12/08 19:45:15
>>206
std::complex<>は標準ライブラリによって定義されているので
組み込み型とは言わない。
組み込み型とは、言語によって定義されている、bool, int, char,...の事。

>>207
PODはまた別の概念。たとえば
struct point{int x,y;};
はPODだが組み込み型ではない。

212 名前:デフォルトの名無しさん :04/12/08 20:15:01
PODって英語で言うと何の略だっけ?
いや意味は分かるんだけど、英単語がどれか迷う
ネタフリじゃないよ

213 名前:デフォルトの名無しさん :04/12/08 20:15:53
Plain Old Dataじゃなかったか

214 名前:デフォルトの名無しさん :04/12/08 20:21:53
>>213
おおサンクス!胸のつかえが取れたよ
よもやネタ無しでレス頂けるとは

215 名前:デフォルトの名無しさん :04/12/08 20:28:02
上島竜平が「絶対に押すんじゃないぞ」と言っていたら、
本当に押されなかった様な哀愁を感じる

216 名前:デフォルトの名無しさん :04/12/08 23:51:03
意地が悪いな(w

217 名前:デフォルトの名無しさん :04/12/09 16:02:53
あるクラスのメンバ関数を(明示的に)インライン化しようと思って
定義をソースファイルからヘッダに移したのですが、
その関数の中で使われているクラスが"認識できない型"と言われ
コンパイルできなくなってしまいました。
明示的インライン化を行うときは何か特別な手続きが必要なのでしょうか?

218 名前:デフォルトの名無しさん :04/12/09 16:11:57
age

219 名前:デフォルトの名無しさん :04/12/09 16:15:29
>>217
include してる?

220 名前:デフォルトの名無しさん :04/12/09 16:16:45
>>219
はい、さすがにincludeはしてます

221 名前:デフォルトの名無しさん :04/12/09 16:21:42
>>220
あやしい…
ソースファイルでincludeしたもの全部インクルードしてもそうなる?

222 名前:デフォルトの名無しさん :04/12/09 16:23:34
ソース見ないとワカラン

223 名前:デフォルトの名無しさん :04/12/09 16:33:24
ソースはこんな感じです
(改行が多いといわれたのでメンバ変数を省略しました)
GetEdgeToのなかでEdgeクラスが見つからないと言われてしまいます

#include "CommonInclude.h"
#include <list>
#include "boost/numeric/ublas/vector.hpp"
#include "Edge.h"
using namespace std;
class Edge;
class Vertex
{
public:
Edge *GetEdgeTo(Vertex *vertex);
protected:
void SetPoint(vector<precision> *point) {this->point = point;}
void SetEdgeList(list<Edge> *edgeList) {this->edgeList = edgeList;}
private:
list<Edge> *edgeList;
};
inline
Edge *Vertex::GetEdgeTo(Vertex *vertex)
{
for (list<Edge>::iterator itr = edgeList->begin(); itr != edgeList->end(); itr++) {
Vertex *head = (*itr).GetHead();
if (head == vertex)
return &*itr;
}
return NULL;
}

224 名前:デフォルトの名無しさん :04/12/09 16:35:08
>>223
Edge.hの中でEdgeクラスが定義されてるなら
class Edge; ←これを消してみれば

225 名前:デフォルトの名無しさん :04/12/09 16:37:05
additional storage 使わないでスワップするときって、int型ならXOR使ってっていうのは、
分かったんだけど、doubleとか char の場合ってどうするか分かりますか?

226 名前:217 :04/12/09 16:38:28
>>224
Edge.hの中でVertexクラスを使っているので
それをとってしまうと循環参照がうまく解決されないのです

227 名前:デフォルトの名無しさん :04/12/09 17:28:03
>>226
ならinlineは無理

228 名前:217 :04/12/09 17:36:13
>>227
そういうものなんですか・・・
それってどの辺を調べれば出てきますか?

229 名前:デフォルトの名無しさん :04/12/09 17:44:35
1クラス1ファイルという馬鹿げた習慣をやめる

230 名前:デフォルトの名無しさん :04/12/09 17:50:01
>>223
// a.h
#ifndef A_H
#define A_H
class B;
class A {B *mv; void mf();};
#include "B.h"
inline void A::mf() {B b;}
#endif
//b.h
#ifndef B_H
#define B_H
class A;
class B {A *mv; void mf();};
#include "A.h"
inline void B::mf() {A a;}
#endif

231 名前:デフォルトの名無しさん :04/12/09 18:16:01
>>226
>Edge.hの中でVertexクラスを使っているので
どういうコード書こうとしているのかによりますけれど,普通edgeにはvertexを
指す機能だけを持たせればよいのですから,Edgeが必要とするのは
Vertex *(またはそれと同等なもの)だけで,その場合Edgeから見えるべきなのは
Vertexの前方宣言だけで良いと思うのですが.

あと根本的な話として,Boostを使っているならBoost.Graphを見てみてはどうですか?

232 名前:デフォルトの名無しさん :04/12/09 18:43:30
UNIXじゃC++はバッチ処理にしか使われてないって本当?

233 名前:デフォルトの名無しさん :04/12/09 18:55:38
バッチ処理に使われているのはRuby
C++なんて問題外^^;;;

234 名前:デフォルトの名無しさん :04/12/09 18:57:53
そうですか、やっぱりRubyを勉強することにします。
ありがとうございました。

235 名前:デフォルトの名無しさん :04/12/09 19:21:48
ちょっと待って!
ソフトウェアの規模によって違うよ。 Ruby > Perl > awk かな??

236 名前:デフォルトの名無しさん :04/12/09 19:29:37
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> awk >>>>>>>>>>>>>>>>>>>>> sed >>>>>Perl

237 名前:デフォルトの名無しさん :04/12/09 19:48:01
何でそんなに比較したがるの?

238 名前:デフォルトの名無しさん :04/12/09 19:50:30
Rubyが優れた言語であることは否定のしようがない事実。
そのことを皆が分かるまで続けます。

239 名前:デフォルトの名無しさん :04/12/09 19:51:11
Pe = ぺ・ヨンジュン

240 名前:デフォルトの名無しさん :04/12/09 19:51:49
>>237
どれもスクリプティング言語だから、それぞれの特徴にあった使い分けをする必要がある。
もし、それをしなかったら世の中に一つの言語しかなくなるよ。
そして、>>235は各言語に向いている開発規模を比較したものであり、言語の優劣を
比較したものではない。

241 名前:デフォルトの名無しさん :04/12/09 19:51:55
Perlだけは許せない。

242 名前:デフォルトの名無しさん :04/12/09 19:52:43
>>238
自己記述可能な処理系になってから言って下さい

243 名前:デフォルトの名無しさん :04/12/09 19:53:02
最近のUNIXではPerlは入ってないよ。
既にRubyに完全に取って代わられました。

244 名前:デフォルトの名無しさん :04/12/09 19:54:06
UNIX板にRubyのスレはありますがPerlのはありませんね。
それが全てを物語っています。
自分もPerlは削除しました。

245 名前:デフォルトの名無しさん :04/12/09 19:55:47
Perlerはクズみたいな連中だからwebprogにでも行けばいいのに。
なに大きな顔してム板にいるのやら。
CGIと混同されるぐらいしか脳のないセンス0の糞言語が。

246 名前:デフォルトの名無しさん :04/12/09 19:58:07
C++も糞。
Ruby作者のmatz氏のお言葉をよく聞け。

http://web.archive.org/web/20000302001334/http://www.ruby-lang.org/ja/compar.html

C++
いろいろと有名なオブジェクト指向言語であるC++とRubyを比較すると:


C++なぞ問題外.^^;;;

http://web.archive.org/web/20000302001334/http://www.ruby-lang.org/en/compar.html

C++
C++ is famous OOPL in many places. Now, let's compare C++ with Ruby:


Ruby is too good to compare ;-)

247 名前:デフォルトの名無しさん :04/12/09 20:03:16
なぜLispと比較しないのか

248 名前:デフォルトの名無しさん :04/12/09 20:03:35
Rubyの欠点は速度かな


249 名前:デフォルトの名無しさん :04/12/09 20:06:54
Rubyの欠点は名前のせいでPerlと何か関係があるかのように信じている人が多いこと。
RubyはPerlより先に生まれ、独自に発展した言語。
Perlを参考にしたこともなければその格からして違う。

250 名前:デフォルトの名無しさん :04/12/09 20:09:49
南京大虐殺なみの捏造ですね


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