【C++】STL(Standard Template Library)相談室 2

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
前スレ
【C++】STL(Standard Template Library)相談室
http://pc5.2ch.net/test/read.cgi/tech/1095583235/

関連スレなどは>>2以降で
2デフォルトの名無しさん:05/01/05 14:41:29
2get!!!!
3デフォルトの名無しさん:05/01/05 14:43:24
>>2
STLならもっとスマートに書けるのに・・・
4デフォルトの名無しさん:05/01/05 14:46:01
>>3
STLなんてつかうより、もっと素直な関数型言語をつかえばいいのに。。
5デフォルトの名無しさん:05/01/05 18:32:52
糞スレ立てんな死ね>>1
6デフォルトの名無しさん:05/01/05 19:56:08
STLはTemplateスレとC++相談室に統合って決まっただろ。
7デフォルトの名無しさん:05/01/07 12:21:01
糞レス乙
8デフォルトの名無しさん:05/01/07 12:35:20
STLを使うと実行ファイルのサイズが一気に100倍に!?
9デフォルトの名無しさん:05/01/08 09:22:32
重複スレなのでこちらへどうぞ。

【C++】template 統合スレ -- Part6
http://pc5.2ch.net/test/read.cgi/tech/1101384692/l50

C++相談室 part38
http://pc5.2ch.net/test/read.cgi/tech/1101473340/l50
10デフォルトの名無しさん:05/01/08 10:28:34
本当にコードが100分の1になるのですか?
11デフォルトの名無しさん:05/01/08 10:33:55
>>10
なる。
100ステップだったらTステップに
1000ステップなら10ステップだ。
10000ステップなら100ステップだ。
12デフォルトの名無しさん:05/01/08 12:53:20
>>11
実際に実行されない部分が多いと思うんだけど。
13デフォルトの名無しさん:05/01/08 12:56:46
>>12
STLのソースで実行されない部分が多いってことを心配してるの?
使う部分しかコンパイルされないから安心するよ
14デフォルトの名無しさん:05/01/08 13:18:34
>>11
templateは呼び出されたときに初めてインスタンスされる。
これを利用して、実装できないメソッドとかの中身をコンパイルエラーがでるようにして、
コンパイル時にチェックするテクニックもある。
たまにずいぶん前に書いたコードがコンパイルすらできないということが発生したりもするw
1514:05/01/08 13:19:11
>>11じゃなくて>>12
すまそ
16デフォルトの名無しさん:05/01/08 16:45:33
立っちゃった以上前スレへのリンクを張っておく。

【C++】STL(Standard Template Library)相談室
http://pc5.2ch.net/test/read.cgi/tech/1095583235/l50
17デフォルトの名無しさん:05/01/09 06:07:53
>>16 >1
18デフォルトの名無しさん:05/01/09 09:16:46
見落としていた……。OTL
19デフォルトの名無しさん:05/01/09 09:25:32
>>18
氏ねよ(プゲラ
20デフォルトの名無しさん:05/01/14 10:59:17
アプリのログファイルの追記を、std::fstreamでやるか、超迷ってます。
ファイルが巨大になったとき、std::fstreamだと激遅なんて事態にならないですよね?
それともc言語のfopenのんが良いのかな。

使ってるコンパイラはBCBでつ。
21デフォルトの名無しさん:05/01/14 11:05:33
>>20
ウンコー
22デフォルトの名無しさん:05/01/14 11:08:11
>>20
何でここで聞くかな。

追記だけなら追加モードで開けばいいから追加するステップが複雑でなければ何を使っても大差ない。
23デフォルトの名無しさん:05/01/14 16:04:35
std::fstreamで短時間にファイルオープン・クローズを繰り返すとやヴぁいでつか?
24デフォルトの名無しさん:05/01/14 16:06:49
もう一つ、std::fstreamにマルチスレッドで出力しても良いでつか?
25デフォルトの名無しさん:05/01/14 16:18:40
>>23
発想がヤヴァイです
キチガイみたいなことすんなよ

>>24
環境かけヴォケ

VCなら大ジョブ
mingwならおけ
cygwinはたぶんヤヴァイ

他はシラネ
26デフォルトの名無しさん:05/01/14 16:19:56
だからなんでここで質問するんだって。
27デフォルトの名無しさん:05/01/14 16:21:53
相談室だろヴォケ
28デフォルトの名無しさん:05/01/14 16:22:59
サンクス、BCBでつ>>25

>>26
「STL iostream」はセットだよ。ググてみて。
29デフォルトの名無しさん:05/01/14 16:24:31
このすれC++相談室に統合でしょ
30デフォルトの名無しさん:05/01/14 16:26:43
いいじゃねーかSTLなんだしよ
仕切りたがりの古参気取りのキチガイよ
おとなしく冬眠してそのまま永眠しとけ
31デフォルトの名無しさん:05/01/14 16:27:49
>>28
BCBはしらねーや
ごめんなこんなおれで
32デフォルトの名無しさん:05/01/14 17:18:14
stream は STL じゃないと何度言えば解るんだハゲ。
33デフォルトの名無しさん:05/01/15 01:45:17
STL を C++ 標準ライブラリと別のスレにする意味がないのと
相変わらず STL と C++ 標準ライブラリの区別がつかない
莫迦が後を絶たないので、このスレ終了。

【C++】template 統合スレ -- Part6
http://pc5.2ch.net/test/read.cgi/tech/1101384692/l50

C++相談室 part38
http://pc5.2ch.net/test/read.cgi/tech/1101473340/l50
34デフォルトの名無しさん:05/01/15 11:17:10
>>30
シねや禿
35デフォルトの名無しさん:05/01/15 11:19:44
>>33
>>9と重複
36デフォルトの名無しさん:05/01/15 16:17:21
C++相談室の次スレには
こんなスレが誤って立たぬよう
是非とも(STL含む)ってのを加えて欲しいものだ
37デフォルトの名無しさん:05/01/16 10:41:19
STLはboostに取って代わられるの?
38デフォルトの名無しさん:05/01/16 10:42:26
五月雨
39デフォルトの名無しさん:05/01/16 11:58:15
>>37
いいえ。
40デフォルトの名無しさん:05/01/17 01:31:57
Boost.STLなるものが出る可能性は十分にあると思う.
41デフォルトの名無しさん:05/01/20 00:40:27
STLがでかいのではなく
streamがでかいのだ。
42デフォルトの名無しさん:05/01/24 03:17:58
boostって何?
43デフォルトの名無しさん:05/01/24 03:55:10
44デフォルトの名無しさん:05/01/24 12:31:36
>>43
愛想のないページしか表示されないんですけど・・・
45デフォルトの名無しさん:05/01/24 12:55:04
>>44
お前は今、全世界数百万人のGoogleユーザーを敵に回した
46デフォルトの名無しさん:05/01/24 13:27:51
イベント日とかオリンピック期間中とか、十分愛想があると思うけど。
47デフォルトの名無しさん:05/01/24 17:43:14
>>45 よく言った(笑
48デフォルトの名無しさん:05/01/24 21:02:03
>>45
六十数億のうちの数百万なんて微々たるものなんですけど・・・
49デフォルトの名無しさん:05/01/24 21:04:20
>>48
そのうち、人間として認められるのは数%だ。
50デフォルトの名無しさん:05/01/24 22:49:53
自分が数%の方だと思ってるシアワセモノは手をあげて
51デフォルトの名無しさん:05/01/25 00:48:40
52デフォルトの名無しさん:05/01/28 00:11:02
>>51は自意識過剰
53デフォルトの名無しさん:05/02/21 16:22:49
stringについて解説してあるwebサイトなどを紹介してください
54デフォルトの名無しさん:05/02/21 16:46:47
55デフォルトの名無しさん:05/02/21 17:49:57
>>54
ありがとう
5654:05/02/21 18:02:06
>>55
ネタなのか釣りなのかマジレスなのか判断に苦しむな
57デフォルトの名無しさん:05/02/21 21:59:47
vector<int> vec;

vec.push_back(100);
vec.push_back(101);

たとえば上みたいなかんじで
今現在vectorに入っている要素の数と値をデバッガーでしらべるにはどうすれば良いですか?
Eclipse CDT拡張, Cygwinのg++を使ってます。
方法はない?


58デフォルトの名無しさん:05/02/21 22:26:34
>>57
プログラムで使われていれば
vec.size() とか vec.front() を評価することができるはずですけどね。

肝心のプログラムで使われてない場合は
(テンプレートのコード生成をg++の自動処理に任せていると)
メソッドのコードは当然バイナリに入らないから使えませんが。
テンプレートのコードを使う使わないに関わらず全部含めるような
コンパイルオプションがgccにあるかどうか調べてみては。
59デフォルトの名無しさん:05/02/21 22:32:01
vec
_Vector_base<int,std::allocator<int> >
_Vector_alloc_base<int,std::allocator<int>,true>
protected
_M_start = 0x0a051b30
_M_finish = 0x0a051b38
_M_end_of_storage = 0x0a051b38

Eclipse(から呼び出されるgdb)で見るとこんな感じでわけわかめなんだよね。
自分で作れば幾らでも中身が見れるのにstlを使ってしまうと
入れたら最後まったく中身がわからんというのが何とも困ってます。
60デフォルトの名無しさん:05/02/22 00:15:34
>>59
自分で作れば見れるようなやつが _M_start を見れないとは思わない。
61デフォルトの名無しさん:05/02/22 09:26:03
(_M_finish-_M_start)/sizeof(int)
62デフォルトの名無しさん:05/02/22 12:08:21
別にサイズが知りたい訳じゃないだろ。
gdbっていうのは副作用の無いメソッドもウォッチできないのか?
できるなら普通に見ればいいだけだと思うが。
63デフォルトの名無しさん:05/02/22 12:27:53
64デフォルトの名無しさん:05/02/22 12:45:18
vectorをつかうのとnewで配列を確保するのとの違いは何?
65デフォルトの名無しさん:05/02/22 12:47:49
>>64
delete する必要があるかどうか。
66デフォルトの名無しさん:05/02/22 14:03:14
>>64
自動拡張してくれたり、独自のメモリアロケータ使えたり、
基本的なメソッドを提供してくれる
67デフォルトの名無しさん:05/02/22 21:46:31
そんな事はしってます。
68デフォルトの名無しさん:05/02/23 09:30:07
そうですよね。失礼しました。
69デフォルトの名無しさん:05/02/23 10:13:25
いえ私は知りませんでした。どうもありがとうございました。
70デフォルトの名無しさん:05/02/23 13:57:34
std::list で listを走査中にイテレータが指す要素を削除したら、イテレータには何が残るんでしょうか。
VC7だと飛びましたが、STLの仕様として結果は未定義なんでしょうか?
以下テストソース

std::list<int>  test_list;

void foo()
{
  test_list.push_back(0);
  test_list.push_back(1);
  test_list.push_back(2);

  std::list<int>::iterator it = test_list.begin();
  while(it != test_list.end()){
    int i = *it;
    if(i == 1){
      test_list.erase(it);
    }
    it++;
  }
}
71デフォルトの名無しさん:05/02/23 14:33:37
STLの仕様としては、リストの場合、消去された要素への反復子が無効になる。
if (i==1) test_erase(it++); else ++it;
なら大丈夫じゃないかな。
72デフォルトの名無しさん:05/02/23 17:03:30
test_list.remove(1);
実はこれだけで済む。

remove禁止としてもerase()は次の要素を指すイタレータを返すからこうしたらどうだ。
if (i == 1) {
    it = test_list.erase(it);
} else {
    it++;
}
73デフォルトの名無しさん:05/02/23 19:34:56
eraseすると何が消えるの?
74デフォルトの名無しさん:05/02/23 20:48:05
>>73
イタレータの指す要素
75デフォルトの名無しさん:05/02/24 07:29:10
boostを使ってコンパイルすると
「for を含む関数はインライン展開できない」
が山ほど出るのだがどうにかならないものか?
warningは基本的にOFFにしたくないのだが
76デフォルトの名無しさん:05/02/24 10:06:48
>>75
どうにもならないというかなんというか……、どうなって欲しいんだ?
77デフォルトの名無しさん:05/02/24 11:13:30
#pragma warning(push)
#pragma warning(disable:1234)
#include <boost/source_of_warnings.hpp>
#pragma warning(pop)

恐らくこんな感じで局所的に特定のwarningを殺すpragmaが
コンパイラについていると思うのでそれで殺すとか.
これを毎回やるのが嫌ならこれを一つのヘッダーにしてしまって
そちらをインクルードするようにするとか.
7875:05/02/24 11:55:00
他のコンパイラはこんなwarning出ないのでしょうか?
ちなみに今使っているのはBorland C++です
79デフォルトの名無しさん:05/02/24 12:22:09
>>78
警告なんだから、理解した上で無視するべきだと思うよ。理解した上でね……
80デフォルトの名無しさん:05/02/26 01:40:04
君のことは無視させてもらうよ
81デフォルトの名無しさん:05/02/26 07:37:09
doubleをstringに変換する方法を教えてください
82デフォルトの名無しさん:05/02/26 07:50:38
>>81
#include <string>
#include <strstream>
double d;
std::string str = (std::ostringstream() << d).str();
83デフォルトの名無しさん:05/02/26 08:13:49
ボーランドのAnsiStringの様に簡単にとはいかないのですね。
あきらめます。
84デフォルトの名無しさん:05/02/26 08:20:06
template<typename T> inline std:string ToString(T n) {return (std::ostringstream() << n).str();}
85デフォルトの名無しさん:05/02/26 08:21:01
>>83
あきらめるの早(w
86デフォルトの名無しさん:05/02/26 19:59:44
某国のコンパイラはループ付きのインライン関数は展開しないんだよ

そんなの常識
87デフォルトの名無しさん:05/03/03 19:52:24
フォーマットとというか、文字列変換いえば、cppll の過去ログにこんなものが。
http://www.tietew.jp/cppll/archive/10694

double d = 250.25;
string x = strex::_f( d );

と使えるらしい。
88デフォルトの名無しさん:05/03/04 20:19:48
vectorとlistの違いを教えてください。
89デフォルトの名無しさん:05/03/04 21:46:29
>>88
共通点を探す方が難しいくらい、全然違います。
90デフォルトの名無しさん:05/03/04 22:45:00
>>88
vectorは動的配列、listは線形リスト。
91デフォルトの名無しさん:05/03/04 23:33:03
このスレって、重複なんでしょ(ウププ
92デフォルトの名無しさん:05/03/05 02:58:10
途中挿入がない場合は、vectorでいいの?
93デフォルトの名無しさん:05/03/05 03:07:48
boost::lexical_cast<std::string>(f);
94デフォルトの名無しさん:05/03/05 03:10:43
>92
先頭挿入が沢山ありえるならdeque
ないならvector
95デフォルトの名無しさん:05/03/05 03:25:04
VC++6.0でSTLのコンテナに入れてるクラスや構造体のメンバを自動表示できるように
なる方法ってありませんか?

struct A{ int x; int y; } data; などとして、
data.←ここまで押すと[ x 、y ] とかメンバが表示されますよね

vector< A > data; として、何個か入れたとして、
data[0]. まで押しても何もでないんです
96デフォルトの名無しさん:05/03/05 07:47:20
VC.net使え。
97デフォルトの名無しさん:05/03/05 08:30:53
>>95
6.0を使わないでください
98デフォルトの名無しさん:05/03/05 08:34:47
VisualStudio.NET2003なら先頭(_Myfirst)だけ自動で見れるが
2個目からは無理
正直stdのコンテナクラスは使えないと思う
99デフォルトの名無しさん:05/03/05 08:40:29
>>98
エェー
100デフォルトの名無しさん:05/03/05 09:00:17
>>98
使えないんじゃなくて、使いこなせないんだろ。
101デフォルトの名無しさん:05/03/05 10:17:11
インテリセンスは出たらラッキーくらいに思っとけ
102デフォルトの名無しさん:05/03/05 11:51:45
>>98
それはインテリセンスじゃなくてデバッガの話じゃねえのか
103デフォルトの名無しさん:05/03/05 14:21:33
重複スレだっつーにいつまでも続けてるから
VC++ がどーのこーのぬかす阿呆まで出てきたじゃないか。
104デフォルトの名無しさん:05/03/05 18:12:44
あえて age
105デフォルトの名無しさん:05/03/05 18:39:39
どこと重複よ?
もう一つのC++のスレは、STL以外だろ?
106デフォルトの名無しさん:05/03/05 18:41:30
聞く前に調べろ
107デフォルトの名無しさん:05/03/05 19:01:59
>>103
ひとりごとは掲示板じゃなくてチラシの裏へ
108デフォルトの名無しさん:05/03/05 23:30:28
>>106
× 聞く
○ 訊く
109デフォルトの名無しさん:05/03/06 03:59:23
class Coordinate{
double x, y;
};

のようなクラスがあったとして、
insert(make_pair<Coordinate, double>(hoge, mage)) みたいな感じでは
map, multimap のキーとしての挿入ができませんでした。

これは挿入時、map内で比較がなされていて、それが足りないのだろうと思い
Coordinate へ operator <, >, <=, >=, =, ==, != などを
追加してみたのですがやっぱり通らず

そういうもんなんですか?
何か対応策、常套手段などありましたらご教授ください。
@WinXP, VC7.1
110デフォルトの名無しさん:05/03/06 06:19:54
>>109
通るはず。どっか別のところで変な事してるんでしょ。
なお、make_pairはわざわざ型を指定する必要はない。
111デフォルトの名無しさん:05/03/06 06:36:44
>>109
#include <iostream>
#include <map>
#include <utility>

class Coordinate{
double x, y;
public:
Coordinate(double xx = 0., double yy = 0.) : x(xx), y(yy) {}
bool operator<(const Coordinate& c) const {
return x + y < c.x + c.y;
}
};

int main()
{
std::map<Coordinate, double> mapc;
Coordinate hoge(1.0, 2.0);
double mage = 3.;

mapc.insert(std::make_pair(hoge, mage));
}
112デフォルトの名無しさん:05/03/06 06:38:47
あ、抜けてた
std::cout << mapc.begin()->second << std::endl;
113デフォルトの名無しさん:05/03/06 10:04:18
>>105
含んでます。っていうかウザイ死ね。
114デフォルトの名無しさん:05/03/06 13:13:33
>>113
粘着 ウザー
115デフォルトの名無しさん:05/03/06 14:05:45
>>114
うるせーばか
116デフォルトの名無しさん:05/03/06 15:55:12
STLがまともに動かないコンパイラを教えてください
117デフォルトの名無しさん:05/03/06 15:57:33
>>116
VC6
118デフォルトの名無しさん:05/03/06 16:39:47
>>116
さげろ
119デフォルトの名無しさん:05/03/06 16:45:45
さげるな
120デフォルトの名無しさん:05/03/06 17:26:07
STLだけ更新することはできんの?
121デフォルトの名無しさん:05/03/06 17:42:05
STLがまともに動かないと言っているのに
STLを更新してどうすんだ
122デフォルトの名無しさん:05/03/06 18:17:07
STLがまともに動かないのと
テンプレートがまともに動かないのは別問題。
123デフォルトの名無しさん:05/03/06 19:05:34
まんこ
124デフォルトの名無しさん:05/03/06 19:05:58
まんこ
125デフォルトの名無しさん:05/03/06 19:06:23
まんこ
126デフォルトの名無しさん:05/03/06 19:06:58
うんこ
127デフォルトの名無しさん:05/03/06 20:25:48
ちんこ
12895:05/03/06 21:54:54
>>96-102あたり
遅くなってスマソ! ありがとう。
VC++6.0ではだめぽということで了解しました。
129デフォルトの名無しさん:05/03/06 23:54:52
>>128
おまえ、いい奴だな。
130デフォルトの名無しさん:05/03/07 09:33:55
まんこ
131デフォルトの名無しさん:05/03/07 10:54:15
まんこ
132デフォルトの名無しさん:05/03/07 11:47:48
おまた
133デフォルトの名無しさん:05/03/07 19:28:22
まんこ
134デフォルトの名無しさん:05/03/07 23:56:56
われめ
135デフォルトの名無しさん:05/03/08 00:03:32
スリット
136デフォルトの名無しさん:05/03/08 20:02:36
バイナリモードのifstreamからlenバイト読み込みたいのですが、
このとき読み込み位置を移動させたくありません。
char buf[len];
ifs.read(buf, len);
ifs.seekg(-len, ios::cur);
のようにするしかないのでしょうか?
copyとか使って実現することはできませんか?
137デフォルトの名無しさん:05/03/08 20:27:39
>>136
それ以外になし。
138デフォルトの名無しさん:05/03/08 23:39:16
おめこ
139デフォルトの名無しさん:05/03/09 10:26:58
>>136
まんこ
140デフォルトの名無しさん:05/03/09 14:21:39
ぼぼ
141デフォルトの名無しさん:05/03/09 16:42:37
>>136
理由を聞かせてくれ
142デフォルトの名無しさん:05/03/09 17:39:07
std;;string s の内容をm回繰り返した文字列ssを作成する
一番手軽な方法って何でしょうか?ただし、O(N)程度で。
よろしくおねがいします。
143デフォルトの名無しさん:05/03/09 17:41:25
for(int i=0; i<m; ++i)ss+=s;
144デフォルトの名無しさん:05/03/09 18:28:54
>>142
std::string s, ss;
// ...
ss.reserve(s.length() * m);
for (int i = 0; i < m; ++i) ss.append(s);
145デフォルトの名無しさん:05/03/09 20:45:49
>>142
std::string s, ss;
// ...
ss.reserve(s.length() * m);
for (int i = 0; i < m; ++i) ss.append(s);
146デフォルトの名無しさん:05/03/09 20:46:21
>>142
std::string s, ss;
// ...
ss.reserve(s.length() * m);
for (int i = 0; i < m; ++i) ss.append(s);
147デフォルトの名無しさん:05/03/09 20:47:23
118 名前:デフォルトの名無しさん[sage] 投稿日:05/03/06(日) 16:39:47
>>116
さげろ

119 名前:デフォルトの名無しさん[] 投稿日:05/03/06(日) 16:45:45
さげるな
148デフォルトの名無しさん:05/03/09 20:47:53
118 名前:デフォルトの名無しさん[sage] 投稿日:05/03/06(日) 16:39:47
>>116
さげろ

119 名前:デフォルトの名無しさん[] 投稿日:05/03/06(日) 16:45:45
さげるな
149デフォルトの名無しさん:05/03/09 21:03:26
>>116
パンツさげろ

119 名前:デフォルトの名無しさん[] 投稿日:05/03/06(日) 16:45:45
にげるな
150"”:05/03/09 21:09:55
118 名前:デフォルトの名無しさん[sage] 投稿日:05/03/06(日) 16:39:47
>>116
さあげろしろ

119 名前:デフォルトの名無しさん[] 投稿日:05/03/06(日) 16:45:45
さげるな
151">>>1000:05/03/09 21:10:53
118 名前:デフォルトの名無しさん[sage] 投稿日:05/03/06(日) 16:39:47
>>116
さげろ

119 名前:デフォルトの名無しさん[] 投稿日:05/03/06(日) 16:45:45
さげるな
152デフォルトの名無しさん:05/03/09 21:14:24
           __________________
    (≦三)  /
  ┃. (#゚Д゚)< 神であるひろゆきの名のもとにおいて
  ┃(≦ ▼ ) | >>1に対し、ここで聖戦を宣言する。
  /. │━‖│ すべての2ちゃんねらーに告ぐ。
  /. │  ‖│ >>1に速やかなる死を!!
 └-┘⊃⊃ \__________________
    (≦三)   (≦三)   (≦三)   (≦三)
  ┃. (#゚Д゚).┃ (#゚Д゚) ┃ (#゚Д゚)┃ (#゚Д゚)
  ┃(≦ ▼ )┃(≦ ▼ )┃(≦▼ )┃(≦ ▼ )
      (≦三)   (≦三)   (≦三)   (≦三)
    ┃. (#゚Д゚).┃ (#゚Д゚).┃ (#゚Д゚)┃ (#゚Д゚)
    ┃(≦ ▼ )┃(≦ ▼ )┃(≦▼ )┃(≦ ▼ )
153デフォルトの名無しさん:05/03/09 21:15:22
           __________________
    (≦三)  /
  ┃. (#゚Д゚)< 神であるひろぽんの名のもとにおいて
  ┃(≦ ▼ ) | >>1に対し、ここで聖戦を宣言する。
  /. │━‖│ すべての2ちゃんねらーに告ぐ。
  /. │  ‖│ >>1に速やかなる死を!!
 └-┘⊃⊃ \__________________
    (≦三)   (≦三)   (≦三)   (≦三)
  ┃. (#゚Д゚).┃ (#゚Д゚) ┃ (#゚Д゚)┃ (#゚Д゚)
  ┃(≦ ▼ )┃(≦ ▼ )┃(≦▼ )┃(≦ ▼ )
      (≦三)   (≦三)   (≦三)   (≦三)
    ┃. (#゚Д゚).┃ (#゚Д゚).┃ (#゚Д゚)┃ (#゚Д゚)
    ┃(≦ ▼ )┃(≦ ▼ )┃(≦▼ )┃(≦ ▼ )
154デフォルトの名無しさん:05/03/09 21:18:53
           __________________
    (≦三)  /
  ┃. (#゚Д゚)< ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・。
  ┃(≦ ▼ ) | ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・。
  /. │━‖│ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・。
  /. │  ‖│ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・。
 └-┘⊃⊃ \__________________
    (≦三)   (≦三)   (≦三)   (≦三)
  ┃. (#゚Д゚).┃ (#゚Д゚) ┃ (#゚Д゚)┃ (#゚Д゚)
  ┃(≦ ▼ )┃(≦ ▼ )┃(≦▼ )┃(≦ ▼ )
      (≦三)   (≦三)   (≦三)   (≦三)
    ┃. (#゚Д゚).┃ (#゚Д゚).┃ (#゚Д゚)┃ (#゚Д゚)
    ┃(≦ ▼ )┃(≦ ▼ )┃(≦▼ )┃(≦ ▼ )
155デフォルトの名無しさん:05/03/09 21:19:31
           __________________
    (≦三)  /
  ┃. (#゚Д゚)< ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・。
  ┃(≦ ▼ ) | ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・。
  /. │━‖│ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・。
  /. │  ‖│ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・。
 └-┘⊃⊃ \__________________
    (≦三)   (≦三)   (≦三)   (≦三)
  ┃. (#゚Д゚).┃ (#゚Д゚) ┃ (#゚Д゚)┃ (#゚Д゚)
  ┃(≦ ▼ )┃(≦ ▼ )┃(≦▼ )┃(≦ ▼ )
      (≦三)   (≦三)   (≦三)   (≦三)
    ┃. (#゚Д゚).┃ (#゚Д゚).┃ (#゚Д゚)┃ (#゚Д゚)
    ┃(≦ ▼ )┃(≦ ▼ )┃(≦▼ )┃(≦ ▼ )
156デフォルトの名無しさん:05/03/09 21:37:13
おまたなめたい
157デフォルトの名無しさん:05/03/09 21:58:40
           __________________
    (≦三)  /
  ┃. (#゚Д゚)< 2chの神ひろぽんの名のもとに>>156
  ┃(≦ ▼ ) | 四系にする。
  /. │━‖│
  /. │  ‖│
 └-┘⊃⊃ \__________________
    (≦三)   (≦三)   (≦三)   (≦三)
  ┃. (#゚Д゚).┃ (#゚Д゚) ┃ (#゚Д゚)┃ (#゚Д゚)
  ┃(≦ ▼ )┃(≦ ▼ )┃(≦▼ )┃(≦ ▼ )
      (≦三)   (≦三)   (≦三)   (≦三)
    ┃. (#゚Д゚).┃ (#゚Д゚).┃ (#゚Д゚)┃ (#゚Д゚)
    ┃(≦ ▼ )┃(≦ ▼ )┃(≦▼ )┃(≦ ▼ )
158デフォルトの名無しさん:05/03/09 22:01:19
 
159デフォルトの名無しさん:05/03/09 22:04:34
おまんこぉおおおおおおおおおおおおおおおp
160デフォルトの名無しさん:05/03/09 22:29:14
おまたぁあああああああああああああ
161デフォルトの名無しさん:05/03/10 12:47:53





























 
162デフォルトの名無しさん:05/03/10 12:48:24
 
163デフォルトの名無しさん:05/03/10 13:41:09
STLについて語っていい?
164デフォルトの名無しさん:05/03/10 13:48:33
>>163
こちら、http://pc5.2ch.net/test/read.cgi/tech/1106527792/
もしくはチラシの裏にでも、どうぞ。
165デフォルトの名無しさん:05/03/10 13:50:06




















 
166デフォルトの名無しさん:05/03/10 13:51:06




















 










 
167デフォルトの名無しさん:05/03/10 13:53:50
>>164
STLに関してはここでいいのか?
168デフォルトの名無しさん:05/03/10 13:56:32
まんこ
169デフォルトの名無しさん:05/03/10 13:58:14
>>167
こちら、http://pc5.2ch.net/test/read.cgi/tech/1106527792/
もしくはチラシの裏にでも、どうぞ。
170デフォルトの名無しさん:05/03/10 14:39:51
まんこ
171デフォルトの名無しさん:05/03/10 14:48:20































 
172デフォルトの名無しさん:05/03/10 14:51:33
ところでSTLPort以外になんかPortableでいいSTL実装ないの?
SGIはSTLPortと一緒だから除外ね。newlibもウンコだから除外。
173デフォルトの名無しさん:05/03/10 14:53:27
172もウンコ
174デフォルトの名無しさん:05/03/10 14:54:06































 
175デフォルトの名無しさん:05/03/10 15:16:20
 
176デフォルトの名無しさん:05/03/10 15:23:56
スペースうんこ
 
 
  
  
   
   
    
   
   
  
  
 
 

177デフォルトの名無しさん:05/03/10 17:19:58
178デフォルトの名無しさん:05/03/10 17:59:09
ここの嵐は何のためにやっているのかよくわからないのだが・・・
179デフォルトの名無しさん:05/03/10 18:01:05
>>178
1.愛と勇気のため
2.地位と名誉のため
3.喜びと快楽のため
さあ選べ。
180デフォルトの名無しさん:05/03/10 20:17:12
まんこ
181デフォルトの名無しさん:05/03/10 20:17:38
>>178
まんこのために決まってるだろ
182デフォルトの名無しさん:05/03/10 21:16:04
はるまんかいあわびもまんかい
183デフォルトの名無しさん:05/03/10 23:10:53
まんこ
184デフォルトの名無しさん:05/03/11 00:08:26
>>180-183
頭が悪いってよく人に言われるでしょ。
185デフォルトの名無しさん:05/03/11 00:09:48
>>184
まんこ
186デフォルトの名無しさん:05/03/11 00:10:29
このスレはまんこのスレです
187デフォルトの名無しさん:05/03/11 00:10:51
うんこもいいかな
188デフォルトの名無しさん:05/03/11 00:13:58
やっぱりまんこ
189デフォルトの名無しさん:05/03/11 00:40:33
まんこ
190デフォルトの名無しさん:05/03/11 00:44:19
おまたぁあああああああああああああああああああああああ
191デフォルトの名無しさん:05/03/11 09:44:08
まんこ
192デフォルトの名無しさん:05/03/11 19:03:46
おめこ
193デフォルトの名無しさん:05/03/11 19:17:56
プログラム界の長有名人のエビステーメーさんの書籍によると、
STLを使うことで、プログラムコードが100分の1になるそうです。
194デフォルトの名無しさん:05/03/11 19:19:05
100分の1?
195デフォルトの名無しさん:05/03/11 19:46:22
何であれてるの?
196デフォルトの名無しさん:05/03/11 19:50:42
まんこだから
197デフォルトの名無しさん:05/03/11 19:51:24
まんこ
198デフォルトの名無しさん:05/03/11 19:51:44
まんこ
199デフォルトの名無しさん:05/03/11 19:52:04
まんこ
200デフォルトの名無しさん:05/03/11 20:20:01
>>195
マジレスすると、以前C++&テンプレート関連のスレが
乱立していているので整理しようという話があって、
STLはC++スレで、それ以外の非標準テンプレートは
テンプレート総合スレで扱う、ってことになったのに、
それを不満に思う奴が勝手にこのスレ立てたから
反発を受けている。
201デフォルトの名無しさん:05/03/11 20:56:14
あげ
202デフォルトの名無しさん:05/03/11 20:58:57
あげまんこ
203デフォルトの名無しさん:05/03/11 20:59:34
あげたてすじ
204デフォルトの名無しさん:05/03/11 21:01:40
まんこ
205デフォルトの名無しさん:05/03/11 21:02:11
ちんこまんこ
206デフォルトの名無しさん:05/03/11 21:02:56
まんこ
207デフォルトの名無しさん:05/03/11 21:03:20
まんこ
208デフォルトの名無しさん:05/03/11 21:44:30
205はエバに乗った状態でセクースしろ。
209デフォルトの名無しさん:05/03/11 21:45:25
















いやだ。
210デフォルトの名無しさん:05/03/11 22:02:24
>>200
お釣りかえしといた
211デフォルトの名無しさん:05/03/11 22:04:57
205はエバに乗った状態でセクースしろ。
212デフォルトの名無しさん:05/03/11 22:15:49
まんこ
213デフォルトの名無しさん:05/03/11 22:16:34
まんこ
214デフォルトの名無しさん:05/03/11 22:16:59
まんこ
215デフォルトの名無しさん:05/03/12 00:47:19
まんこ
216デフォルトの名無しさん:05/03/12 04:33:59
>>200
みんな仲良くやろうよ
217デフォルトの名無しさん:05/03/12 10:31:55
>>216=>>1

まんこ
218デフォルトの名無しさん:05/03/12 10:34:29
>>216乱交パーティー!?age
219デフォルトの名無しさん:05/03/12 11:20:24
というかSTLについて聞きたくてSTL相談室というスレがあれば普通そこで聞くでしょ。
220デフォルトの名無しさん:05/03/12 11:29:02
ソース嫁


終わり
221デフォルトの名無しさん:05/03/12 11:37:18
まんこ
222デフォルトの名無しさん:05/03/12 18:36:10
やべえからあげる。
223デフォルトの名無しさん:05/03/12 19:57:34
まんこ
224デフォルトの名無しさん:05/03/12 21:25:21
>>219
だから何度も重複だ、と言っている。

…まあ stream I/O 訊いて来るアホの子もいてるわけだが。
225(゚Д゚):05/03/12 21:49:07
vfhfgbvcfsdfghjbhvgfdrytghjkbfgdfyhjjghf==
226デフォルトの名無しさん:05/03/12 22:18:24
米倉涼子のまんこ
227デフォルトの名無しさん:05/03/12 22:34:10
STLを使えない奴が暴れてるな w
228デフォルトの名無しさん:05/03/12 22:46:21
同性愛系のスレでは、ウザイ女のことをまんこって呼ぶんだよ。
229デフォルトの名無しさん:05/03/12 22:51:50
ホモスレ?ホモ板?またはゲイ?
230デフォルトの名無しさん:05/03/12 23:54:52
まんこ
231デフォルトの名無しさん:05/03/12 23:57:34
まんこ
232デフォルトの名無しさん:05/03/13 00:00:18
われめぇええええええええええええええええええええええええええ
毛の生えてない、われめぇええええええええええええええええええ
233デフォルトの名無しさん:05/03/13 00:00:47
234デフォルトの名無しさん:05/03/13 00:10:39
おまたぁああああああああああああああああああああああああ
ぴんくの、おまたぁあああああああああああああああああああ
235デフォルトの名無しさん:05/03/13 00:30:48
いとうまいこ可愛い
236デフォルトの名無しさん:05/03/13 04:33:17
このような状況で訊くのは忍びないけど
漏れもSTL専用スレとは区別してる口なのでここで。

multimap::equal_range で得られる同じキーを持つ両端のiteratorは
間の(もしくはequal_range::second)要素を削除した場合の
equal_range::secondはキチンと同一キーをもつ要素の終端を指している、
という保障はあるのでしょうか?

あと、こういうのはどこで調べるものなんでしょうか?
237デフォルトの名無しさん:05/03/13 05:36:48
日本語が変。
238デフォルトの名無しさん:05/03/13 05:57:25
>>236
multimap は Associative container である。
したがって 23.1.2(ttp://www.kuzbass.ru/docs/isocpp/lib-containers.html#lib.associative.reqmts) により、
・multimap は要素を削除しても、その要素以外を指すイテレータは無効にしない。(23.1.2 -8-)
・multimap はイテレータによって順にアクセスされる要素が常にソートされていることを保証している。(23.1.2 -9-)
ということが言えるので、 second 自身を削除した場合のみ気をつければ、保証されていると言える。

調べ者は本物の規格が一番だけど、微妙な違いがあるのを覚悟すれば、
↑のリンク先とか、http://www.sgi.com/tech/stl とかがお勧め。
239デフォルトの名無しさん:05/03/13 06:27:43
> 調べ者は本物の規格が一番だけど、

馬鹿みたいにたけーよな。
240デフォルトの名無しさん:05/03/13 07:20:05
>>237
確かに変ですね^^;

>>238
丁寧にありがとうございます
今後、極力それらドキュメントに目を通すよう努力します(`・ω・´)
241デフォルトの名無しさん:05/03/13 09:24:01
>>240
死ね
242デフォルトの名無しさん:05/03/13 11:36:27
まんこ
243デフォルトの名無しさん:05/03/13 11:59:37
>239
ttp://webstore.ansi.org/ansidocstore/product.asp?sku=INCITS%2FISO%2FIEC+14882-2003
$18 なら馬鹿みたいに高くはなかろ?
244デフォルトの名無しさん:05/03/13 12:04:06
245デフォルトの名無しさん:05/03/13 13:16:08
まんこ
246デフォルトの名無しさん:05/03/13 14:13:47
なんだこの値段の差は……。0.01MB違う理由はなんだ。
247デフォルトの名無しさん:05/03/13 14:35:32
http://www.jisc.go.jp/
ここも忘れるな
248デフォルトの名無しさん:05/03/13 14:37:39
>>246
ライセンスかなぁ?

俺は $18 の方しか持ってないけど、これは PDF にライセンシーの名前や
注文番号、それと「Single User Only」の文字が埋め込まれてる。
249デフォルトの名無しさん:05/03/13 17:38:29
どっかのコピペ

・ANSI Store 版の表紙にはページ下部に...

Adopted by INCITS (InterNational Committee for Information
Technology Standards) as an American National Standard.

Date of ANSI Approval: 12/29/2003
...

 ...の記述がある。( ISO Store 版にはなし。 )

・ISO Store 版は Acrobat 3.0 以降で互換あり。
 ANSI Store 版は Acrobat 5.0 以降で互換あり。
( しおりがなかったのはこのせい? )

・ANSI Store 版はフォームフィールドの入力が許可されていないが、
 ISO Store 版は許可されている。
 ( まぁ、こんな違い、意味ねぇけど。 )

・ISO Store 版の暗号化レベルは「低(40-bit RC4)」。
 ANSI Store 版の暗号化レベルは「高(128-bit RC4)」。

...といったところで、まぁ、結論としては「 ISO、 氏ね。」
250デフォルトの名無しさん:05/03/13 19:56:26
ついでにJISいいかんげんにしろ。
値段も高いし、ダウンロード販売と冊子が同じ値段ってどういうことだ。

JIS X 3010:2003 プログラム言語C 14,280円
JIS X 3014:2003 プログラム言語C++ 17,325円
251デフォルトの名無しさん:05/03/13 21:54:50
> 値段も高いし、
JIS規格票の値段はページ数で決まるという仕様です。
高いのは諦めましょう(笑)
252デフォルトの名無しさん:05/03/13 23:09:27
>>251
アホみたいに余白を詰めてページ数を
減らしているのにはそういう事情があったのか。
253デフォルトの名無しさん:05/03/14 03:53:34
>250
一応、閲覧は無料で可能じゃないか。
254デフォルトの名無しさん:05/03/14 04:03:51
事実上ダウンロードも
255デフォルトの名無しさん:05/03/14 08:43:29
>>253
Cは見れるの知ってるけど、C++も見れるの?
256デフォルトの名無しさん:05/03/14 08:57:12
>>255
手元に両方とも落ちてきてるよ。
257デフォルトの名無しさん:05/03/14 10:18:15
C++の方、見ようとしたけど何度やっても
「ファイルが壊れています。修復できません」ってなる……。
258デフォルトの名無しさん:05/03/14 11:46:48
Readerを最新版にしろ
259デフォルトの名無しさん:05/03/14 15:04:41
イテレータが既にコンテナの末尾をさす可能性がある場合に、++しても安全でしょうか?
hoge.end()で得られるイテレータをインクリメントするとhoge.end()が得られたりしますか?

260デフォルトの名無しさん:05/03/14 15:26:03
>>259
だめ。
261デフォルトの名無しさん:05/03/14 15:56:37
そうですか……。素直にif文追加することにします。ありがとでした。
262デフォルトの名無しさん:05/03/15 06:21:26
AcrobatReader7.0超高速
263デフォルトの名無しさん:05/03/15 22:29:39
いまだに「Acrobat Reader」なんて呼んでる奴がいるのか。
264デフォルトの名無しさん:05/03/16 07:28:02
stl を使って csv ファイルの読み書きをする
サンプルコードってどこかにないでしょうか?
265デフォルトの名無しさん:05/03/16 11:09:08
おまんまんしたいよ・・・
266デフォルトの名無しさん:05/03/16 12:18:14
>>264
俺のHDDの中にある
267デフォルトの名無しさん:05/03/16 12:45:15
>>266
奇遇だな、漏れのUSBメモリの中にもあるよ。
268デフォルトの名無しさん:05/03/16 13:03:12
おまんこしたい
269デフォルトの名無しさん:05/03/16 13:04:57
>>268それはどういう意味だよ。
動詞なのか?
270デフォルトの名無しさん:05/03/16 14:36:34
肉まんしたいよ・・・
271デフォルトの名無しさん:05/03/16 23:26:13
大将板
ttp://yy13.kakiko.com/taisyo/
第1章〜ふんどしクオリティ〜
272デフォルトの名無しさん:05/03/17 02:56:13
>>265
そんなのわざわざstl使わなくても簡単にかけるぞ
273デフォルトの名無しさん:05/03/17 09:00:55
おまんこ相談膣
274デフォルトの名無しさん:05/03/17 21:02:34
template<class _T1, class _T2>
struct pair {

//型名の定義
typedef _T1 first_type; //値の型名の別名をfirst_typeとする
typedef _T2 second_type; //値の型名の別名をsecond_typeとする

//データ格納変数の宣言
_T1 first; //キー格納変数
_T2 second; //値格納変数

//コンストラクタの宣言と定義
pair()
: first( _T1() ), second( _T2() ) {}
pair( const _T1 & _V1, const _T2 & _V2 )
: first( _V1 ), second( _V2 ) {}
template<class U, class V> pair( const pair<U, V> & p )
: first( p.first ), second( p.second ) {}
};
pairのコンストラクタ1つ目で、firstとsecondのメンバイニシャライザが、プレースホルダの_T1()と_T2()で初期化されてるけど、この_T1(),_T2()の実態ってなに?
275デフォルトの名無しさん:05/03/17 21:14:12
firstとsecondのディフォルトコンストラクタ。
276デフォルトの名無しさん:05/03/17 21:17:27
>>274
T()と書くとT型の一時オブジェクトが作られる。スコープは式が終わるまで。
括弧の中にはコンストラクタへ渡す引数を並べる。何も書かなければ当然デフォルトコンストラクタが呼ばれる。

組み込み型に対しては引数が無ければ0クリアされ,有ればいわゆる関数形式キャストになる。
277デフォルトの名無しさん:05/03/18 00:38:00
>>274
pair() : first(),second() {}
これじゃダメなんだろうか?
278274:05/03/18 04:47:17
>>276
組み込み型のT()コンストラクタについて詳しい書籍ってご存知ですか?
279デフォルトの名無しさん:05/03/18 05:20:57
std::vector<MyClass> v;

こんな感じで使うと値渡しになってしまいますよね?
参照渡しの場合、removeなどとともに自動でdeleteしてくれるSTLってありますか?
280デフォルトの名無しさん:05/03/18 05:31:55
ない。

281デフォルトの名無しさん:05/03/18 05:55:24
>>279
こういう場合にそもそも参照渡しってできるんだっけ?
282デフォルトの名無しさん:05/03/18 06:08:22
ポインタのことじゃないか。C++タームとしての参照は不可能だろ。
283デフォルトの名無しさん:05/03/18 13:12:15
>>279
MyClassの代わりにboost::shared_ptr<MyClass>でもかちこんどけ。
284デフォルトの名無しさん:05/03/18 15:35:03
>278
組み込み型を空のカッコで初期化した場合,
ゼロを対象の型に変換した値で初期化されます.

>組み込み型のT()コンストラクタについて詳しい書籍
ISO14882といってみるテスト(書籍じゃないですが)
285デフォルトの名無しさん:05/03/18 22:48:25
>>284
> ISO14882といってみるテスト(書籍じゃないですが)
JISX3010:2003 とか。日本規格協会から 14,280円 で規格表を買えるよ。

http://www.webstore.jsa.or.jp/webstore/Com/FlowControl.jsp?lang=jp&bunsyoId=JIS+X+3010%3A2003&dantaiCd=JIS&status=1&pageNo=0
286デフォルトの名無しさん:05/03/18 22:51:01
ごめん、X3010 は C だった。C++ は JIS X 3014:2003 ね。

http://www.webstore.jsa.or.jp/webstore/Com/FlowControl.jsp?lang=jp&bunsyoId=JIS+X+3014%3A2003&dantaiCd=JIS&status=1&pageNo=1
和文冊子 17,325円 だそうで。
287デフォルトの名無しさん:05/03/19 00:56:09
だから閲覧すると漏れなく落っこち
288デフォルトの名無しさん:05/03/19 01:58:44
観覧用のテキスト検索できないけど、
売ってるやつはできるの?
289デフォルトの名無しさん:05/03/19 02:02:39
>>288
あんたみたいに日本語能力の乏しい人にはどっちみち検索は難しいだろ。
290デフォルトの名無しさん:05/03/20 00:40:39
>287
すこしいじればいんさt
291デフォルトの名無しさん:05/03/20 16:19:07
setの疑問なんだけど。
setのfindなどで取得したiteratorで、要素の変更が自由に行えるけど、
こんな事したら、せっかくのソート済みが滅茶苦茶になると思うのだが。

連想コンテナでは、イテレータでの要素の変更はNGですか?
それともソート順に影響しない変更はOK?
292デフォルトの名無しさん:05/03/20 16:26:34
Effective STLの22項がその話題だったな。

とりあえず、ソートに関わる要素はいじっちゃダメ。
ソートと関係無い部分は、どうしても変更したけりゃ注意してやれ。
と、そんな感じでは。
293デフォルトの名無しさん:05/03/20 17:08:46
>>292
どうも。
やはり、むやみな変更は駄目だね。
Effective STL読んでみる。
294デフォルトの名無しさん:05/03/20 17:15:09
>>291
あれ?setのキーはconstじゃないのか?
要素はソートと関係ないような・・・
295デフォルトの名無しさん:05/03/20 17:21:08
>>294
mapと混同してないか?
296デフォルトの名無しさん:05/03/20 17:29:48
>>295
う、そうだorz
でもそうなるとなおさら、constな希ガス。const_iteratorでなくてiteratorだったら、
コンパイルエラー出るんじゃないの?
297デフォルトの名無しさん:05/03/20 17:39:38
>>296
Effective STL持ってないのか?
std::map/std::multimapのキーは確かにconstだが、std::set/std::multisetのキーは
非constなのだ。だからiteratorでコンパイルが通ってしまう。

正しく変更するには、一度削除してからもう一度挿入するしか手がない。
298デフォルトの名無しさん:05/03/20 18:01:43
>297
標準としてはどちらでもいいようですよ。
ttp://www.cuj.com/documents/s=8002/cujcexp1810kreft/
299デフォルトの名無しさん:05/03/20 19:27:24
>>298
という事は、std::remove()などの削除系アルゴリズムをstd::setに対して
呼び出せる処理系と呼び出せない処理系が混在しているという事か。

移植性を重視するなら、constと決めつけてかかった方がいいみたいだね。
300デフォルトの名無しさん:05/03/20 19:36:29
gcc3.4.2(mingw)+STLport4.6.2でこんなコンパイルエラーが。
STLportはキーをconstとしているようだよママン。

C:/STLport-4.6.2/stlport/stl/_algo.h: In function `_OutputIter _STL::remove_copy(_InputIter, _InputIter, _OutputIter, const _Tp&)
[with _InputIter = _STL::_Rb_tree_iterator<int, _STL::_Const_traits<int> >, _OutputIter = _STL::_Rb_tree_iterator<int, _STL::_Const_traits<int> >, _Tp = int]':
C:/STLport-4.6.2/stlport/stl/_algo.h:274: instantiated from `_ForwardIter _STL::remove(_ForwardIter, _ForwardIter, const _Tp&)
[with _ForwardIter = _STL::_Rb_tree_iterator<int, _STL::_Const_traits<int> >, _Tp = int]'
C:\mingw\set_const1.cpp:12: instantiated from here
C:/STLport-4.6.2/stlport/stl/_algo.h:247: error: assignment of read-only location

Execution terminated

#include <set>
#include <algorithm>

int main()
{
 std::set<int> si;

 si.insert(10);
 si.insert(2);
 si.insert(4);

 std::remove(si.begin(), si.end(), 2);
}
301デフォルトの名無しさん:05/03/20 20:26:34
22項読んでたんだけどsetの移植性のためにconst_castを使うって話しがあって、悪い例に

EmpIDSet se; // typedef set<Employee, IDNumberLess> EmpIDSet;
Employee selectedID;
EmpIDSet::iterator i = se.find(selectedID);
if (i != se.end()) {
 static_cast<Employee>(*i).setTitle("Corporate Deity");
}

と書いては”いけない”と書いてある。何故かというと

if (i != se.end()) {
 Employee tempCopy(+i);
 tempCopy.setTitle("Corporate Deity");
}

と、等価であるから。
どうしていきなり一時オブジェクトが出てきたのか理由がわからないです。
教えてください。
302デフォルトの名無しさん:05/03/20 21:25:16
キャストしてるからじゃ
303デフォルトの名無しさん:05/03/20 21:34:00
>>301
〜その明示的変換の効果は、一時的変数tを宣言し初期化した上で、変換結果としてtを
使うことと同じである。
JIS X3014 5.2.9

実際、
string s = "asdf";
static_cast<string>(s).clear();
で、sは変わらないよ。
俺も初めて知った。
304デフォルトの名無しさん:05/03/20 22:06:12
参照を使えってことだよね?
305301:05/03/20 22:55:57
>>302-303
なるほど。
ありがd。
いつかはまるんだろうなぁorz

>>304
yes。

if (i != se.end()) {
 const_cast<Employee&>(*i).setTitle("Corporate Deity");
}
というのが正解みたい。
306デフォルトの名無しさん:05/03/21 00:51:48
>>291-299
ttp://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#103
23.1.2 -5- に "Keys in an associative container are immutable." と追加されるらしい。

どうしても変更したければ const_cast や mutable 使うべし。

現行の規格では変更できてしまう処理系もアリということなので、
>>291は使用しているコンパイラ(またはSTL実装)を晒せ。
307デフォルトの名無しさん:2005/03/21(月) 12:02:58
>291-299
Sunのコンパイラだと、5.0から5.1?になったときに非constあり->constのみに変わったよ。
STLはRawgue?とかいうとこの実装。
あと、cygwin+g++ 3.3.3だと、constのみのようだ。
ただし、_GLIBCPP_RESOLVE_LIB_DEFECTSをdefineすると非constも追加されるみたい。

308デフォルトの名無しさん:2005/03/21(月) 12:03:24
C++よりMLの方がいいよ。
309デフォルトの名無しさん:2005/03/21(月) 12:04:59
std::vector#operator[]ってのがあるんだね
C#でやたらイテレータとデリゲートがすげーみたいに言われてたけど
C++にもあるじゃん

もしかしてデリゲートと同じ機構を持つものもC++にあるの?
310デフォルトの名無しさん:2005/03/21(月) 12:49:54
こんにちは
質問なのですが、
STLで、

struct greater_record : binary_function<record,record,bool> {
bool operator()(const record& x, const record& y) const {
return x.name > y.name;
}
};

の、クラスgreater_recordの後の、「: binary_function<record,record,bool>」は何を意味してるのでしょうか?
あと、operator()の「()」の部分ですが、operatorには演算子しか指定できないと思ってました。なので、「()」はどういう意味をなすのでしょうか?

簡単に教えていただければ、あとは自分でGoogleを使い調べます。
申し訳ございませんが、宜しくお願いいたします。
311ヽ(´ー`)ノ ◆.ogCuANUcE :2005/03/21(月) 13:01:59
>>310
関数オブジェクトについて調べるといいよ。
オススメ ↓
ttp://www005.upp.so-net.ne.jp/episteme/html/stlprog/_04.html#fun_object

型固有の predicate を作るのはあまり関心しないなぁ。
比較演算子を定義して std::greater 使った方が良いと思われ。
312310:2005/03/21(月) 13:09:43
>>311
ありがとうございます。
助かります。
313デフォルトの名無しさん:2005/03/21(月) 13:12:44
C++よりMLの方がいいよ。
314310:2005/03/21(月) 13:15:03
これいいですね。
http://www005.upp.so-net.ne.jp/episteme/html/stlprog/

これを勉強しマスターすればSTLに関しては完璧になれますか?
315デフォルトの名無しさん:2005/03/21(月) 13:40:05
>>314
それ入門書。それ読んでスタート地点。
316310:2005/03/21(月) 13:43:42
>>315
そーなんですか・・・。
中級〜上級あたりを説明しているサイトで有名なものってありますか?
317デフォルトの名無しさん:2005/03/21(月) 13:47:17
STLに上級も中級もあるかよw
STL覚えたら自作のTLに移行するだけじゃん
318デフォルトの名無しさん:2005/03/21(月) 13:50:37
STLをマスターするに当たって、他人の書いたサイトで勉強しようというのが間違い。
中級以上を目指すなら複数のSTLの実装を読みつつ実際に自分で実装してみるのがいい。
319デフォルトの名無しさん:2005/03/21(月) 13:57:42
>>316
みんな30歳超えたプロの集まりだぞ
がんばって追いつけ!
320ヽ(´ー`)ノ ◆.ogCuANUcE :2005/03/21(月) 14:12:40
俺まだ学生(;゚Д゚)春休み

>>317-318
コンパイラの差異とか考え出すと面倒になってきて投げる。やってられん。
321デフォルトの名無しさん:2005/03/21(月) 17:48:12
>>309
"無ければ作れ"が原則。
322デフォルトの名無しさん:2005/03/21(月) 18:01:11
"作れば無けれ"がその基本原則
323デフォルトの名無しさん:2005/03/21(月) 18:26:42
ヽ(´ー`)ノ ◆.ogCuANUcE=東大生?
324デフォルトの名無しさん:2005/03/21(月) 21:09:23
>>310

STLを勉強するんだったら、Effective STL最強。
ttp://www.amazon.co.jp/exec/obidos/ASIN/4894714108/

金ないかもしれないけど、良書だからこそ、ケチらずに自分で金出して買うべし。
あとは、必読書スレも見た方がいい。
変な本を買うより、ここで推薦されている本は外れが少ない。
325デフォルトの名無しさん:2005/03/21(月) 21:53:23
>Effective STL―STLを効果的に使いこなす50の鉄則
>スコット メイヤーズ (著), Scott Meyers (原著), 細谷 昭 (翻訳)
>価格: ¥3,360 (税込)


>3,360



やすっ!(笑)
326デフォルトの名無しさん:2005/03/23(水) 09:35:06
Iterator end = vector.end();
for(Iterator it1 = vector.begin(); it1 != end; ++it1) {
for(Iterator it2 = boost::next(it1); it2 != end; ++it2) {

}
}
このように、2重にイテレータを回す場合も、for_eachを入れ子にして使って書いた方がいいのでしょうか?
327デフォルトの名無しさん:2005/03/23(水) 10:31:19
正しい答えは、好きにしろってとこだ
どっちがいいも悪いもない
328デフォルトの名無しさん:2005/03/23(水) 10:38:00
for_eachはイテレータでなく値を渡すので、この場合は
内側はともかく外側のループには使えないと思う。
329デフォルトの名無しさん:2005/03/23(水) 10:52:49
>>325
中身読むと、意見変わるよ・・・
せいぜい値段なり
330デフォルトの名無しさん:2005/03/23(水) 11:45:15
>>324
> STLを勉強するんだったら、Effective STL最強。
最強っていうより、単なる入門書だろ。底が知れるぜ。
331326:2005/03/23(水) 14:53:17
>>327 >>328
どうもありがとうございました。
332デフォルトの名無しさん:2005/03/23(水) 19:40:08
>>310
binary_functionはgreater_recordが
Adaptable Binary FunctionというConceptを
満たすことを簡単にするSTLのサービス。
http://www.sgi.com/tech/stl/AdaptableBinaryFunction.html を参照。
上のWEBをそのまんま解説した
http://www.amazon.co.jp/exec/obidos/ASIN/4756134416/
がある。
333デフォルトの名無しさん:2005/03/23(水) 21:28:15
googleを使い調べますじゃなくて、ちゃんと体系的に解説した本を
読む方がいいと思うぞ。もしくはそういうサイトでもいいけどさ。
STLじゃなくてC++自体の理解もあやふやのようだし。
334デフォルトの名無しさん:2005/03/24(木) 18:24:14
VC++.net2003で下記のコードをコンパイルすると、多数のエラーが出ます。
なぜエラーがでるのかがわかりません。
ヒントをご提供し頂けると助かります。

void ___test_001(){
list<int> l;
for ( int i = 0; i < 3; ++i )
for ( int j = 0; j < 3; ++j )
l.push_back(j); // l : 0 1 2 0 1 2 0 1 2
l.pop_front();
l.remove(2);
list<int>::iterator it = l.begin();
while ( it != l.end() )
std::cout << *it++ << ' ';
}

>error C2228: '.end' : 左側がクラス、構造体、共用体ではありません。
>error C2228: '.pop_front' : 左側がクラス、構造体、共用体ではありません。
>error C2228: '.push_back' : 左側がクラス、構造体、共用体ではありません。
>error C2228: '.remove' : 左側がクラス、構造体、共用体ではありません。
335デフォルトの名無しさん:2005/03/24(木) 18:36:05
>>334
using namespace stdを書き忘れてないか?
336334:2005/03/24(木) 18:37:58
自己解決しました。
337デフォルトの名無しさん:2005/03/24(木) 19:34:03
それは「自己解決」なのか?
338デフォルトの名無しさん:2005/03/24(木) 23:45:25
mapで困っています。
(1)追加したいキーをfind
(2)findに該当がなければinsert
(3)必要なくなったらerase
を高速で行っていると、
不定期でSTL内のfind(バイナリーサーチ関連)で
AccessViolationが発生します。
この現象を知っている方いないでしょうか。
339デフォルトの名無しさん:2005/03/24(木) 23:48:20
>>338 原因に見当が付く人は大勢居ますが、知っている人はいません。
340デフォルトの名無しさん:2005/03/24(木) 23:55:33
>>338
低速にすれば?
341デフォルトの名無しさん:2005/03/25(金) 00:12:16
光速でしごくんだ
342334:2005/03/25(金) 00:20:03
>>337
少なくとも>>335は正解ではありませんでした。
343デフォルトの名無しさん:2005/03/25(金) 00:26:44
>>342
#include <list>
344デフォルトの名無しさん:2005/03/25(金) 00:40:07
>>342
解決した場合はその手順を書くのがマナー
345デフォルトの名無しさん:2005/03/25(金) 00:51:01
>>339
なんでもいいので教えていただけないですか
346デフォルトの名無しさん:2005/03/25(金) 00:56:48
>>338
コード晒せ。
347デフォルトの名無しさん:2005/03/25(金) 01:00:58
>>338
情報不足で絞り込めません
1276通りの原因が考えられます
348デフォルトの名無しさん:2005/03/25(金) 01:06:08
>>347
じゃあ92通り目の原因は何?
349デフォルトの名無しさん:2005/03/25(金) 01:40:21
>>348
92行目にtypoがある
350デフォルトの名無しさん:2005/03/25(金) 01:47:15
>>349
じゃあ1273通り目は?
351デフォルトの名無しさん:2005/03/25(金) 02:07:39
1273行目でnewしたポインタのdeleteを忘れてる
352デフォルトの名無しさん:2005/03/25(金) 07:09:07
STLの制限速度の件について
353デフォルトの名無しさん:2005/03/25(金) 08:08:25
糞PCがMAPの処理追いついてないだけじゃないの?



















と適当なこと言ってみる
354デフォルトの名無しさん:2005/03/25(金) 08:11:32
マジレスすると、速度関係ないだろ。
>>338が迷信でプログラミングしてるのが問題。
355デフォルトの名無しさん:2005/03/25(金) 08:14:45
eraseとかしたらiteratorは新しいのに更新せんとあかんのでは?
と適当に言ってみた。
356デフォルトの名無しさん:2005/03/25(金) 08:26:22
一般的に反復子使ってコレクション走査してるときに
コレクションの状態を変えるのはナンセンスだよね
とはいえ、insert_iterator系も用意されてるから一概には言えないけど
357デフォルトの名無しさん:2005/03/25(金) 08:29:26
ライブラリの使い方が間違ってるのを棚に上げて、
AccessViolationをCPUの速度のせいにする。
明らかに切り口の見つけ方がおかしいが、それを自覚しない|できない人間。

>>353も間違いなく>>338と同じ人種。

例えば二日徹夜すると小人さんが代わりにやってくれると信じて、
あえて徹夜で待機するアフォと同レベル。
358デフォルトの名無しさん:2005/03/25(金) 08:38:31
>>357
大量に改行入れてるレスをまじめに受け止めるなって
359デフォルトの名無しさん:2005/03/25(金) 08:55:01
>>356 そうでもないよ。
360デフォルトの名無しさん:2005/03/25(金) 18:51:07
まんこ
361デフォルトの名無しさん:2005/03/27(日) 18:35:32
#include <vector>
using namespace std;

vector<int> a = {2, 20, 3};


こんな感じで vector<int> a を初期化したいのですが、上の文法だとコンパイラーが

error: `a' must be initialized by constructor, not by `{...}'

とエラーを出してきやがります。
本当はどう書いたら良いのでしょうか?
aグローバル変数なのでpush.back()の羅列が出来ません。
だれか助けて。
362デフォルトの名無しさん:2005/03/27(日) 18:44:08
ムリ。
363デフォルトの名無しさん:2005/03/27(日) 19:01:16
>aグローバル変数なのでpush.back()の羅列が出来ません。
はい?
普通にmain()ででもすればいいじゃん。
さもなければ、こんなかんじか。

vector<int> a;
int main()
{
#if 1
static const int aa[] = {2, 20, 3};
a = vector<int>(aa, aa + sizeof(aa) / sizeof(aa[0]));
#else
a.push_back(2);
a.push_back(20);
a.push_back(3);
#endif
...;
return 0;
}
つーか、グローバル変数にしたい理由が判らん。
364361:2005/03/27(日) 19:29:02
>>362
む、む、む、無理なんですか!?
実はSTLってたいしたこと無い?

>>363
このvector<int>自体はプログラム全体から参照(read only)するのでグローバルにしたいんですよ。
んでプログラム中で値を変更する事はないから初期化のときに値を入れておくと。

俺のちょー美しい設計がスタートからくずれた…
365デフォルトの名無しさん:2005/03/27(日) 19:33:16
>>364
main()の最初の行にinitialize()っての入れてそこで代入すりゃいいじゃん
366デフォルトの名無しさん:2005/03/27(日) 19:35:26
>>363
単に定数で初期化したいんだろ。
おまえの例示した内容でアフォだってことはわかった。

>>361
vector<int>を派生させるかして、
適当に作成したコンストラクタの引数で初期化しろ。
367363:2005/03/27(日) 19:41:44
>>364
グローバル変数なんぞにせず、そう言う値を持つクラスにすればいいじゃん。
そう言う意味では>366の後半。
368デフォルトの名無しさん:2005/03/27(日) 19:44:11
>>362-367
みんなありがとう。でも理解できないでつ。
少なくとも俺の考えた方法は無理だとわかりました。
出直してきます……

369デフォルトの名無しさん:2005/03/27(日) 19:45:44
>>364
read onlyなら普通のconstな配列をグローバル変数にしたら駄目なのか?
なんでvectorにいれる必要があるんだ。
370361:2005/03/27(日) 19:53:09
368に名前入れ忘れた。

>>369
うん、普通にconstの配列で良いよ。
単に vector って言ってみたかっただけ。ごめんなさい。ごめんなさい。ごめんなさい。

本当はSTLでかっこよく書いて、あのクソ野郎***をみかえしてやりたかったんだよ……
371デフォルトの名無しさん:2005/03/27(日) 19:54:13
>>361
static int const initial_a[] = {2,20,3};
static int const num_initial_a = sizeof(initial_a) / sizeof(initial_a[0]);
std::vector<int> a(initial_a, initial_a + num_initial_a);

しかし、何がしたいのかわからん。
372デフォルトの名無しさん:2005/03/27(日) 19:57:07
>>370
むしろ無駄が多いだけだろ、それ…。
笑われるぞ。
373デフォルトの名無しさん:2005/03/27(日) 19:57:07
> 本当はSTLでかっこよく書いて、あのクソ野郎***をみかえしてやりたかったんだよ……

この場合は無理にSTL使ったほうがかっこわるい。
クソ野郎じゃなくても「なんでもSTL使えばかっこいいとでも思ってやがる」って言われるのがオチ。
もっと本質を見るようにしような。
374361:2005/03/27(日) 20:05:32

Cの配列でも十分だけど vector で定義して for_each でぐるぐる回したらかっこいいと思っただけでつ。

STLを使えるちょーーーーーーー嫌な奴がいて、STLが使えない俺を馬鹿にするんです。
で、俺もSTLぐらい使えるぜと思ったけどレベルが違いすぎました。
アホの子は白鳥にはなれないんですね……
375デフォルトの名無しさん:2005/03/27(日) 20:19:13
あぜ道をスポーツカーで走って物損事故起こすようなマネはせんでいいよ
ちゃんとSTLの趣旨を理解して使ってあげなきゃSTLが可哀想だ
376デフォルトの名無しさん:2005/03/27(日) 20:22:53
>>374 for_each でぐるぐるはCの配列でもできるぞ。
377デフォルトの名無しさん:2005/03/27(日) 20:50:01
そんなんだから馬鹿にされるんだ。
378デフォルトの名無しさん:2005/03/27(日) 20:52:42
こんばんわ
CXSValというクラスを作り、

#include <deque>

template<class T>
class CXSVal{
public:
CXSVal();
~CXSVal();

T Get(int index){
return m_valQueue.at(index);
}

void Set(int index,T val){
m_valQueue.assign(index,val);
}

std::deque<T> m_valQueue;
};
379デフォルトの名無しさん:2005/03/27(日) 20:53:49
もうひとつクラスを作り
class CXSPartsEditer{
public:

struct ORGCHARSET{
ORGCHARSET(){};
~ORGCHARSET(){};

CXSString string;//文字列
CXSVal<int> sizeH;
CXSVal<int> sizeV;//各文字幅
CXSVal<char> DBCSFlag;//SBCS(false)? DBCS(true)?
RECT box;//ラインのRECTサイズ
int numCntMax;//最大文字数
int numCntMax_wide;//最大ワイド文字数
int boundsWidthMax;//合計された最大文字列幅
int boundsHeightMin;//文字列における垂直方向の最小幅
int boundsHeightMax;//文字列における垂直方向の最大幅
};

(省略)
ORGCHARSET m_CHSET[256];
(省略)
};
380デフォルトの名無しさん:2005/03/27(日) 20:56:05
これをビルドしたさい、下記のエラーが出てしまいます。
ConsoleAppMg error LNK2019: 未解決の外部シンボル "public: __thiscall CXSVal<int>::~CXSVal<int>(void)"
(??1?$CXSVal@H@@QAE@XZ) が関数 __unwindfunclet$??0ORGCHARSET@CXSPartsEditer@@QAE@XZ$0 で参照されました。
ConsoleAppMg error LNK2019: 未解決の外部シンボル "public: __thiscall CXSVal<char>::CXSVal<char>(void)"
(??0?$CXSVal@D@@QAE@XZ) が関数 "public: __thiscall CXSPartsEditer::ORGCHARSET::ORGCHARSET(void)" (??0ORGCHARSET@CXSPartsEditer@@QAE@XZ) で参照されました。
ConsoleAppMg error LNK2019: 未解決の外部シンボル "public: __thiscall CXSVal<int>::CXSVal<int>(void)"
(??0?$CXSVal@H@@QAE@XZ) が関数 "public: __thiscall CXSPartsEditer::ORGCHARSET::ORGCHARSET(void)"
(??0ORGCHARSET@CXSPartsEditer@@QAE@XZ) で参照されました。
ConsoleAppMg error LNK2019: 未解決の外部シンボル "public: __thiscall CXSVal<char>::~CXSVal<char>(void)"
(??1?$CXSVal@D@@QAE@XZ) が関数 "public: __thiscall CXSPartsEditer::ORGCHARSET::~ORGCHARSET(void)" (??1ORGCHARSET@CXSPartsEditer@@QAE@XZ) で参照されました。
ConsoleAppMg fatal error LNK1120: 外部参照 4 が未解決です。

これはなぜ起きるのでしょうか?
初心者なため難しいです。
数時間ほど考えましたがわかりません。
わかるかたがいらっしゃいましたら、お教えいただけないでしょうか。
381デフォルトの名無しさん:2005/03/27(日) 20:56:57
開発ソフトは、VisualStudio.net(C++)です。
382デフォルトの名無しさん:2005/03/27(日) 21:03:38
>>380
あなたが利用したい関数がリンカが参照できる位置にないってことでしょ
必要なライブラリはパス上にあるの?
383デフォルトの名無しさん:2005/03/27(日) 21:04:50
ごめん、見当違いな事書いてるな、おれ
384デフォルトの名無しさん:2005/03/27(日) 21:10:06
ここに問題があるっぽい。

typedef struct tagORGCHARSET{
CXSString string;//文字列
CXSVal<int> sizeH;
CXSVal<int> sizeV;//各文字幅
CXSVal<char> DBCSFlag;//SBCS(false)? DBCS(true)?
RECT box;//ラインのRECTサイズ
int numCntMax;//最大文字数
int numCntMax_wide;//最大ワイド文字数
int boundsWidthMax;//合計された最大文字列幅
int boundsHeightMin;//文字列における垂直方向の最小幅
int boundsHeightMax;//文字列における垂直方向の最大幅
}ORGCHARSET;

STLは勉強したばかりなので、どこに問題があるのかの特定が難しいです。
構造体の中でSTLを用いてはいけないのでしょうか?
385363:2005/03/27(日) 21:11:57
>>374
例えば整数配列から値を検索するのにstd::find()をどう使えばいいか覚えてみたらどうだ?
君の例ならこんなもんだぞ。

static const int a[] = {2, 20, 3};

size_t length_of_a = sizeof(a) / sizeof(*a);
const int * it = std::find(a, a + length_of_a, 200);
if (it == a + length_of_a) {
std::cout << "Oops!\n";
} else {
std::cout << "Whee!\n";
}
386363:2005/03/27(日) 21:12:49
>>378
~CXSVal();
の実体はどこ?
387デフォルトの名無しさん:2005/03/27(日) 21:19:29
>>378-380
CXSVal のコンストラクタ、デストラクタが宣言されただけで定義されて無いから。

なんでこのスレで聞いたんだろう?
388デフォルトの名無しさん:2005/03/27(日) 21:24:46
>>378
CXSValクラスの実装を *.cpp に書いてたらリンクが通らないので確認を。
389378:2005/03/27(日) 21:47:53
>>386 >>387
それはXSVal.cppで定義されてます。

もう少し考えてみたいと思います。
ありがとうございました。
390デフォルトの名無しさん:2005/03/28(月) 00:48:10
>>389
export されていない関数(メンバ関数)テンプレートの定義は
インスタンス化されるコンパイル単位に含まれる必要がある。

たぶん export は使えないから、定義もヘッダに含めてしまうのが現状では一般的。
391デフォルトの名無しさん:2005/03/28(月) 00:53:33
361は単にシングルトンつかえばいいだけだろ

const std:vector<int> a& = create_a();

static const std::vector<int>& create_a()
{
 static std::vector<int> &a;
 a.push_back(...);
 a.push_back(...);
 a.push_back(...);
 return a;
}

これなら、コンストラクタにも縛られんし
392デフォルトの名無しさん:2005/03/28(月) 00:54:49
参照がらみでタイプミスった罠 orz
393デフォルトの名無しさん:2005/03/28(月) 01:03:54
>>391
少々スレ違いだが、boostに同様のものがある。
#include <boost/assign/list_of.hpp>

const std::vector<int> a = list_of(2)(20)(3);
394デフォルトの名無しさん:2005/03/28(月) 11:18:25
mapのoperator[]ってキーが存在しないときの戻り値は未定義ですか?
それとも、必ず0が返るとかみたいに決まってますか?
395デフォルトの名無しさん:2005/03/28(月) 12:09:32
>>394
先ず本を読め。
396デフォルトの名無しさん:2005/03/28(月) 12:29:48
>>394
T()が返る
397デフォルトの名無しさん:2005/03/28(月) 13:13:06
>>394 の様な質問をする輩に T() が解るとも思えんが。
398デフォルトの名無しさん:2005/03/28(月) 13:39:22
T() が分からない香具師がそもそも map なんか知(ry
399デフォルトの名無しさん:2005/03/28(月) 16:01:15
今後の勉強のタメにT()を教えてください
400デフォルトの名無しさん:2005/03/28(月) 16:07:21
別に NULLPO() でもいいんだけどな
401デフォルトの名無しさん:2005/03/28(月) 16:21:01
デフォルトコンストラクタの結果が返るとか書けばいいだけでは?
組み込み型は0だな
402デフォルトの名無しさん:2005/03/28(月) 16:24:56
初期値でいいんだよ
あとGA()でもいいな
403デフォルトの名無しさん:2005/03/28(月) 19:43:12
>>394
デフォルトコンストラクタの結果への参照が返る。
404デフォルトの名無しさん:2005/03/28(月) 23:30:23
T()じゃ一時オブジェクトじゃん
返すのはT&だよ。
405デフォルトの名無しさん:2005/03/28(月) 23:38:35
正確に言えばT()を挿入してそこへの参照を返すといったところかな。
406デフォルトの名無しさん:2005/03/28(月) 23:58:06
キャーのび太さんのエッチ!
407デフォルトの名無しさん:2005/03/29(火) 12:09:32
ある一つのプログラムの中で
あるクラスのメンバ変数としてm_strAppPathをstringで定義し

  char szAppPath[MAX_PATH];
  GetModuleFileName(NULL, szAppPath, MAX_PATH);
  m_strAppPath = szAppPath;
  m_strAppPath = m_strAppPath.substr(0, (m_strAppPath.rfind('\\')+1));

としてアプリケーションのパスを保持しています。
この部分は期待通りに動作しているのですが、
上のコードがある物とは別のクラスのソースファイルの中で
strFileと言う変数をstringで定義し、GetOpenFileNameでstrFileにファイル名を取得し、

  strFile = strFile.substr(0, x);  ←xの値は任意

とすると、上のm_strAppPathと違ってstrFileがNULLになってしまいます
同じことをしているだけなのになぜ結果がおかしくなるんでしょうか・・・
408デフォルトの名無しさん:2005/03/29(火) 16:42:46
>>407
strFileが初めから空ではないかと言ってみる。
409407:2005/03/29(火) 17:32:04
いえ、ちゃんとデータ入れてました
デバッグでもちゃんとデータが入ってるのは確認しましたし

色々やっててやっと原因がわかったんですが
lstrcpy((char*)strFile.begin(), 別のstring変数のポインタ);
としてやってたのがいけなかったようです
size()の返値が0になってました・・・
直接コピーはダメなんですね・・・
410デフォルトの名無しさん:2005/03/29(火) 17:35:41
それはやばい
411デフォルトの名無しさん:2005/03/29(火) 18:01:34
むしろstrcpy推薦
412デフォルトの名無しさん:2005/03/29(火) 18:38:21
あちこちで推薦して歩くなよw
413デフォルトの名無しさん:2005/03/30(水) 02:32:32
>>409
basic_string<>に直接コピーすると内部でのデータ構造が破壊される
虞がある。そもそもbasic_string<>::begin()が返すのはbasic_string<>::iterator
であって、char*ではない。basic_string<>::iteratorがchar*で実装されている
「可能性もある」にすぎないし、かなりの数の実装ではそうではない。
414デフォルトの名無しさん:2005/03/30(水) 19:14:59
>>409
strFile = 別の string 変数

にしなかった理由を知りたい。
415デフォルトの名無しさん:2005/03/30(水) 19:21:41
GetOpenFileNameに渡したりしてたから
416デフォルトの名無しさん:2005/03/30(水) 23:26:37
こんばんわ
std::wstring m_string;
wchar_t* pWC=m_string.c_str();

このpWCに直接アクセスしてもいいのでしょうか?
たとえば、strcpyなどで文字列をコピーしたり。
417デフォルトの名無しさん:2005/03/30(水) 23:52:19
読むのはいいけど書いちゃダメ
418デフォルトの名無しさん:2005/03/31(木) 00:16:35
そもそもコンパイルが通らない気が…

const wchar_t* ならわかるけど
419デフォルトの名無しさん:2005/03/31(木) 10:15:43
Win32APIにstringオブジェクトを渡して使ってもらうことはできないんでしょうか
一旦別のchar変数に受け取ってから代入するしか無いんでしょうか
420デフォルトの名無しさん:2005/03/31(木) 10:27:13
どの辺がSTL?
421デフォルトの名無しさん:2005/03/31(木) 10:33:02
stringがSTL
422デフォルトの名無しさん:2005/03/31(木) 10:41:17
c_str()を呼んで、const char * を渡せばいいだけでは?
423デフォルトの名無しさん:2005/03/31(木) 10:53:50
何故stringのキャストは高機能じゃないの?
例えば、
int a=10

string(a)
は何故できない?
424デフォルトの名無しさん:2005/03/31(木) 11:06:43
>>423
string の機能とする必要がないからだろうな。
425デフォルトの名無しさん:2005/03/31(木) 11:41:27
>>424
確かにもう少し冗長な方法で、変換できますが。
borlandのAnsiStringやMFCのCStringではできるのに、stlがサポートしなかったのは、どうしてなのでしょうか?
426デフォルトの名無しさん:2005/03/31(木) 12:02:24
>>425
「便利な文字列型」と「標準の文字列型」の違いがあるからだろうな。
427デフォルトの名無しさん:2005/03/31(木) 12:04:16
>>423
最近はそーゆーのも「キャスト」と呼ぶんですか。
(´・∀・`)ヘー
428デフォルトの名無しさん:2005/03/31(木) 12:18:56
>>418
そこで、const_castですよ
429デフォルトの名無しさん:2005/03/31(木) 13:27:39
>>425
暗黙の型変換を許したくなかったんじゃまいか
430デフォルトの名無しさん:2005/03/31(木) 13:53:39
>>429
それならexplicitで十分。たぶん>>426のようなことだと思う。
431デフォルトの名無しさん:2005/03/31(木) 14:10:41
basic_string クラスっつーくらいだからな。
432デフォルトの名無しさん:2005/03/31(木) 14:21:10
stringstreamを使えってことか
433デフォルトの名無しさん:2005/03/31(木) 14:33:30
basic_stringはSTLではないんだけどね、ホントは
434デフォルトの名無しさん:2005/03/31(木) 16:08:05
>>423
boost::lexical_cast
435デフォルトの名無しさん:2005/03/31(木) 17:34:58
>>433
STL が何か解ってない >>1 が勃てた重複スレで
その指摘はどうだろう。
436デフォルトの名無しさん:2005/04/05(火) 00:17:02
イテレータからポインタに変換するいい方法はないでしょうか?
現在,

hoge::iterator it;

をポインタに変換するのに

&*it

としていますが,あんましいい方法じゃない気がするので….
437デフォルトの名無しさん:2005/04/05(火) 00:36:07
>>436 なにが気に入らない?
438デフォルトの名無しさん:2005/04/05(火) 04:52:01
>>436
template <typename Target, typename Source>
inline Target* iterator_cast(Source source)
{ return &*source; }

hoge<T>::iterator it;
T* t = iterator_cast<T>(it);

だったらこんなんどう?
オレはこんなのオススメしないけど
439デフォルトの名無しさん:2005/04/05(火) 07:43:24
>393
boostなら、boost::arrayがあるじゃあないか
440デフォルトの名無しさん:2005/04/05(火) 13:03:38
hoge<T>::iterator it;

boost::addressof(*it);
441デフォルトの名無しさん:2005/04/05(火) 23:19:52
いずれにせよ、見やすくなるわけでもないのに長くなるな。
442436:2005/04/05(火) 23:39:40
VC6だと

hoge<T>::iterator it;
T *p = (T*)it;

みたいなのが普通に通ってたんですけど,
VC7に移行したとたんエラーが出て通らなくなっちゃいました.
もしかして,この書き方はVC6専用??
443デフォルトの名無しさん:2005/04/05(火) 23:45:01
>>442
VC6 と VC7 の両方で
std::cout << typeid(hoge<T>::iterator).name();
を実行して見れ
444デフォルトの名無しさん:2005/04/06(水) 00:50:08
>>442
イテレータがポインタで実装されている保証はないから、そういうコードは書いちゃダメだろ
445デフォルトの名無しさん:2005/04/06(水) 01:15:36
>>442 Cスタイルキャストイクナイ
446デフォルトの名無しさん:2005/04/06(水) 04:39:11
>>442
これはひどい
447デフォルトの名無しさん:2005/04/06(水) 05:12:25
ごめんね、お母さん初めてキャストしたから(ry
448デフォルトの名無しさん:2005/04/06(水) 12:21:06
>>442
そこで reinterpret_cast ですよ。
449436:2005/04/06(水) 20:50:00
ぐはっ!
どうやらやっちまってたらしい…。
1年間ぐらいずっと
「この変換は便利だ〜」
とか思って使い続けていた俺はいったい…orz
450デフォルトの名無しさん:2005/04/07(木) 00:16:12
>436は医院で内科医?
451デフォルトの名無しさん:2005/04/07(木) 00:28:51
>>436は合格。
452デフォルトの名無しさん:2005/04/07(木) 01:22:37
>>442のことだと思われ。
一年間に書いたコード全部それかよ。
453デフォルトの名無しさん:2005/04/07(木) 03:06:06
>>442
そこで reinterpret_cast ですよ。
454デフォルトの名無しさん:2005/04/07(木) 05:34:12
std::listでイテレータの指す要素をリストの先頭に移動したいとき
オブジェクトを新たに生成せずに行うことは可能でしょうか。
以下のコードくらいしか思いつかないのです。
Object foo = *iter; // ←オブジェクト生成のコストを減らしたい
list.erase(iter);
list.push_front(foo);
455454:2005/04/07(木) 07:01:52
自己解決しました。
456デフォルトの名無しさん:2005/04/07(木) 09:41:54
>>455
後学のためにどう解決したのか知りたい。
457デフォルトの名無しさん:2005/04/07(木) 10:22:02
splice() だろ。
458454:2005/04/07(木) 13:24:00
>>456,457
はい。list.splice(list.begin(),list,iter);です。
459デフォルトの名無しさん:2005/04/07(木) 20:39:51
リスト使うならLISP使うと間違いのにな
460デフォルトの名無しさん:2005/04/07(木) 22:28:57

>>459 (°Д°)ハァ?
461デフォルトの名無しさん:2005/04/07(木) 23:14:41
そうそう、わざわざ妙ちくりんなリストライブラリ使う言語はアホだよな
462デフォルトの名無しさん:2005/04/08(金) 10:37:59
まずは459の日本語が妙ちくりんな件
463デフォルトの名無しさん:2005/04/08(金) 12:09:02
>>459
プログラミング言語以前に、日本語を勉強すべきだな。
464デフォルトの名無しさん:2005/04/08(金) 20:25:54
わたし日本語ちょことです
465デフォルトの名無しさん:2005/04/08(金) 22:08:03
はじめました、わたくしおまめくりとりすいいます
どうがよろしくいれてください
466デフォルトの名無しさん:2005/04/08(金) 22:17:35
合格!
467デフォルトの名無しさん:2005/04/27(水) 10:47:21
string str;
str="200";
で、このstrをint型に変換するにはどうしたらよいのですか?
468デフォルトの名無しさん:2005/04/27(水) 10:49:58
その下に
int i=200;
と書く。
469デフォルトの名無しさん:2005/04/27(水) 10:58:55
>>468
変換する方法を知りたいのですが
470デフォルトの名無しさん:2005/04/27(水) 11:33:04
>>467

std::string str = "200";
std::istringstream is(str);
int i;
is >> i;
std::cout << i << std::endl;
471デフォルトの名無しさん:2005/04/27(水) 13:48:47
1. チェックをしないとき
  i = atol(str.c_str());
2. チェックをするとき
  const char *p;
  i = strtol(str.c_str(), &p, 10);
  if (*p) {
    エラー処理;
  }
3. 無駄にC++なやり方
  >>470
472デフォルトの名無しさん:2005/04/27(水) 13:54:34
>>471
このスレ的には、1-2は間違い。
473デフォルトの名無しさん:2005/04/27(水) 14:40:28
try {
 int i = boost::lexical_cast<int>( str );
} catch(boost::bad_lexical_cast& err) {
 // エラー処理
}

内部的には>>470と同じことをしてる
474デフォルトの名無しさん:2005/04/27(水) 15:23:16
atoiが一番簡単だよなあ・・・
475デフォルトの名無しさん:2005/04/27(水) 16:25:47
このスレ的ってなんだよw
全部STL使わにゃいけんのか?w
476デフォルトの名無しさん:2005/04/27(水) 16:44:00
>>475
STLの相談と解釈すべきってことだろ。
477470:2005/04/27(水) 17:39:54
>>475
わざわざここで聞いてきたのだし、STL流儀でやるべきだろう。
って、ストリームってSTLじゃないんだっけ。
478デフォルトの名無しさん:2005/04/27(水) 18:26:13
>>477
>ストリームってSTLじゃないんだっけ。
まったくもって違う。
つか、STL なんていう呼称に何か意味があるのか?
479デフォルトの名無しさん:2005/04/27(水) 18:39:15
ついついatoiやsprintfを多用してしまう俺
480デフォルトの名無しさん:2005/04/27(水) 22:04:51
STLスレ的って言うんだったらせめてこういう風にしようよ。
#include <iostream>
#include <string>
#include <algorithm>
#include <cctype>
#include <functional>
bool ToInt(char c, int *n)
{
    if (!std::isdigit(c))
        return true;
    *n *= 10;
    *n += c - '0';
    return false;
}
int main()
{
    int Num = 0;
    std::string str = "200";
    std::find_if(str.begin(), str.end(), std::bind2nd(std::ptr_fun(ToInt), &Num));
    std::cout << Num << std::endl;
    return 0;
}
BCCのSTLはToInt()の引数をint&にすると参照へのポインタは作れないと言いやがる。Boostなら平気だったが。
std::find_if(str.begin(), str.end(), boost::bind(ToInt, _1, boost::ref(Num)));
481デフォルトの名無しさん:2005/04/27(水) 22:29:05
boost::lambdaとboost::bindってどう違うの?
いつもはboost::lambdaの方を使ってるんだけど。

482デフォルトの名無しさん:2005/04/27(水) 22:43:04
>>481
boost::lambdaは無名関数作成。
boost::bindは>>480のように2引数関数オブジェクトから1引数関数オブジェクトを作ったりするのに使う。
483デフォルトの名無しさん:2005/04/27(水) 23:22:15
でもboost::lambda::bindってあるじゃない?
484デフォルトの名無しさん:2005/04/28(木) 01:30:10
>>483
boost 1.32 だと boost::lambda::bind よりも boost::bind の方が適用範囲が
広い。確か intrusive_ptr を使ってると lambda の方はうまく動かなかった
ような気がする。
485デフォルトの名無しさん:2005/04/28(木) 02:05:09
>>484
あんまり答えになってないんじゃないか? それはさておき、俺は
boost::lambda::bindとintrusive_ptrを使ってるけど別に困ってないけどな。

俺の経験ではboost::bindはlambdaと混用できなくて、
必然的にboost::lambda::bindを使う方が多い。
486デフォルトの名無しさん:2005/04/28(木) 21:53:38
boostのlambda使う奴がいるとは思わなかったw
487デフォルトの名無しさん:2005/04/28(木) 22:49:52
普通に使わないか?
便利だと思うんだけど。
488デフォルトの名無しさん:2005/04/29(金) 00:50:38
つーかbindって。ネーミングセンスなさ杉
489デフォルトの名無しさん:2005/04/29(金) 01:26:53
STLがbind1st、bind2ndなんて名前つけちゃったから。
490デフォルトの名無しさん:2005/04/29(金) 10:05:35
>>488 ハイセンスな名前きぼんぬ。
491デフォルトの名無しさん:2005/04/29(金) 10:57:12
ai-n
492デフォルトの名無しさん:2005/04/29(金) 11:03:47
boost::ボインど
493デフォルトの名無しさん:2005/04/29(金) 12:09:40
>>489
STL 以前に、コンピュータサイエンスで使われてた単語をそのまま
持ってきただけかと。そもそも boost::lambda のラムダも、λ計算
そのままだし。
494デフォルトの名無しさん:2005/04/29(金) 12:17:26
はじめbindっていうから、socketの話かとオモタ
495デフォルトの名無しさん:2005/04/29(金) 12:38:55
boost::ランバダ
496デフォルトの名無しさん:2005/04/29(金) 12:41:31
boost::penis
497デフォルトの名無しさん:2005/04/29(金) 13:51:07
boost::uholtu!
498デフォルトの名無しさん:2005/04/29(金) 14:01:39
boost::yaranaika?
499デフォルトの名無しさん:2005/04/29(金) 14:43:26
boost::dagakotowaru
500デフォルトの名無しさん:2005/04/29(金) 14:57:02
馬鹿でも参加できる流れになると速いな。
501デフォルトの名無しさん:2005/04/29(金) 16:42:56
↓おっとここで天才登場
502デフォルトの名無しさん:2005/04/29(金) 16:58:32
やっぱLISP最高
503デフォルトの名無しさん:2005/04/29(金) 17:10:16
>>488
グッドセンスな名前はまだか?
504デフォルトの名無しさん:2005/04/29(金) 23:49:14
>>488
お前が馬鹿なだけ。
505デフォルトの名無しさん:2005/04/30(土) 00:11:35
vectorの要素がポインタのときresizeでサイズを拡張するのは危険と教えられたのですが
理由は何ですか?
506デフォルトの名無しさん:2005/04/30(土) 00:16:23
そうかねえ。488ではないが、bindではなくcurryとかにすべきだったんじゃないか?

>>489
STLのbind1st、bind2ndは引数に束縛という意味でbindをそのまま持ってきたわけだが、
boost::bindについてまで束縛を「そのまま持ってきた」と言えるかというと疑問だ。
507デフォルトの名無しさん:2005/04/30(土) 00:16:38
別に危険じゃないと思うが。
単に拡張にせよ縮小にせよ、ポインタが指している先の面倒を自分でみる必要があるだけで。
508デフォルトの名無しさん:2005/04/30(土) 01:20:32
ウホッ!いい男。
509デフォルトの名無しさん:2005/04/30(土) 03:27:20
>>505
そいつに聞け。
510デフォルトの名無しさん:2005/04/30(土) 07:26:01
STL関係のサイトを見てると、
vectorを使って、動的に確保したメモリ領域のアドレスを管理するのに、
どこもポインタからunsigned longとかunsigned intとかに変換してるのですが、
直接ポインタ型でvectorを使っても何もダメなことって無いですよね?
ポインタ型だって結局はunsigned longとかと同じ数値なんだし・・・
511デフォルトの名無しさん:2005/04/30(土) 07:53:51
>>506
そこで語源が固有名詞な専門用語持ってくるのも嫌な感じだな。
curry(apple, honey) とかも嫌だろ。

ついでに、調べてる最中にこんなんも拾った。
http://mail.python.org/pipermail/python-dev/2004-February/042660.html
曰く、
"Curry is a one argument function that accepts a function and returns a new function"
だそうだ。
512デフォルトの名無しさん:2005/04/30(土) 07:56:00
>どこもポインタからunsigned longとかunsigned intとかに変換してるのですが
どこでや。

>ポインタ型だって結局はunsigned longとかと同じ数値なんだし
sizeof(long*) == 8
sizeof(long) == 4

という環境もあるわけですが…
513デフォルトの名無しさん:2005/04/30(土) 07:57:28
>>510
数値に変換しているのは、ポインタ型それぞれに
テンプレートのインスタンス化が起こるのを嫌ってるんだろう。
ただ、そこで整数型で置き換えるのは間違いで void* ぐらいにしておくべき。
ポインタ型でvectorを使うのは全く問題ないが、
問題ない理由としてポインタが数値であるという認識は間違い。
514デフォルトの名無しさん:2005/04/30(土) 08:04:14
>>512
あぁいや、サイズが同じというんじゃなくて、結局は数値なんだしってことで

>>513
でも、データ上数値であることに変わりないと思うのですが
じゃあ、どういった理由で問題無いのでしょう?
515デフォルトの名無しさん:2005/04/30(土) 08:38:51
>>514
頭悪そうですね…
516513:2005/04/30(土) 08:48:02
>>514
数値であっても、サイズが同じじゃないと問題が起こることぐらいわかるよな?

ポインタ型でvectorを使うのが問題ない理由は、ポインタ型が
vectorのテンプレート引数として要求される条件を全て満たしているから。
517デフォルトの名無しさん:2005/04/30(土) 10:24:41
unko_curry はどうよ。
518デフォルトの名無しさん:2005/04/30(土) 10:54:13
それはどっちが味でどっちが本質なんだ
519デフォルトの名無しさん:2005/04/30(土) 18:36:36
おれが思うに、味がうんこだったら本質もうんこだと断定できる。
すなわち「うんこ味のカレー」はうんこそのものである。
また、「カレー味のうんこ」はたとえ見た目がうんこそっくりでも、
カレーそのものかもしれないという可能性がまだ残されている。
しかし、「うんこ」と断言されている以上、危険性は賭けである。
これ以上は1/2の確率と「運」に任せるしかない。
ゆえに、選ぶとしたら「カレー味のうんこ」だ!
520デフォルトの名無しさん:2005/04/30(土) 18:44:01
しかし、ここで今、重大な見落としをしていることに気付いた。
それは「カレー味」とは、どの程度の質レベルなのか、という問題である。
もしもうんこが1%でもブレンドされていたらおれの敗北である。
「カレー味」と表記されたからといって、原料が100%すべてカレー
である確率は残念ながらとても低いだろう。
最後に「うんこ」と断言されていることを忘れてはならない。
おれはまた、思考の渦に入り込んでしまった様だな。
521デフォルトの名無しさん:2005/04/30(土) 18:45:03
それはつまり、「カレー」「うんこ」の定義次第ということだね。
522デフォルトの名無しさん:2005/04/30(土) 18:53:14
難しいな・・
523デフォルトの名無しさん:2005/04/30(土) 20:50:03
この問題に比べたらSTLの習得なんて簡単。
524デフォルトの名無しさん:2005/04/30(土) 21:04:01
スカトロ大好きな俺にとっては簡単な問題
525デフォルトの名無しさん:2005/04/30(土) 21:52:06
疑問なんだけど、
スカトロって、誰が出したのかも判らない様なうんこでも食えるもんなの?
526デフォルトの名無しさん:2005/04/30(土) 22:10:42
そんな話はやめてくれ……。
527デフォルトの名無しさん:2005/05/01(日) 03:35:59
お前ら楽しそうだなw
528デフォルトの名無しさん:2005/05/01(日) 06:58:44
鴻上尚史のオールナイトニッポン
(「究極の選択」コーナー) って18年くらい前だっけ?
息の長いネタだ<カレー味の運子
529デフォルトの名無しさん:2005/05/03(火) 03:17:29
curry化の語源は食い物のカレーじゃなくて人名(Haskell Curry)だよ
530デフォルトの名無しさん:2005/05/03(火) 03:31:20
>>529 知らずに喋ってる奴なんていねーよ。
531デフォルトの名無しさん:2005/05/03(火) 06:00:16
>>529で一気に萎えた件
532デフォルトの名無しさん:2005/05/03(火) 07:28:55
>>529は自分だけが物知りで特別だと勘違いしている痛い香具師
533デフォルトの名無しさん:2005/05/03(火) 07:32:47
>>529は初代うんち食う王
534デフォルトの名無しさん:2005/05/03(火) 08:11:01
535デフォルトの名無しさん:2005/05/04(水) 13:49:33
intあるいはdoubleをstringに変換する方法を教えてください
536デフォルトの名無しさん:2005/05/04(水) 13:55:47
sprintf
537デフォルトの名無しさん:2005/05/04(水) 14:21:52
>>536
もっとC++的なやり方はありませんか?
538デフォルトの名無しさん:2005/05/04(水) 14:27:45
std::string str = boost::lexical_cast<string>((int)10);
539デフォルトの名無しさん:2005/05/04(水) 14:30:56
strstream
540デフォルトの名無しさん:2005/05/04(水) 14:44:19
>>537
std::string str(number, ' ');

>>539
遅くない?
541デフォルトの名無しさん:2005/05/04(水) 14:47:10
lexical_castもなんか凄い遅いね
542デフォルトの名無しさん:2005/05/04(水) 14:51:10
iostream系が遅いと感じるって何の処理する時?
そういう時の代替案はなんだろう?printf?
543デフォルトの名無しさん:2005/05/04(水) 14:54:20
そんなんでプログラム全体の動作に致命的な影響を与えるほど遅くなるなら
C++使うのやめれ
544デフォルトの名無しさん:2005/05/04(水) 14:56:57
>535
wsprintf
545デフォルトの名無しさん:2005/05/04(水) 14:59:58
double x=1.0;
string str="aaa"+string(x)+"bbb";

みたいなことが出来るような文字列クラスはありませんか?
546デフォルトの名無しさん:2005/05/04(水) 15:15:20
std::ostringstream でも使いな
547デフォルトの名無しさん:2005/05/04(水) 15:26:20
548デフォルトの名無しさん:2005/05/04(水) 15:56:01
>>537
reinterpret_cast<std::string>
549デフォルトの名無しさん:2005/05/04(水) 21:19:45
おまいらスレ鯛よく読め
550デフォルトの名無しさん:2005/05/04(水) 21:25:54
だが断る
551デフォルトの名無しさん:2005/05/04(水) 22:23:58
>>545
boost::lexical_cast()
552デフォルトの名無しさん:2005/05/04(水) 23:03:02
>>549
STL の意味を知らないからこそこのスレに来るんじゃなかろうかと。
553デフォルトの名無しさん:2005/05/04(水) 23:18:27
>>535
"標準的"手法
#include <iostream>
#include <sstream>

int main()
{
    double d = 1.2345;
    std::stringstream ss;
    std::string str;
    ss << d;
    ss >> str;
    std::cout << str;
}
554デフォルトの名無しさん:2005/05/05(木) 00:14:19
>>552
orzとSTL
555デフォルトの名無しさん:2005/05/05(木) 00:15:12
>>552
そうなんだけど。
だからこのスレいらないんだよ。
556デフォルトの名無しさん:2005/05/05(木) 00:19:15
無かったらまたどっかのアフォが立てるだけ
例えば俺とか
557552:2005/05/05(木) 00:39:38
>>553
ほらね。
558デフォルトの名無しさん:2005/05/05(木) 00:44:21
”標準的”って書いてあるやん
559デフォルトの名無しさん:2005/05/05(木) 02:38:55
>>558
STLちゃうやん
560553じゃないけど:2005/05/05(木) 02:43:09
>>559
だから”標準的”なんでしょ。
stringもstreamもSTLではないが標準ライブラリに含まれる。
561デフォルトの名無しさん:2005/05/05(木) 02:53:46
じゃあSTLとSLの違いを教えてください
562デフォルトの名無しさん:2005/05/05(木) 02:58:39
"STL"なんて呼称の範囲は、C++の標準ライブラリに
取り込まれてしまった今となっては明確に区切れる物では無い。
HP STL や SGI STL のことを指して言ってるのかもしれないが、
今使われてるのはそれらをベースにしたC++標準ライブラリだ。
範囲が明確に決まってるかのように、含まれるだの含まれないだの言うのは時代遅れだぞ。

このスレが不要である事に疑いの余地は無い。
563デフォルトの名無しさん:2005/05/05(木) 03:08:02
それが結論でいいんだけど、書籍や入門サイトでSTLの呼称が
根強く残っているから混乱しちゃうんだな。
呼称は「標準ライブラリ」で統一されるといいんだけど。
564デフォルトの名無しさん:2005/05/05(木) 03:17:35
563
標準ライブラリじゃなくてテンプレートライブラリ
565デフォルトの名無しさん:2005/05/05(木) 03:29:05
テンプレートが邪魔だって言ってるんでは
566デフォルトの名無しさん:2005/05/05(木) 06:39:30
orzとSTLの違いを教えてください
567デフォルトの名無しさん:2005/05/05(木) 07:05:53
vectorは配列に比べて動作が遅くなりますか?
568デフォルトの名無しさん:2005/05/05(木) 07:19:56
テメーで計ればすむことだろ
569デフォルトの名無しさん:2005/05/05(木) 07:30:48
>>568
はかってみたら5倍程度遅くなったんです。これってふつうですか?
570デフォルトの名無しさん:2005/05/05(木) 07:53:23
その値が普通かどうかは知らないが、サイズやキャパシティを自分で覚えてくれて
アクセス毎に境界チェックが入るということ等から見当がつきそうなものだが。

見当がつかなかったらコンパイラにアセンブラソースを吐かせて自分で比較すれ。
571デフォルトの名無しさん:2005/05/05(木) 08:39:12
だが断る
572デフォルトの名無しさん:2005/05/05(木) 09:00:21
>>567>>569
速度が気になるのならboost::arrayをどうぞ。
573デフォルトの名無しさん:2005/05/05(木) 09:02:38
>>569
普通に全件表示を書いたら配列とvectorでは速度が変わらなかったんです。
普通にstd::find()を使ってもstd::accumurate()を使っても同じ速度だし。
どうやったらvectorを遅く動かせるんでしょうか。
574デフォルトの名無しさん:2005/05/05(木) 09:07:12
>>573
vectorは動的にメモリを確保するから、普通の配列に比べコンストラクタ・デストラクタに時間が掛かる。
575デフォルトの名無しさん:2005/05/05(木) 10:45:10
なので、はじめにあらかじめ確保する関数があったはず。
576デフォルトの名無しさん:2005/05/05(木) 10:48:22
>>575
それでも普通の配列より時間がかかる
577デフォルトの名無しさん:2005/05/05(木) 11:23:36
>>570
operator[]()は境界チェックをしないわけだが。
578デフォルトの名無しさん:2005/05/05(木) 11:28:29
>>576
デバッグモードだと差がでるけど、リリースモードだとかなり差が縮んだはず。
まあ、俺的には可変長という汎用性の割には満足な結果だと思うがどうよ?
579デフォルトの名無しさん:2005/05/05(木) 13:29:55
つーか、リリースモードとやらが何かよく判らんが、普通に最適化していれば>573の条件だと実質差がないはず。
保守性考えてもvectorでしょ。
#あ、boost::arrayは知らないのだが、vectorに較べてよりよいならそれも検討の価値ありだな。
580デフォルトの名無しさん:2005/05/05(木) 14:00:52
リリースモードとかデバッグモードとかいっちゃてるやつは
オープンソースの敵
581デフォルトの名無しさん:2005/05/05(木) 14:09:49
・静的な配列
・スタック上の固定配列
・_alloca等でスタック上に確保される配列
・ヒープに確保される配列
には多少差があるだろ。ついでにvectorの場合要素の初期化コストもかかる。
582デフォルトの名無しさん:2005/05/05(木) 15:32:31
・性的な配列
・スタック上の固定配合
583デフォルトの名無しさん:2005/05/05(木) 16:15:32
auto_ptrを使ったimplとかクラス内の作業用メモリ確保で、
たとえば auto_ptr< vector<T> > impl; ← こんな感じでvectorとかdequeとか、
動的にサイズ変化するようなもんをauto_ptrに突っ込んでも大丈夫なんだろうか?
なんかとても不安なんだが。auto_prtとSTLは相性悪いし。

↓例

class hoge
{
auto_ptr< vector<string> > impl;
public:
hoge() : impl ( new vector<string>(0))
{}
void push(const string& str)
{ impl->push_back(str);}
string& back()
{ return impl->back();}
string& front()
{ return *(impl->begin());}
};


int main()
{
hoge x;
x.push("aaaaa");
x.push("bbbbb");
cout << x.front();
x.back() = "ccccc";
cout << x.back();
}
584デフォルトの名無しさん:2005/05/05(木) 16:27:03
>>583
それは構わない。逆がまずいだけで。
585デフォルトの名無しさん:2005/05/05(木) 16:39:25
でもまぁ現実的には、「implとかクラス内の作業用メモリ確保」のために
「動的にサイズ変化するようなもん」を「auto_ptrに突っ込」むのは
あんま意味無いよな。
586デフォルトの名無しさん:2005/05/05(木) 17:15:06
>>584
STLコンテナのは有名だけど、おかげでググったらauto_ptrは最悪とか書かれてて
最近まで使うの躊躇してもんで。

>>585
ムッキッー 上の例はimplのほうじゃ!謝罪と(ry
(たぶん正確にはpimplだけどな)
587デフォルトの名無しさん:2005/05/05(木) 17:23:38
所有権を移動させるつもりのないpimplで、
さらに指してるのがvectorならauto_ptrは別に使わなくて良いような?
588デフォルトの名無しさん:2005/05/05(木) 17:24:30
auto_ptrは便利だと思うけどな。
exceptional c++でも読んでみ?便利な使い方のってるよ。

結局、標準のスマートポインタがauto_ptrっていう
割と癖の強いスマートポインタしかないのがダメなだけ。
普通のスマートポインタが必要な人にとっては
「何だこれは?」みたいなことになる。
589デフォルトの名無しさん:2005/05/05(木) 17:36:51
>>588
万人に理解されない設計をするなってマジで思う。
590デフォルトの名無しさん:2005/05/05(木) 17:47:16
だが断る
591デフォルトの名無しさん:2005/05/05(木) 17:54:55
>>587
実際ところは↓こんな感じでつかってるんで、vectorを直接渡すってわけじゃないけど。
大丈夫か気になったんでちょっと聞きたかっただけ、今は反省している。

struct A{
string class;
set<string> name;
};

auto_ptr<A> impl;
592デフォルトの名無しさん:2005/05/05(木) 18:00:31
書いたときそれが人に理解しやすいか
どうかってのを考えないでやたらめったらテンプレート使う
クソグラマが多くなったね。
ソースコードに技巧をこらしちゃうとホントに見れたもんじゃない。
やねうらおまわりの奴等のソースは汚いだけ。
でもって動作最悪w
せめて技巧をこらしたなら動作はよくしろよって思うw

ひとりごとね。レスつけないで。
593デフォルトの名無しさん:2005/05/05(木) 18:06:31
だが断る
594デフォルトの名無しさん:2005/05/05(木) 18:13:15
>>592
レスつけられるの怖がっちゃうような、
小動物並みの心臓しか持ってない癖に2chに書き込むな。

メモ帳にでも書いとけバーカ。
595デフォルトの名無しさん:2005/05/05(木) 18:14:13
>>589
不勉強な人に理解されないのはしょうがないと思う。
ある程度 C++ を理解している人で auto_ptr がわからない
なんていう人は今のところ見たことがない。
596デフォルトの名無しさん:2005/05/05(木) 18:24:57
>>595
>ある程度 C++ を理解している人で auto_ptr がわからないなんていう人は今のところ見たことがない。
俺のいる会社の同僚が全滅な件について
597デフォルトの名無しさん:2005/05/05(木) 18:28:18
>>595は「std::auto_ptr<>も理解できない奴はC++をまともに勉強していない」と言いたいんちゃうか。
598デフォルトの名無しさん:2005/05/05(木) 18:29:44
そりゃ少しでもC++やってりゃauto_ptrくらいは知ってる罠
599デフォルトの名無しさん:2005/05/05(木) 18:35:03
>>597-598,595
俺のいる会社の同僚も全滅な件について
600デフォルトの名無しさん:2005/05/05(木) 18:47:44
俺自身が全滅な件について
601デフォルトの名無しさん:2005/05/05(木) 18:52:10
std::auto_ptr を理解した上で、マンドクセーので boost::shared_ptr を使っても良いのかどうかについて
602デフォルトの名無しさん:2005/05/05(木) 18:56:35
>>601
boostがスレちがいな件について
603デフォルトの名無しさん:2005/05/05(木) 19:00:39
しかしコンテナの要素にauto_ptrを使おうとすると「boost::_shared_ptr使え」といわれる件について。
604デフォルトの名無しさん:2005/05/05(木) 19:04:23
>>603
テンプレートに技巧を凝らしてしまう愚かな奴について
605デフォルトの名無しさん:2005/05/05(木) 19:12:56
>>604
boost::mplくらいでないとテンプレートに技巧凝らしてるとはいえない件について
606デフォルトの名無しさん:2005/05/05(木) 19:14:15
>>605
boostなんてほとんどの奴は使ってない件について
607デフォルトの名無しさん:2005/05/05(木) 19:14:29
俺の息子がここ1ヶ月で2cm伸びた件について
608デフォルトの名無しさん:2005/05/05(木) 19:19:02
ムチで申し訳ないんだけど、Template の概念って何処から取り入れたの?
C++ 独自の機能ではないよね?
609デフォルトの名無しさん:2005/05/05(木) 19:48:33
>>608
禿曰くAdaとCluから影響を受けたそうだが。あとはCのプリプロセッサマクロの安全な代替。
610デフォルトの名無しさん:2005/05/05(木) 22:13:29
>>609
thanx!!
Clu というのは恥ずかしながら知りませんでした。面白そうね。

http://www.shoeisha.com/book/pc/20c/chap08/gen.htm
611デフォルトの名無しさん:2005/05/05(木) 23:00:45
>>607
皮が?
612デフォルトの名無しさん:2005/05/06(金) 06:37:30
肉が
613デフォルトの名無しさん:2005/05/06(金) 07:21:55
ほとんどAdaのgenericのパクりだ
templateの方が、より強力でより便利な反面
圧倒的に危険な仕様であるが
614デフォルトの名無しさん:2005/05/06(金) 07:37:45
特殊化ってのがキュート。
再帰展開が強欲。
615デフォルトの名無しさん:2005/05/06(金) 17:31:07
boost::shared_ptr や、boost::function、boost::bind なんかもそのうち標準になるし、
今のうちからなれておく意味で使っておくのは悪くないと思うの。
616デフォルトの名無しさん:2005/05/06(金) 21:38:53
>>615
俺の設計理念ではboostとかスマートポインタなんか必要になる時点で駄目。
普通の人の理解の限界はvectorとlistとstringまで。
と、俺は思ってる(その他のSTLってどうも気持ち悪い)。
617デフォルトの名無しさん:2005/05/06(金) 21:46:17
誰もオマエの設計理念なぞ聞いておらん
618デフォルトの名無しさん:2005/05/06(金) 22:10:46
>>617
スマートポインタなんてどこで使うんだよ!ってきくと
大抵、ウンコな設計してるからみちゃいられん。

テンプレートは特に必要が無いなら、なるべくさけるようにして
設計技術を磨いてったほうがいいよ。

と、あえてテンプレートスレでいってみる。
なるべく多くの人に理解できる使い方を心がけよう。>ALL
619デフォルトの名無しさん:2005/05/06(金) 22:11:18
聞いていなくてもレスは付くもの。

そんな常識もわからんのかw
620デフォルトの名無しさん:2005/05/06(金) 22:14:20
普通の人の限界は…って、自分を普通だと思いたいんだろうけど、普通の人を馬鹿にしてないかw
スマートポインタぐらい使えるだろw
621デフォルトの名無しさん:2005/05/06(金) 22:16:35
>>618
>あえてテンプレートスレでいってみる。
誤りですね。ここはテンプレートスレではありません。STL スレです。
…って何回言や理解すんだろな。
622デフォルトの名無しさん:2005/05/06(金) 22:18:18
スマートポインタなしで、どうメモリ管理をするのかしらん
GCを使うのを除けば、ろくな方式を知らんが
623デフォルトの名無しさん:2005/05/06(金) 22:24:03
>>616
是非スマートポインタを使わない際のメモリ動的取得解放の
設計を書いていただけないだろうか。
良いか駄目かということよりも、どうやれば良いのかということの
方が興味あるのです。
624デフォルトの名無しさん:2005/05/06(金) 22:36:10
>>616
boost::functionは使わないより使ったほうが分かりやすくなると思うけど。
625デフォルトの名無しさん:2005/05/06(金) 22:42:10
C++でvoidってvoid*以外はめったに使わないから、
boost::functionで引数なしの型をどう書くのかしばらくわからなかった。
626デフォルトの名無しさん:2005/05/06(金) 22:50:40
なんでSTLじゃなくてboost使ってるのかを簡潔に述べてください
流行だからは無しで。なんとなくも無し。
627デフォルトの名無しさん:2005/05/06(金) 22:57:21
>なんでSTLじゃなくてboost使ってるのか
だからなぜそんな2者択一な質問になるのだ?
STLにはない機能が、もしくはSTLにも同様な機能があるがより拡張・洗練された形で
Boostで提供されているから使っている、それが理由だ。
628デフォルトの名無しさん:2005/05/06(金) 22:58:59
>>623
方法とかそういうのは無い。
決まりを守るだけ。

・必ず確保したクラスで解放するようにする。
・そのメモリにアクセスできるのは確保したクラスのみ。
・確保したクラスを消せば消滅する。
・そのメモリへのポインタの保持を許さない。

ってだけ。
同じようなことをやるのにdelete時のメモリの解放忘れ防止ただそれだけのために
スマートポインタを使うのなら俺もいいとおもうのだけどね。
どうもそれだけじゃない人を見て、それが気持ち悪くてね。
629デフォルトの名無しさん:2005/05/06(金) 23:02:21
http://p3021-ipad402marunouchi.tokyo.ocn.ne.jp/
おkwwwっうぇっうぇうぇwwwうぇwww
wwwwww
wwwうはっwwwっwwwwwwっ
wおkwww

wおkwwwおkwww
おkwwwwwwwww
630デフォルトの名無しさん:2005/05/06(金) 23:11:22
>>628
>・必ず確保したクラスで解放するようにする。
>・そのメモリにアクセスできるのは確保したクラスのみ。
>・確保したクラスを消せば消滅する。
>・そのメモリへのポインタの保持を許さない。

こんな不自由な決まりを作らないとダメな時点でダメだろw
631デフォルトの名無しさん:2005/05/06(金) 23:22:28
>>625
戻り値なしのときはどうしているの?
632デフォルトの名無しさん:2005/05/06(金) 23:24:13
>>631
忘れてた。
633デフォルトの名無しさん:2005/05/06(金) 23:27:59
「俺の設計理念ではboostとかスマートポインタなんか必要になる時点で駄目」
とか言ってる時点で駄目。

「スマートポインタなんてどこで使うんだよ!ってきくと
大抵、ウンコな設計してるからみちゃいられん」
と言ってるヤツは大抵ウンコな設計してるから見てられん。
634623:2005/05/06(金) 23:32:23
>>628
返事ありがとう。
つまり、scopedに解放されることを重視していると思って良いですか?
>>628の気持ち悪いのは複数のオブジェクトに共有されて、
いつが解放のタイミングかわからない状態のことだと感じました。

少なくともboost::scoped_ptrは許容されているように見えます。
635デフォルトの名無しさん:2005/05/06(金) 23:33:02
>どうもそれだけじゃない人を見て、それが気持ち悪くてね。

例えば、どんな?
636623:2005/05/06(金) 23:41:25
>>628
次に、>>634の前提で書くと、MicrosoftのCOMなどに対する考え方を
どの様に持っておられるか気になります。COMは参照カウントを内部に
持つことで、解放のタイミングが掴めません。逆に言えば、利用者がいなくなった
時点で自動的に解放されるとも取ることができます。

これに対しては気持ち悪いと思われますか?
良い、駄目、またその理由なども伺ってみたいです。
637デフォルトの名無しさん:2005/05/06(金) 23:46:51
「俺の設計理念ではboostとかスマートポインタなんか必要になる時点で駄目」
auto_ptrもダメですか。そうですか。
638デフォルトの名無しさん:2005/05/06(金) 23:53:08
物に対して問答無用でダメと言う時点でダメ
と言うことは、私もダメ…
639デフォルトの名無しさん:2005/05/07(土) 00:12:05
>636
むしろCOMのようなフレームワークの存在を前提におけば
それだけでshared_ptrの有用性は十分認められると思うんですけれどね.
実際COMオブジェクトとshared_ptrの組み合わせはshared_ptrの代表的な使用例になりえますし.

>628
scopedな使用例にしかスマートポインタの必要性を認めてないですけれど,
factoryなどで関数境界,あるいはバイナリ境界を所有権が超える必要性って
普通にあると思うんですが,ここら辺ってどうなんでしょうか.

後,CoW(あるいはpimplの一部)には普通に所有権の共有がありえますし,
またslot,observerのようにオブジェクトを登録するようなパターンでは
どのようにすれば良いのかも聞いてみたい.
640デフォルトの名無しさん:2005/05/07(土) 00:25:19
>>636
てゆうか、参照カウンタによっかかって
プログラム組んでくとソース中にばら撒いた一見なんの関連もないようで
実はちゃっかりつながってるオブジェクトに酷い目にあわされるでしょ?

参照カウンタが役に立った極稀な例は俺のプログラミング人生で
ゲームのりソース管理ぐらいだ。
データのロードとアンロードをするとき。
まあ、こういう変なことするときって大抵最適化とかそっちまわりだよね。
十分に速度がありゃ、1回すべて破棄して、構築しなおす。これ最強。
綺麗な設計が重視されるときはこれが一番。
641デフォルトの名無しさん:2005/05/07(土) 00:31:21
所有権の共有が必要ないソフトウェアしか書かない人も居る。
所有権の共有が当然なソフトウェアしか書かない人も居る。
両方を書く人も居る。

大事なのは自分の環境が一般的ではない可能性を想定できることだ。
顔も知らない他人と話すのに「普通は」なんて、そう簡単に持ち出すべきではない。
642623:2005/05/07(土) 00:32:20
>>639
返事ありがとう。
>>636の俺の意図は>>628のレスの意図を明確化したいがためなんです。
どこに駄目さとか気持ち悪さを感じているのかを得たいと思ったんですよ。
でも、同じような目線でレスしてくれる人が居て助かります。
643デフォルトの名無しさん:2005/05/07(土) 00:42:44
>参照カウンタが役に立った極稀な例は俺のプログラミング人生で

お前のプログラム人生って
単純なショボイプログラムしか作ったことない、そんな人生なんだろうね。
644639:2005/05/07(土) 00:44:34
>>641
まったくもっておっしゃるとおりです.639のレス中の「普通は」という言葉は不適切でした.すいません.
639は「639に書いたような設計も十分想定され,そのような設計では所有権の共有あるいは
shared_ptrも十分有用だと思うので,一概にそれを否定するのには違和感を感じます.」
というふうに訂正させてください.

>642
>どこに駄目さとか気持ち悪さを感じているのかを得たい
それは私も同じです.
645デフォルトの名無しさん:2005/05/07(土) 00:48:49
>>639
COMって、 IUnknown で AddRef() が定義されてるんだから、 intrusive_ptr のほうが適切じゃないの。
646623:2005/05/07(土) 00:54:28
>>640
まだ酷い目に遭った事はありませんが、デッドロックが話題になったりしますね。
つまり参照カウンタに良い印象を持たれていないということなんですね。

参照カウンタ型の管理が必要になるのが効率アップの為が多いというのも
同意できます。この方式を利用するのはオブジェクトの生成から破棄
までの時間を限りなく短くするため(もしくはそのタイミングが決められない場合)
だろう考えるからです。
# 標準ライブラリのコンテナに入れるためというのは本質的ではないのでここでは無視

ここまでレスを続けると、>>628は言葉がまずいだけでそれほど的外れでは無いと
思っています。
647デフォルトの名無しさん:2005/05/07(土) 00:58:29
フッ、まあ、最後に言わせてくれ。
俺の文章とお前等の文章どっちが読みやすいかわかるか?
俺のは>>628,640でお前等のは>>634,636,639だ。
俺は俺が認識する普通のプログラマが普通にもっている知識で十分に読める文章で書いたつもりだ。
お前等の文章はどうかな?w
俺が難くなに守っているものはソース可読性でも設計理念でも無い。

俺が持つ普通という感覚の普通らしさだ。
まあ、scopedなfactoryでpimplがsharedな会話をしてるお前等にはきっとわからんだろうがなw
648623:2005/05/07(土) 01:02:14
>>628ははっきり言及はしていないですがstd::auto_ptr、boost::scoped_ptr
に関しては許容しているようです。

さらに>>639にある
>scopedな使用例にしかスマートポインタの必要性を認めてないですけれど,
>factoryなどで関数境界,あるいはバイナリ境界を所有権が超える必要性って
>普通にあると思うんですが,ここら辺ってどうなんでしょうか.
これらの利用法は恐らく彼の許容範囲内では?
違っているなら否定して欲しいところです。

ではboost::shared_ptrをどのように利用するのかというところが
最も中心的な内容だと感じています。続きを書きたいですがここで切ります。
649デフォルトの名無しさん:2005/05/07(土) 01:03:54
>>647
なにコイツw
ただのバカじゃんw

それで満足したんだ。はいはいよかったねw
すごいすごい。普通の感覚バンザーイw
650デフォルトの名無しさん:2005/05/07(土) 01:08:37
>>649
そうかい?
すぐにこの能力が羨ましくてたまらないときがくるよ。
まあ、きても気が付かないかもしれないけどw
651デフォルトの名無しさん:2005/05/07(土) 01:08:59
>>649
俺はあのレスは頭いいと思った。かなりおもろい。
652623:2005/05/07(土) 01:09:56
>>647
まともに議論する気は無いということですか?
それともこちらの文章がわからなかったという話ですか?
少なくとも僕は否定的な感情で文章を書いていないですよ。
何が有用で、何が危険かを他人の感覚も含めて明らかにしたいだけです。

基本的に誰の話でもちゃんと聞いてみたほうが良いと思ったから
話を引っ張ったんですけどね。がっかりしました。
やっぱり2chでまともにやろうとするのが間違いだったようです。

スレ汚し失礼しました>皆様
653デフォルトの名無しさん:2005/05/07(土) 01:11:46
>>647
ちょ、ま、お前wwwwwwwwwww「フッ」ってwwwwwwwww
「フッ」って書いちゃったwwwwwwwwww

しかも勝利宣言wwwwでたwwwwwww
低能の証明の勝利宣言でちゃったwwwwwwwwうぇwww
654デフォルトの名無しさん:2005/05/07(土) 01:12:12
>>645
詳しい理由は分かりませんがintrusive_ptrは推奨されないみたいなので
shared_ptrを優先して利用しているんですよ.もちろんintrusive_ptrもアリだと思います.

>>648
shared_ptrの話が中心になるのなら恐らくスレ違いになるので
Boostスレかtemplateスレ(多分Boostスレの方が適切)に移った方が良くないですか?
655デフォルトの名無しさん:2005/05/07(土) 01:12:34
2chでは何かを主張するより
それを叩く方が楽なんだよね。
このスレみてなんとなく思い出した。
656651:2005/05/07(土) 01:12:36
>>650
素晴らしい能力だ。きみの周りでは笑いが絶えないだろう?
657デフォルトの名無しさん:2005/05/07(土) 01:13:38
>>652
俺が重要だと認識しているものを、君がまったく理解しようとしないから何も得るものがないのさ。
これでも真面目にレスをつけたつもりなんだけどね。
658デフォルトの名無しさん:2005/05/07(土) 01:15:54
>>655
2chには限らないよ。
否定だけして根拠も何も示さない人間に、議論で勝つことは出来ない。
659デフォルトの名無しさん:2005/05/07(土) 01:16:58
スマートポインタも使わずに例外安全を確保するなんて面倒なことやってる人間がいるのか。すごいな。
660デフォルトの名無しさん:2005/05/07(土) 01:18:35
質問されたことに答えもせずに真面目にレスしたつもりなのか。普通ってすげーな。
661デフォルトの名無しさん:2005/05/07(土) 01:31:14
>>657
>>628でスマートポインタに関して許容している発言があったので
それを掘り下げたつもりだったんですよ。
どうやら僕のレスの意図も全く理解されていなかったようですね。
これを摺り寄せるのは面倒なので去ります。お付き合いありがとう。

>>654
配慮ありがとう。でも自分は気持ちが無くなってしまいました。
君は議論できそうな相手なんでどっかで出会ったらまた話したいです。

撤収。
662デフォルトの名無しさん:2005/05/07(土) 01:33:23
フッ、まあ、最後に言わせてくれwwwwwwwwww

俺のwwwwww文章wwうぇwwwお前等の文章wwwww
どっちが読みやすいかわかるか?wwwwwwwww
俺のはwwwwwww>>653でお前等のはその他だwwwwwwwwww
俺は俺が認識する普通のVIPPERがwwwwww
普通にもっている知識で十分に読めるwwwwクオリティタカスwwww
オマエラの文章はブー⊂二( ^ω^)二⊃ーン
俺が難くなに守っているものはレス可読性でも設計理念でもねーよwwwwww。

俺が持つ普通という感覚の普通らしwwwwwwwwうぇwwww
まあ、scopedなfactoryでpimplがsharedな会話をしてるお前等にはきっとわからんwwwwwww
663デフォルトの名無しさん:2005/05/07(土) 02:00:40
理解できない物を使わない者は賢明である。
664デフォルトの名無しさん:2005/05/07(土) 02:08:47
>>663
先頭に「自分が」って入れると毎日の残業時間が1h減って、
先頭に「同僚が」って入れると毎日の残業時間が2h減って、
先頭に「一般的に」って入れると新人の研修期間が1/2になります。

各自、環境にあった選択をしてください。
665デフォルトの名無しさん:2005/05/07(土) 02:29:10
理解出来なくていいからブラックボックス的に使ってればいいじゃん。低脳らしくさ。
666デフォルトの名無しさん:2005/05/07(土) 02:32:05
>>648
少なくとも623氏にはもう少しレスしてほしかったな。
>>648の気に入らない言葉リストではscopedしかひっかかっていないし、
scopedにしても、スマートポインタだのboostだのを
議論している人はわかっているはずじゃない?
なんでそこで「俺の考える普通の人」がでてくるのかな?
667666:2005/05/07(土) 02:32:50
上のは>>647の間違いでした。
668デフォルトの名無しさん:2005/05/07(土) 02:36:23
>>665
理解無しでは駄目だろうな。
vectorの要素のポインタ保存しだす奴多数。
サイズが変わった瞬間に阿鼻叫喚の巷と化すことが予想できる。

ブラックボックスにするならそれなりのマニュアルが無いと駄目だな。
もちろん書いただけでは華麗にスルーされて終わりだろうが。
自分だけの理解で解決できるほど会社は甘くない。
自分が知らないことを他の人間が知ってるって場面もあるわけだし。
上手く協調していかないとね。
669デフォルトの名無しさん:2005/05/07(土) 17:41:07
・・・で、スマートポインタのデッドロックはどうやって回避するって?
670デフォルトの名無しさん:2005/05/07(土) 17:47:27
>>669 いきなり何の話だよ。
671デフォルトの名無しさん:2005/05/07(土) 17:51:22
>>670 上の方でそんな話してたから
672デフォルトの名無しさん:2005/05/07(土) 18:03:04
>>671
だれも回避するなんて言ってないだろ。
「参照カウンタ方式なら循環参照には気をつけろ」でおしまいだ。
673デフォルトの名無しさん:2005/05/07(土) 18:05:41
>>672 わざわざ使わなきゃそんな問題起きないよってことでFA?
674デフォルトの名無しさん:2005/05/07(土) 18:07:23
>>673
いいえ。
「参照カウンタ方式なら循環参照には気をつけろ」がFAです。
675デフォルトの名無しさん:2005/05/07(土) 18:10:38
http://207-2.m7.ntu.edu.tw/

っwwwwwwwwwwwwうはっwww
うはっwww
おkwwwwwwうはっwww
wwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwww
676デフォルトの名無しさん:2005/05/07(土) 18:16:22
>>674 使わなければ起きないってことでFA?
677デフォルトの名無しさん:2005/05/07(土) 18:21:09
つうかたかがポインタごときに
多数の亜種意識して使い分けるのがマンドクサ・・
だったら使わなきゃいいじゃんとか言われそうだけど
使うか否かの判断は、そいつをよく知った上でなきゃ出来ない訳で・・
例えば、100種類のスマートポインタ型があって
この場合はアレ使って、この場合はコレ使って、これはあんまり有用じゃないからパス・・
考えただけでウザ。
678デフォルトの名無しさん:2005/05/07(土) 18:22:50
中国人が作ったSTLを使いたい。
679デフォルトの名無しさん:2005/05/07(土) 18:29:25
>>677 俺が独自に用意したnakatake_ex_auto_ptrを使えばいいよ
680デフォルトの名無しさん:2005/05/07(土) 18:33:25
>>679
__wada_akiko_nantoCD_uriage470_ptrとどう違うの?
681デフォルトの名無しさん:2005/05/07(土) 18:33:29
>>676 >674
682デフォルトの名無しさん:2005/05/07(土) 18:34:21
「私たちのアプローチは有効です。−プログラミングの初心者にも」
「さあ、はじめよう」
とか冒頭で言っちゃっているけど、
"Accelerated C++"って、初心者が読んで理解できるのか?
初心者時代の俺がこの本で入門したら挫折すると思う。
と、ふと思った。
683デフォルトの名無しさん:2005/05/07(土) 18:47:57
boost::shared_ptr も良いけど、俺は Loki::SmartPtr の方が良かったなぁ。

>>682
「私たちのアプローチは有効です。-- (もし理解できるのであれば)プログラミングの初心者にも」

> "Accelerated C++"って、初心者が読んで理解できるのか?
多分 No だろうね。もちろん例外はいるけれど。

つまり "Accelerated C++" + 初心者 = 豚 + 真珠。
684デフォルトの名無しさん:2005/05/07(土) 18:49:49
>>680 俺が独自に用意したnakatake_ex_auto_ptrの方が優秀に決まってるさ
685デフォルトの名無しさん:2005/05/07(土) 18:54:37
>>683
だよね。C++は4年やっているし、STLもそこそこ使っているのに
ACは結構難しいところがあるんで、おれがヤバイのかとちょっと思った。
でもなかなかいい本だ。基礎固めに。
686デフォルトの名無しさん:2005/05/07(土) 18:57:21
>>683
初心者 = 豚 + 真珠 + "Accelerated C++"
687686:2005/05/07(土) 18:58:09
間違えた
初心者 = 豚 + 真珠 - "Accelerated C++"
688デフォルトの名無しさん:2005/05/07(土) 19:28:24
>>685
4年でそれはヤバい。>>683はプログラミング初心者の話だ。
689デフォルトの名無しさん:2005/05/07(土) 19:34:18
>>688 統計でもとってヤバイとか言ってるのか?
690デフォルトの名無しさん:2005/05/07(土) 19:38:08
LISPerのおれから言わせるとどの本も笑止
691デフォルトの名無しさん:2005/05/07(土) 19:38:11
>>688
ただ、お前が好きな方向なだけだろ?
俺は3DやPS2、GC、無線通信、DB、ドライバ製作と色々やってきたけど
そんなもんしらんぞ。
692デフォルトの名無しさん:2005/05/07(土) 19:40:34
やっぱLISPやってる人ってすごいなあ。
693デフォルトの名無しさん:2005/05/07(土) 19:44:21
>俺は3DやPS2、GC、無線通信、DB、ドライバ製作と色々やってきたけど
たしかに、こんだけちゃんぽんすればまともにやる暇なんてないかもね。
何回転職したんだか。
694デフォルトの名無しさん:2005/05/07(土) 19:48:45
>>691
そんなもんって何のこと?
695デフォルトの名無しさん:2005/05/07(土) 20:22:42
>>693
確かに言語の勉強するくらいなら
技術の勉強をしたいっていう話はあるよね。
>>691はそういうこと言いたいんじゃない?
696691:2005/05/07(土) 20:30:28
どこの現場でもみたことないし、テンプレートなんて使ってる人自体めずらしいのに
4年でそれはヤバイとか、プログラミング初心者だとか、まあ色々とフカシ過ぎなんじゃないの?
って言いたかった。

俺も転職回数多いほうだと思うけど、テンプレートなんて現場にほとんど浸透してないよ。
697デフォルトの名無しさん:2005/05/07(土) 20:47:52
>>696
> テンプレートなんて現場にほとんど浸透してないよ。
そりゃ C++ の練度が低い職場にいるからだろ。

もっとも、C++ の練度が低い = 駄目な職場、とは限らんが。
698デフォルトの名無しさん:2005/05/07(土) 22:00:16
そうか?
std::vectorもstd::stringも使わない現場なんて、ダメっぽい気がするが。

まぁ、ダメな技術者なら吐いて捨てるほどいるがな。
699デフォルトの名無しさん:2005/05/07(土) 22:38:00
>>698
マ板を見てるとCっぽいC++のが多いのかもわからんな。
700デフォルトの名無しさん:2005/05/07(土) 22:57:43
マイクロソフトの作ったクラスだけ使う人とか。
701デフォルトの名無しさん:2005/05/08(日) 00:26:04
ここって、ちょっと謙ってりゃ調子にのる >>698 みたいな輩多いね。
バカまるだし。仕事もできないだろう。
702デフォルトの名無しさん:2005/05/08(日) 02:09:00
>>701
なんのために誰にむけてプログラム書いてるかわからないよね?
stlもわからない馬鹿。
boostもわからない馬鹿。
って自分が知ってることがさも常識みたいにいってすぐに相手を馬鹿呼ばわり。
こんな姿勢じゃ自分のプログラムを読めない人なんてみんな馬鹿なんだろうね。
誰に読んでもらう予定も無いから、プログラムなんて動きゃいいんだろうね。

こいつらと仕事することになったら、
一体どこまでできれば普通で、何がわからないと馬鹿なのか、
是非、説明書を掲示しておいてほしい。

テンプレートなんてプログラマのスキルからすりゃ所詮、戦術レベルだよ。
どう組んだって動けば問題ないんだ。バグればみんないっしょ。
大事なのは設計。
703デフォルトの名無しさん:2005/05/08(日) 02:09:04
>>641がいいこと言っていると思うんだけどな。

世の中には色々な職場があって、
それぞれの職場でどのようにC++を使っているかは全然違う。
いつもageている人の職場のように、
C++をオブジェクト指向がサポートされたCとして使う職場もあれば、
STLとかboostとかを少しずつかじって使うような職場(うちの職場)もある。
そして、adobeのようなboostを活用しているような会社も実際に存在している。

どの職場もおそらくちゃんとうまく機能しているのならそれでいいじゃん。
他のところの人にこんな風に文句言うのなんて、
通りがかりの人に喧嘩売ってるのとかわんなくない?
704デフォルトの名無しさん:2005/05/08(日) 02:25:00
> adobeのようなboostを活用しているような会社
どうでもいいが、ここに感動した。
705デフォルトの名無しさん:2005/05/08(日) 02:44:14
>702
>テンプレートなんてプログラマのスキルからすりゃ所詮、戦術レベルだよ。
Modern C++ Designを一度読んだほうがよろしいかと……
設計というものの困難さがどのようなもので、テンプレートが設計に対して
どのような影響を与えているのかわかると思うよ。

戦術を知らずに戦略(設計)なんか立てられないよね。
706デフォルトの名無しさん:2005/05/08(日) 02:48:39
>>705
お前の軍は軍師が一番強いのか・・・そうか・・・
707デフォルトの名無しさん:2005/05/08(日) 02:50:49
>>705
>Modern C++ Designを一度読んだほうがよろしいかと……
http://www.shos.info/develop/oo/dscsnptn.html#teach
ワロス
708デフォルトの名無しさん:2005/05/08(日) 02:54:15
オレメモ:sceped_ptrにboost.threadをつっこんだらゾンビができるぞ!あはははは
709デフォルトの名無しさん:2005/05/08(日) 03:02:02
>>705
702じゃないが、テンプレートがなくても設計できるんじゃね?
影響とかいわれても、それはただテンプレートという機能に
振り回されてるとしか思えないが。
710デフォルトの名無しさん:2005/05/08(日) 03:04:12
まともなプログラムが書けていればいい、というのは全くもって正しいんだけど、
いろんな技術を知ってた方が視野が広くなっていいんだよな。
STLは既に言語の標準規格だし、どちらかというと知ってた方が良いものだと思う。
と、Cの標準ライブラリすら使えない環境(組み込み系)の仕事もやってる俺は思う。
引出しが多ければ制限された環境でも取れる手段が多くなるよ。
711デフォルトの名無しさん:2005/05/08(日) 03:08:25
クラスがなくても設計できるんだけど、クラスという機能に
振り回されてる俺が来ましたよ。
712デフォルトの名無しさん:2005/05/08(日) 03:09:34
>>710
しかし、一方で技術に振り回されてしまっている人間もいるな。
このスレの人間みたいに。
金槌をもったらなんでも叩いて解決したくなる厨房そのものだなw
テンプレートを使うことの方が重要で、設計なんて考えた事すらなさそうだよ。
713デフォルトの名無しさん:2005/05/08(日) 03:11:19
>>711
それは別だな。
設計理念に足りないからできたものがクラスだ。(まあ、無くてもなんとかなるはなるが)
テンプレートはあくまでもマクロの延長。
714デフォルトの名無しさん:2005/05/08(日) 03:11:53
覚えたばかりのことは使いたくなるものさ。
でもそのうちに使える場面と使いにくい場面がわかるようになってくる。
知ってるもののうち、その場で一番使えるものがどれかをうまく選べるようになれればいいのさ。
715デフォルトの名無しさん:2005/05/08(日) 03:16:43
>>714
まあ、そうだが。
可読性を重視したときに、同僚が使い慣れないテンプレートを使うという
選択肢が果たして残っているかどうかは疑問ではあるがな。
716デフォルトの名無しさん:2005/05/08(日) 03:17:04
テンプレートはマクロの延長みたいなものだが、
その先にSTLやらboostみたいな世界が広がってたわけさ。
717デフォルトの名無しさん:2005/05/08(日) 03:20:29
>>712
>しかし、一方で技術に振り回されてしまっている人間もいるな。
>このスレの人間みたいに。
今のところ、このスレの人間が技術に振り回されているということを
示す話は出ていないように思うのだが。
どうしてちゃんとした議論もせずにそんなことが言えるのだろうか。
ttp://www.shos.info/develop/oo/dscsnptn.html#hastily

2chにまともな議論を期待する方が間違ってる?
718デフォルトの名無しさん:2005/05/08(日) 03:22:31
>>708
・・・
単にデストラクタが呼ばれる前にjoin()呼べってだけで
scoped_ptrは関係ないだろ。それは。
719デフォルトの名無しさん:2005/05/08(日) 03:40:05
>>717
俺は
〜も知らない=レベルが低い
的な発言(>>698みたいなの)を取って言ったんだけど?
720698:2005/05/08(日) 03:50:48
むぅ、漏れは「知らない」とも「レベルが低い」とも書いてないのだが。

>696-697の流れを受けて、テンプレートを使わないの職場はダメっぽいと言いたいだけ。
そんな職場でも知ってる香具師はいるだろうし、
使えなくても高レベルなプログラムを書く香具師もいるだろう。

ダメな技術者は知識の有無やレベルの高低に関わらずダメだと思うがそれは別の話だ。
余計なお世話だったか。
721デフォルトの名無しさん:2005/05/08(日) 03:59:15
>>720
そう?>>698の文章はとてもそうは読め無かったよ。
後から発言の軌道修正するのも限界があると思うよ。
722デフォルトの名無しさん:2005/05/08(日) 04:01:08
まあ、>>698に限らずそういう発言(テンプレートが使えない=レベル低い)はあったからね。
今更、>>698がどういうつもりだったかなんて大して重要じゃないけど。
723デフォルトの名無しさん:2005/05/08(日) 04:56:07
>>717
>>705がテンプレートに振り回された意見を言ってますよ
もろに設計に影響を与えているそうです
724デフォルトの名無しさん:2005/05/08(日) 10:03:23
あのー、そんなこと聞くなと言われそうですが、
プログラミング言語C++のp397、真ん中のへんのコード
max(2.7, 4); //max(2.7, double(4))
というのは間違いですよね?
max(double, int)があるんだからそっちが呼ばれると思うんですが。
というより実際に作ってみたらこっちが呼ばれたんですが。
725デフォルトの名無しさん:2005/05/08(日) 10:21:41
そんなこと聞くな
726デフォルトの名無しさん:2005/05/08(日) 10:40:58
執筆当時は max(double, int)のオーバーロードがなかったんじゃないか?

727デフォルトの名無しさん:2005/05/08(日) 11:01:39
>>720
「STLやデザインパターンを使いこなしている⇒ 最強の将棋AIを書ける人 ∧ 最強のレンダリングエンジンを書ける人」
という命題が真ならば、おまえの話を聞いてやろう。
STLってそんな高度なプログラムか?俺はSTLの存在を認識する以前から似たようなライブラリを発明していたぞ。
ニコラウス・ヴィルト+ジェネリック思想程度を持ってりゃ一般的に行き着くとこだろ?
つまり今時、CS系大学卒業までに習う程度の基礎的知識だよ。
「STLを知っている」ことがおまえのアイデンティティか?
そしてそれは他の技術者を卑下する十分必要条件だとでも思っているのか?
だとしたらそれは極めて低レベルな脳だということを指摘しておこう。
728デフォルトの名無しさん:2005/05/08(日) 11:06:15
>>726
そんなことあるのかという気もしますけど、でもそういう感じの理由なんでしょうか。
原著のでも訳書のでも正誤表に載ってなかったんで少し不安だったんですが、
安心しました。ありがとうございます。

>>725
ちょっと好き
729デフォルトの名無しさん:2005/05/08(日) 11:06:46
なにを熱くなってるのか理解できんが、STLを理解してるのがえらいんじゃなくて、STLも理解できてないのがクズってだけだ。
730デフォルトの名無しさん:2005/05/08(日) 11:20:24
お前ら全員落ち着け。
731デフォルトの名無しさん:2005/05/08(日) 11:20:52
何か、変な周波数でわめいてるのがいるね。
今日は涼しいからそういうのも大人しいと思ったのに。
732デフォルトの名無しさん:2005/05/08(日) 11:26:14
>>728
これは、maxの多重定義の中で、max<int>() と max<double>() のどちらを
どのように呼び出しているかを、問題にしていると思われ
733デフォルトの名無しさん:2005/05/08(日) 11:26:27
お前ら全員出て行け。
734デフォルトの名無しさん:2005/05/08(日) 11:34:52
>>733

 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄」
―――――――――――――‐┬┘
                        |
       ____.____    | 
     |        |        |   |
     |        |        |   | 
     |        |        |   |
     |        |        |   |
        ̄ ̄ ̄ ̄' ̄ ̄ ̄ ̄    | ミ
                        |
                   ミ   ∧_∧
                       ( ´Д`)
                       ⊂   つ
                       / / /
                       し' し
735( ゚д゚)ウッウー :2005/05/08(日) 11:39:43
( ゚д゚)ウッウー
736デフォルトの名無しさん:2005/05/08(日) 12:09:38
日本の某C++メーリングリストを見てると
テンプレートに振り回されてるなって思う。
737デフォルトの名無しさん:2005/05/08(日) 12:11:10
どこよ?cppll?
738デフォルトの名無しさん:2005/05/08(日) 12:12:43
>>737
またそれか、と思ってしまった。
739デフォルトの名無しさん:2005/05/08(日) 12:13:12
馬鹿はどうやっても、設計や実装に失敗するんだけど、
言語の機能のせいにすれば、気が晴れるんだろう。

機能の限られた言語で失敗したら自分のせいだから、
本当は助かってんじゃないのかな、言語のせいにできて。
740デフォルトの名無しさん:2005/05/08(日) 12:14:49
お前がバカだというのは良く判ったから、
とにかくスレを端から全部荒らして回るのを止めろ

さっさと引き篭もれよバカ
741デフォルトの名無しさん:2005/05/08(日) 12:14:51
機能の限定された言語…関数と再帰とif文のみ実装している言語だな。
742デフォルトの名無しさん:2005/05/08(日) 12:18:33
>>740
何?
自分と違う意見の人を同一人物だと思うのは辞めたほうがいいよ。
俺も起爆剤なだけで後は勝手に議論が進むことのが多いし。
743デフォルトの名無しさん:2005/05/08(日) 12:21:16
中卒プログラマー(COBOL専門)が必死に荒らしたおかげで、
板人口が極端に少ない掲示板(ぷぷぷ
744デフォルトの名無しさん:2005/05/08(日) 12:23:56
さとうたまをの芸風が、どんどんバカっぽくなっている件
745デフォルトの名無しさん:2005/05/08(日) 12:44:25
>>742
> 自分と違う意見の人を同一人物だと思うのは
君の妄想はある意味おもしろいです。
746デフォルトの名無しさん:2005/05/08(日) 12:48:23
レスにコードがないと伸びる
747デフォルトの名無しさん:2005/05/08(日) 13:18:15
レスに記述できるコードなんて、
サンプルコードの断片に過ぎない事が
理解できていない痛い香具師
748705:2005/05/08(日) 13:29:15
ああ、こんなところで『「ほげ言語」のパラドックス』見るとは思わなかった……
パワフルな機能を使いこなせないからと言って、機能そのものを否定する
のはな……べつにテンプレートが使いこなせないからと言ってSTL自体が
使いこなせないわけじゃないだろうに。

>713
テンプレートには「安全にGenericsを実現する」という設計理念がありますが。
『C++の設計と進化』でも「テンプレートのルーツは、コンテナクラスに入れるものの
タイプをパラメータ化したい、という願望だ」とありますな。

>723
もろに設計に影響を与えておりますが……STL

749デフォルトの名無しさん:2005/05/08(日) 13:48:36
話の流れと関係無いけど、ポール・グラハムの文章は話半分で読んでおいた方が良いと思うよ。
750デフォルトの名無しさん:2005/05/08(日) 14:55:24
>>748
つか、独り言多いよ。
751デフォルトの名無しさん:2005/05/08(日) 15:32:55
>>747
また占い師みたいなことを。
痛いとか言うあたり、ほんとにショックだったみたいだな
752デフォルトの名無しさん:2005/05/08(日) 15:59:25
753デフォルトの名無しさん:2005/05/08(日) 16:02:30
テンプレートを使わないで挑む→
→ダウンキャストを使い始める→
→理解できないコード
754デフォルトの名無しさん:2005/05/08(日) 16:10:38
>>753
テンプレートを使わないとダウンキャストを使わなきゃいけない設計が腐ってる。
そもそも設計が腐ってるのにテンプレートで辻褄を合わせようとする
その姿勢を修正した方がいいということに気が付かないのがあまりにもマヌケでFA
755デフォルトの名無しさん:2005/05/08(日) 16:17:21
>>753
ダウンキャストをテンプレートで回避するケースって、どんなの?
756デフォルトの名無しさん:2005/05/08(日) 16:19:26
>>755
そんな腐った設計する奴の頭の中は理解しないほうがいいぞw
まさに馬鹿がうつるw
757デフォルトの名無しさん:2005/05/08(日) 17:39:11
template< X > D : B<X>
{
D() : B(*this) {} //こういうのは?
};
758デフォルトの名無しさん:2005/05/08(日) 17:41:50
>>757 いきなり何の話だ。
759デフォルトの名無しさん:2005/05/08(日) 17:43:07
>>758
あー!もう!わかれよ!馬鹿!
ってのが>>757の仕事の進め方だから何言っても無駄w
760デフォルトの名無しさん:2005/05/08(日) 17:45:23
まぁモチツケよおまいら
761( ゚д゚)ウッウー :2005/05/08(日) 17:49:42
>>760
( ゚д゚)ウッウー
762デフォルトの名無しさん:2005/05/08(日) 17:50:27
>>761 いきなり何の話だ。
763デフォルトの名無しさん:2005/05/08(日) 17:53:35
>>762
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄」
―――――――――――――‐┬┘
                        |
       ____.____    | 
     |        |        |   |
     |        |        |   | 
     |        |        |   |
     |        |        |   |
        ̄ ̄ ̄ ̄' ̄ ̄ ̄ ̄    | ミ
                        |
                   ミ   ∧_∧
                       ( ´Д`)
                       ⊂   つ
                       / / /
                       し' し
764デフォルトの名無しさん:2005/05/08(日) 17:55:00
日本語文字列はどのように扱えばよいのですか?
765デフォルトの名無しさん:2005/05/08(日) 18:08:40
>>764
マルチバイトでstd::stringでもワイドでstd::wstringでも
お好きなように
766デフォルトの名無しさん:2005/05/08(日) 18:17:38
テンプレートも分からないバカが多いせいで
テンプレートの使用が禁止されるのはよくある。

しかしアセンブラも分からないバカが多いのに
アセンブラは禁止されることは無いのはなぜだろう?
767デフォルトの名無しさん:2005/05/08(日) 18:22:48
>>766
そりゃお前、CPUID命令を使いたきゃそれっきゃねぇからだろ。
768デフォルトの名無しさん:2005/05/08(日) 18:29:12
>>766
そりゃ、発言力の大きなロートルさんの好みでしょ。古い人は
アセンブラは出来るから。
769デフォルトの名無しさん:2005/05/08(日) 20:17:51
>>754,755
コンテナの話だろ?
テンプレートも使わず、javaとかみたくダウンキャストも使わずに
どうやってコンテナを作るのか知りたい。
770755:2005/05/08(日) 20:36:53
>>769
なるほど。そういうことか。
じゃぁ std::qsort と std::sort も当てはまるな。

ということは >754 は
「アルゴリズムを、データ型とは分けて部品化したい」
という姿勢を修正すべきだと考えていることになるのか?
どう修正すれば良いのかさっぱりわからんな。
771デフォルトの名無しさん:2005/05/08(日) 21:33:16
>>769
#define DEFINE_VECTOR(VECTORNAME,TYPE) \
 class VECTORNAME { ... }

DEFINE_VECTOR(int_vector, int);
DEFINE_VECTOR(voidp_vector, void*);



772769:2005/05/08(日) 21:38:58
>>771
テンプレートより優れてるところってあるのかな?
というか基本的にやってることは一緒だよね。
可読性がいいとも思えないし。

もっとよい答えがほしい。>>754の降臨に期待。
773デフォルトの名無しさん:2005/05/08(日) 21:40:51
来るわけ無い
774デフォルトの名無しさん:2005/05/08(日) 21:49:58
はぁ?つーかお前等ダウンキャストの意味はOKか?

基底クラスから派生クラスへのキャストをダウンキャストと呼ぶ

これはいいよな?
基本的に基底クラスから派生クラスのキャストなんてしたら危ないじゃん。
やるなよ。やらなくていい設計にしろよ。
775デフォルトの名無しさん:2005/05/08(日) 21:59:00
>>774
> やらなくていい設計にしろよ。
アルゴリズムの汎用化は、やるなって結論で OK?
776デフォルトの名無しさん:2005/05/08(日) 22:03:00
>>775
いや、問題が出ずにできるならそれでいいけどさ。
この場合って設計がキタネェから起きる問題だろ?
777デフォルトの名無しさん:2005/05/08(日) 22:06:20
テンプレート使わずに、ある程度汎用性のあるコンテナを作ろうとしたら
一番大本になる基底クラスのポインタを格納するコンテナを一個作るぐらいしか
あまりいい方法が無い
(そういうクラスがあるという前提な、Javaはそうなっていたような・・・)

それで、コンテナから取り出したポインタは基底クラスのポインタになるから
dynamic_castで目的のクラスにダウンキャストしてから使うと
778デフォルトの名無しさん:2005/05/08(日) 22:15:39
>>777
>dynamic_castで目的のクラスにダウンキャストしてから使うと
これ、設計がまずい。
そもそもまとめるべきでないものをまとめてしまっている。
汎用性を求めるあまりに言語で「やるな」と言われてるもんの
制限までとっぱらってしまってお前等は何がやりたいんだ?

そんなに汎用性がほしけりゃ全部void*で運用すりゃいいじゃん。
なんのために型があるのかすっかりわすれてしまっている。
テンプレートに振り回されてるいい例だな。
779デフォルトの名無しさん:2005/05/08(日) 22:21:48
はあ?
テンプレートを使えば、そんなことしなくていいけど
テンプレートを使わないで、同じような利便性を得ようとすると
そうなるっていってるだけやん

別に配列と、new Hoge[] だけで、全部やれば問題ないよ
それがイヤなだけで
780デフォルトの名無しさん:2005/05/08(日) 22:23:02
>>779
要するに設計が腐ってるのをテンプレート使って誤魔化してるんだろ?
781デフォルトの名無しさん:2005/05/08(日) 22:24:53
腐ってない設計を教えてください
782705:2005/05/08(日) 22:27:27
>776
汎用のコンテナを設計するときに
 ・設計の段階で決定できるもの:アルゴリズム
 ・設計の段階で決定できないもの:格納するオブジェクトの型
つうことなんだけど、C++の場合、テンプレートとマクロ以外には(777の通り)
型を決定せずにアルゴリズムを構築することはできないんよ。

……やっぱりModern C++ Design よめ。訳者まえがきから一章まででいいから。
783デフォルトの名無しさん:2005/05/08(日) 22:27:42
>>777
せっかくいい番号踏んだんだからバカはスルーしる
784デフォルトの名無しさん:2005/05/08(日) 22:29:08
>>782
だから、やるなっつーに。
785デフォルトの名無しさん:2005/05/08(日) 22:30:10
まあ、汎用のコンテナが本当に必要なのかってことだよな
インターフェースをまとめられないの?って思うコードもちらほら
786デフォルトの名無しさん:2005/05/08(日) 22:31:41
当然必要。データ構造はプログラムの基礎だろ。
787デフォルトの名無しさん:2005/05/08(日) 22:33:32
リンクリストが必要になったとき毎回いちいち作るのか? 馬鹿すぎ
788769:2005/05/08(日) 22:33:59
>>778
void*使った方が危険な方な気がするが。
void* からの static_cast と
dynamic_cast を使ったダウンキャストで、
危険なのは明らかに前者だが(後者は失敗したことがわかるから)。
そもそもdynamic_castは言語として「やるな」なんて言われていない。

そして、>>779で指摘されているように
テンプレートを使った場合は上の問題は起こらない。
なぜなら、>>778のいっている
>そもそもまとめるべきでないものをまとめてしまっている
ということがそもそも起きていないから。
というか、>>778で言っている汎用性っていうのは
javaにあるような共通の基底クラスによってもたらされるものであり
C++のテンプレートによってもたらされるものとは全く違う。
まずそこをはっきりさせてから議論を展開してほしい。

>>780
人の話はもう少ししっかり聞いた方がいい。
だから荒れるんだ。
789728:2005/05/08(日) 22:34:10
>>732
あ…っ。分かりました…。ストラウストロゥェプ先生はつまり、
最終的にmax(2.7, 4)というコードにはmax<double>が適用されるのだ、
ということが言いたかったんですね。
max(double,int)とかの関数宣言(定義)は、どうせインライン化されるからそんなに意味はないと。
ありがとうございました。
790デフォルトの名無しさん:2005/05/08(日) 22:34:36
>>787
必要なものを強引に押し切るというならvoid*とどう違うのか説明キボン。
791デフォルトの名無しさん:2005/05/08(日) 22:37:41
>>788
俺はこれが誤魔化しにみえちゃうんだよね。
設計の悪さに目を向けないであえて強引に突っ切っちゃうあたりが。
792デフォルトの名無しさん:2005/05/08(日) 22:38:41
正直、ダウンキャストなんか使ってるソースみると「妙なことしてんなー」って思うよ。
型の制限があてにならないから可読性も当然下がるしね。
793デフォルトの名無しさん:2005/05/08(日) 22:39:17
ちなみに、どう設計が悪いのかぐらい言え
なにせ、ここでは誰も何にも設計などしていないんだw
設計が悪いといわれても、何のことやら
794デフォルトの名無しさん:2005/05/08(日) 22:39:25
787じゃないけど
>790
『必要なものを強引に押し切る』というのが何なのかわからんが、
テンプレートとvoid*じゃ型安全性が全然違いますがな。
そんなに未定義の領域に突っ込みたいのか?

>791-792
だからテンプレート使えと。
795デフォルトの名無しさん:2005/05/08(日) 22:42:47
デンプレートでvoid*使えば解決
796デフォルトの名無しさん:2005/05/08(日) 22:42:53
>>793
これは個人の感覚にゆだねるしかないからね。
できちゃえばOK。エラーがでなけりゃそれでよしとするならいいんじゃないの。
俺がこだわるのは型の制限かな。
関数の引数から基底のクラスがよばれていたとしても
それは皮を被ったオオカミで中ではちゃっかり派生が呼ばれてるとかいう、
ある意味グローバル変数みたいな問題が起きちゃうからね。
俺はこういうのを絶対許さない性質でね(のちのち問題がおきるのわかってるから)
797デフォルトの名無しさん:2005/05/08(日) 22:45:47
おまい、レイトバイディング(virtual メンバ関数)も使ってねえの?
別にそれでプログラム組めるけどさ
798デフォルトの名無しさん:2005/05/08(日) 22:48:57
>>797
はじめは使ってたんだけど。
バグが出たとき結構これで苦しんでね。
今は多分使ってない。
よく考えたら必要無いことに気づいた。
使っても大して楽にもならんし。
問題でると地獄だし。
799デフォルトの名無しさん:2005/05/08(日) 22:49:11
>>796
型の制限こそテンプレートの最大のメリットだと思うのだが。
800デフォルトの名無しさん:2005/05/08(日) 22:51:18
ろくに知識が無い奴だとわかったので
めでたく解散
801788:2005/05/08(日) 22:51:38
>>791
これって何?それがどう誤魔化しに見えるの?
何が言いたいのかわからないです。
お願いだからちゃんと議論しようよ。
802デフォルトの名無しさん:2005/05/08(日) 22:52:08
テンプレートの最大の汚点はエラーメセージが意味不明になることだ
マクロでもそうだが。
デバグ困難
803デフォルトの名無しさん:2005/05/08(日) 23:11:05
通常なら関数呼び出しのところで、型不適合エラーがでるところを
テンプレートを使うと、しばしばテンプレート関数の中や、
クラステンプレートのメソッドの中でコンパイルエラーが出てしまうのもこまりものだ
しかも、やたらに下位の関数の中でコンパイルエラーが出たりする
804デフォルトの名無しさん:2005/05/08(日) 23:12:14
>>796
>中ではちゃっかり派生が呼ばれてるとかいう

?
派生で新たに実装された内容で処理されたら問題が起きる
設計の方が問題じゃないのか?
805デフォルトの名無しさん:2005/05/08(日) 23:27:45
>>796についていえば、継承とかはいらないってことだよな
何でC++なんて使ってるの?
名前空間が使いたいから?
806デフォルトの名無しさん:2005/05/08(日) 23:29:25
STLが使いたいから。
807デフォルトの名無しさん:2005/05/08(日) 23:31:11
inlineが使いたいからとか
808デフォルトの名無しさん:2005/05/08(日) 23:35:08
>>805
お前にとってのC++はそれがすべてかw
809デフォルトの名無しさん:2005/05/08(日) 23:38:40
>>808
図星で悔しいの?w
810デフォルトの名無しさん:2005/05/08(日) 23:40:32
>>809
なんの脈絡もないこと言われてもねw
811デフォルトの名無しさん:2005/05/08(日) 23:43:23
const_iteratorが
const_castでiteratorに出来ない件について。
812デフォルトの名無しさん:2005/05/08(日) 23:49:44
むしろiteratorをconst_iteratorにできないことのほうが
813デフォルトの名無しさん:2005/05/09(月) 00:25:12
>>778は馬鹿だから相手にしない方がいいのでは?
814デフォルトの名無しさん:2005/05/09(月) 00:29:13
>>798は荒しだから(ry
815デフォルトの名無しさん:2005/05/09(月) 00:29:19
>>813 理由は?
816デフォルトの名無しさん:2005/05/09(月) 00:30:35
>>815
理由書いてあるじゃんww<馬鹿だから
817デフォルトの名無しさん:2005/05/09(月) 00:34:21
>>816
そういう方向でスレを埋めるのは荒らしじゃないの?
818通りすがり:2005/05/09(月) 00:35:52

今日書いてんの、全部荒しでしょ。

819デフォルトの名無しさん:2005/05/09(月) 00:36:56
通りすがりは免罪符ですか
恐れ入りました
820通りすがり←免罪符:2005/05/09(月) 00:44:39
逆にテンプレートに欲しかった機能あるか?

おれは構文(せめて{ 〜 }ブロック)もテンプレートに入れてほしかった。
boost::lambdaとか書いてて惨め過ぎる。
821デフォルトの名無しさん:2005/05/09(月) 01:24:41
>>820
他スレでやれば?
822デフォルトの名無しさん:2005/05/09(月) 01:32:30
>>820
2パラメータ以上とるテンプレートの特殊化
template< class a, class b > f(...
でbだけを特殊化したいときとか。
実際方法があって自分が知らんだけかもしれんが。

また、
template< uint_t n > uint_t factorial(){ return n * factorial< n-1 >();}
template< > inline uint_t factorial<0>(){ return 1;}

これをこう出来るようにして欲しい。
template< uint_t n > uint_t factorial()
{
if( n > 0 )
return n * factorial< n-1 >();
else
return 1;
}

もしくは
template< uint_t n > inline uint_t factorial<n<=0>(){ return 1;}

出来ない理由がわからん。
823デフォルトの名無しさん:2005/05/09(月) 01:33:26
>>820
こっちだこっち↓

BOOSTを語れゴラァ
http://pc8.2ch.net/test/read.cgi/tech/1091198276/l50
824デフォルトの名無しさん:2005/05/09(月) 02:23:10
なによりもまず、オートポインタなんていう小手際のテクでなく、
ラディカルにガベージコレクションをサポートすべきじゃないか?
GC用コンテナとグローバルなリンクリストが一つあれば何とかなると思うが。
825デフォルトの名無しさん:2005/05/09(月) 02:27:43
そしてC++は、Lisp|Smalltalk|Java|C#にまた一歩近づきましたとさ
826デフォルトの名無しさん:2005/05/09(月) 02:55:26
GCではどのみちスマートポインタ系クラスの持つ「デストラクタによるリソースの確実な開放」は実現できない。
827デフォルトの名無しさん:2005/05/09(月) 02:57:09
メモリリークが0%なんて、小規模システムならともかく、人間業ではないわけだから、
必然的にFire and forget である方向に向かうだろうしそうすべきであると殆どの人が同意すると思われる。
現状ではまったくフェイルセーフじゃないもんね。
828デフォルトの名無しさん:2005/05/09(月) 05:34:34
質問があります。STLのsetで、
std::set<CHoge> hoge;と宣言したときに
hoge.find()の引数にCHoge以外の型の変数を渡すことはできないのでしょうか?

CHoge::operator<()をオーバロードしてみたりしたのですが、
うまくいかなくて…。
829デフォルトの名無しさん:2005/05/09(月) 06:08:00
>>827
Windowsだとメモリリーク検出関数みたいなのあるじゃん。
あれで0%にできるよ。
830デフォルトの名無しさん:2005/05/09(月) 06:52:07
>>827
> メモリリークが0%なんて、小規模システムならともかく、人間業ではないわけだから、
サーバサイドのプログラムを C/C++ で行ってる人間なんて
ザラにいるわけだが……。
831デフォルトの名無しさん:2005/05/09(月) 07:05:53
なんの支援もないCでもリーク0にできるだろ。
リークするのは大抵使い方間違ってるとき。
COMでのリークなんかはその典型。
つまり設計が悪い。
832ヽ(´ー`)ノ ◆.ogCuANUcE :2005/05/09(月) 09:39:41
>>831
設計が悪いんじゃなくて、書いた奴の頭が悪いんだよ(笑)
833デフォルトの名無しさん:2005/05/09(月) 11:07:58
>>822
クラステンプレートなら可能。
関数テンプレートの場合はオーバーロードとの兼ね合いがあるので難しい。

どうしてもやりたいのなら、クラステンプレートの部分特殊化を用い
そのクラスのstaticメンバ関数を使うなどで対応は可能。汚くなるが安全。
834デフォルトの名無しさん:2005/05/09(月) 14:20:24
mapのfindで見つからない場合はかならずend()が帰ってくるのでしょうか?
MSのtoolkit2003のclではうまくいくのですがボーランドのbcc32でコンパイルした場合、見つからない場合でもend()にならないのですが
835デフォルトの名無しさん:2005/05/09(月) 14:35:40
> ボーランドのbcc32でコンパイルした場合、見つからない場合でもend()にならない
んな馬鹿な
836デフォルトの名無しさん:2005/05/09(月) 14:43:47
ことがあるか
837デフォルトの名無しさん:2005/05/09(月) 15:18:09
>>834
ソース上げろ。見てやるから。
838デフォルトの名無しさん:2005/05/09(月) 16:12:17
>>824
 
    ガベージコレクション
   
       ガベージコレクション
839デフォルトの名無しさん:2005/05/09(月) 17:46:51
>>824
 
    素人投稿学園コレクション
   
       SMマニアックコレクション
840デフォルトの名無しさん:2005/05/09(月) 19:12:47
>>828
CHogeから派生した型のインタスタンスなら
841デフォルトの名無しさん:2005/05/09(月) 21:51:16
>>840
なるほど!一つ勉強になりました。
とりあえず今日一日考えて、setではなくmapを使うことにしますた(つД`)
842デフォルトの名無しさん:2005/05/09(月) 22:29:45
一応、派生型も格納できるけども、スライシングされるんじゃ?
ボインタで格納して、使用後に一個つづつdeleteしてくしかないんじゃなかったっけ?
843デフォルトの名無しさん:2005/05/09(月) 22:35:59
格納するんじゃなくてfindの引数にするだけだろ。
844デフォルトの名無しさん:2005/05/09(月) 22:41:58
>>843
>>828を十回読み返したがそのとうりだったぞ! 
ぬるぽ
845デフォルトの名無しさん:2005/05/10(火) 01:17:08
ガッ
846デフォルトの名無しさん:2005/05/10(火) 09:54:20
>844
ゴリッ
847デフォルトの名無しさん:2005/05/10(火) 10:09:26
初心者向けのSTLの本を教えてちょ
848デフォルトの名無しさん:2005/05/10(火) 10:26:31
STL−標準テンプレートライブラリによるC++プログラミング 第2版
http://www.amazon.co.jp/exec/obidos/ASIN/4894714329/

これ読んだから間をおかずに、

Effective STL−STLを効果的に使いこなす50の鉄則
http://www.amazon.co.jp/exec/obidos/ASIN/4894714108/

後者は初心者向けじゃないけど、罠にはまる前に持っておいた方がいい。
前者を読んだときの疑問点にも答えてくれる。

849デフォルトの名無しさん:2005/05/10(火) 18:25:36
>>822
部分特殊化と条件演算子
850822:2005/05/10(火) 21:44:52
>>849
部分特殊化は理解しました。
しかし条件演算子がわからない。
教えて!おねがい!おねがい!おねがい!
851デフォルトの名無しさん:2005/05/10(火) 22:59:20
>>850
スマソ

俺の脳内コンパイルは通ったがBCC32は通らなかった。

template<uint_t N>
class factorial
{
  static const uint_t Val = N ? N * factorial<N - 1>::Val : 0;
};
852デフォルトの名無しさん:2005/05/10(火) 23:09:29

template<bool flag ,class R,class T>
struct hoge
{
T t_;
hoge(T const& t) : t_(t){}
R operator()(T t)       //ファンクタ
{return t_ = t_ + t;}
};

template<class R,class T>
struct hoge<false,R,T>  //<- 条件演算子ってたぶんコレのことと思う。
{
T t_;
hoge(T const& t) : t_(t){}
R operator()(T t)       //ファンクタ
{return t_ += 1 / t;}
};

int main(){
hoge<true,long long,int> z(0);  // true だと足し算(上)
hoge<false,double,double> z2(0); // false だと別のなんか(下)
for(int i=1;i<10000;i++)
z(i), z2( (i%2) ? i : -i);
cout << z.t_ << " " << z2.t_ << endl;
}
853デフォルトの名無しさん:2005/05/10(火) 23:15:35
>>852
条件演算子は3項のa ? b : cの演算子のこと。
854デフォルトの名無しさん:2005/05/11(水) 01:51:40
>>852
意味がわかるまで5分かかったよ。
一般的な話としてだけど、<false, R, T>のような特殊化してまでクラス名を同じにする理由がわからん。
855デフォルトの名無しさん:2005/05/11(水) 05:29:16
Modern C++ Design って本どれくらいで読破しました?俺ダメかも。本の解説読みながらでさえソースコードの読解に小一時間かかる。
デザパタの存在すら知らない人が、何も知らずにこんなソースコード読んで理解できるのか?
偏執的デザパタだらけのフレームワークを使っている会社に間違って就職したら(そんな会社があったら)、
三日で辞めます。
templete< templete< class > class factory< templete< bool F, templete< T<true, class S > class singleton >
class SaitamaFactory >, templete <> class DeallocatorShanghaiStyle > class AssosiativeFactory : public factory, public DeallocatorShanghaiStyle
(↑適当)とかやられたらもう気が狂うし。

856デフォルトの名無しさん:2005/05/11(水) 05:53:11
C++の文法知らない人間が読んで理解できなくても問題ないのなら、デザインパターンを知らない人間が読んで理解できなくてもまったく問題ないと思うんだが。
857デフォルトの名無しさん:2005/05/11(水) 05:59:46
>>855
お前はデザパタに難癖付ける前に、
templateの綴りくらい正確に書けるようにしとけ。
次にtemplateのコード例を正確に書けるようになってから、
Modern C++ Design嫁。

頭悪過ぎ(・∀・)
858デフォルトの名無しさん:2005/05/11(水) 08:27:21
>>855
じゃあadobeに入社はやめとけよ
859デフォルトの名無しさん:2005/05/11(水) 09:17:20
お前必死すぎるぞ。職場で嫌な目にあったのか。
860デフォルトの名無しさん:2005/05/11(水) 11:08:36
>>855
templateの文法/意味に慣れてないだけだろ。
もう少し慣れ親しんでから読めばすんなり理解できるはず。
それから、デザインパターンに付いての予備知識はまったく必要ないと思う。
本文中で解説されてるし。
861デフォルトの名無しさん:2005/05/11(水) 11:47:15
templete (添付リート)
862デフォルトの名無しさん:2005/05/11(水) 12:03:32
実際にtemplate使うときは適切なレベルでのtypedefが必須になるんでそう見づらいということはない。
typdefとデフォルト引数展開されたら
std::map<std::string,std:;string>程度でも鬼みたいな型になるしな。
863デフォルトの名無しさん:2005/05/11(水) 20:21:04
いまさらC++使う意味がわからん
よく最適化されたCコンパイラで十分
864デフォルトの名無しさん:2005/05/11(水) 20:23:23
いまさらC++使う意味がわからん
Cでオブジェクト指向で十分
865デフォルトの名無しさん:2005/05/11(水) 20:32:49
C++って場所とるんだよ
よく最適化されたK&R Cで十分
866デフォルトの名無しさん:2005/05/11(水) 20:39:53
C+プリプロセッサでオブジェクト指向書いた事あるけど、
あれはプリプロセッサで構文糖つくるのが面白いだけ。

プリプロなしでオブジェクト指向書くのは、苦痛以外のなにものでもないし、
まして他の人にメンテ任すのも困難。

つまり、「言語自体がオブジェクト指向をサポートしている事が重要」 (Robert Meyer)なんだよ
867デフォルトの名無しさん:2005/05/11(水) 20:46:03
「C++は十分にオブジェクト指向をサポートしているとは言えない」(俺)んだよ
868デフォルトの名無しさん:2005/05/11(水) 20:50:00
>>867
ほー。もっと具体的に。

「Fortran77で、並列計算機用に、しかもオブジェクト指向もどきで書かされた自分」には、
「C++は幾分マシなマルチパラダイム言語」ですが何か?
869デフォルトの名無しさん:2005/05/11(水) 20:50:47
そもそもテンプレートは関数型から派生した物であり、
これはオブジェクト指向とは相反する概念。
C++は無理矢理テンプレートを組み込まれたせいで、
恐ろしく中途半端な物体になった。なにこれ?
BOOSTのような奇形ライブラリを喜んで使う奴は基地外と言える。
870デフォルトの名無しさん:2005/05/11(水) 20:55:10
逆を言えばboostのようなものが出てきた段階で
C++の設計は失敗だったということだね。
871デフォルトの名無しさん:2005/05/11(水) 21:05:14
テンプレートが気に入らなきゃ使わなければいいだけだろ
872デフォルトの名無しさん:2005/05/11(水) 21:05:49
たしかに、C++はオブジェクト指向言語とはあんま言いたくないな。
別の概念が複雑に入り組みすぎてるし。なんだろうね。
俺が思ってるC++がCに勝ってる利点てautoデストラクタの存在ぐらい。
Cでfinallyが使える処理系ならそっちで組んだ方がむしろ保守しやすい。
873デフォルトの名無しさん:2005/05/11(水) 21:11:48
テンプレートが無ければC++使う気にはなれんよ
874デフォルトの名無しさん:2005/05/11(水) 21:29:03
>>872
C++をオブジェクト指向言語として考えるから駄目なんだよ。
オブジェクト指向プログラミング「も」できるようになっている言語として思っておけばいい。
875デフォルトの名無しさん:2005/05/11(水) 21:36:56
相談室スレで相談以外のことをするなら
せめて許せる程度に面白い話をしろ。
876デフォルトの名無しさん:2005/05/11(水) 22:51:46
>869
相反する概念じゃなくて、直交する概念なんだけど……
『テンプレート使ったらオブジェクト指向が使えなくなりました』つうわけでもないだろうに。

相反するのはむしろテンプレートとマクロのような気がします。
877デフォルトの名無しさん:2005/05/11(水) 23:05:18
俺様がオブジェクト指向言語ひまわり二号をつくってやるよ。
楽しみにしておけ。
878デフォルトの名無しさん:2005/05/11(水) 23:06:28
出来上がるまで黙ってろ
879デフォルトの名無しさん:2005/05/11(水) 23:06:51
日本語コンパイラかよ!
880デフォルトの名無しさん:2005/05/11(水) 23:09:46
実際よー。テンプレートの乱用には困ったもんだよね。
テンプレート厨房になっちまった人は、テンプレートをしばらく禁止にしてみるとか
して組んでみる期間を作ったほうがいいよ。
知らずのうちにテンプレートを使うことばっかりに固執してオブジェクト指向で
考えること辞めちゃってるとかホント致命的だから。

それとは別にオブジェクト指向を覚えられないからテンプレートばっかり凝ってるって人
ほんとにいるから怖いよ。
881デフォルトの名無しさん:2005/05/11(水) 23:14:05
過ぎたるは猶及ばざるが如しだね。

でも、STLっていう道具は上手に使うと便利だよね。
882デフォルトの名無しさん:2005/05/11(水) 23:15:40
STLっていう道具は上手に使わないとorzだよね
883デフォルトの名無しさん:2005/05/11(水) 23:17:38
ってことは馬鹿と鋏は使いよう?ちょっとずれてるかも。
884デフォルトの名無しさん:2005/05/11(水) 23:21:23
>>874
ふつー、そう思ってるだろう。
テンプレートもOOPっぽい部分も、Cの拡張の一部。

>>875
どうせ重複スレの使い回しだ。気にすんな。
885デフォルトの名無しさん:2005/05/11(水) 23:24:46
実際よー。OOの乱用には困ったもんだよね。
OO厨房になっちまった人は、OOをしばらく禁止にしてみるとか
して組んでみる期間を作ったほうがいいよ。
知らずのうちにOOを使うことばっかりに固執してMixInで
考えること辞めちゃってるとかホント致命的だから。

それとは別にtemplateを覚えられないからOOばっかり凝ってるって人
ほんとにいるから怖いよ。
886デフォルトの名無しさん:2005/05/11(水) 23:26:40
逆はなんか違和感あるな
887デフォルトの名無しさん:2005/05/11(水) 23:27:47
テンプレート乱用→キチガイ
OO乱用→普通
888デフォルトの名無しさん:2005/05/11(水) 23:29:22
乱用してんだから、どっちもキチガイだと思うが
889デフォルトの名無しさん:2005/05/11(水) 23:30:16
890デフォルトの名無しさん:2005/05/11(水) 23:30:33
使いたてOO厨によくある傾向だよ
891デフォルトの名無しさん:2005/05/11(水) 23:33:23
そもそもオブジェクト指向でなければいけないというのが思考停止。
892デフォルトの名無しさん:2005/05/11(水) 23:35:05
御意
893デフォルトの名無しさん:2005/05/11(水) 23:36:02
「オブジェクト指向」って、OSでいう「Windows」みたいな登録商標だよな
C++の「オブジェクト指向」部分なんてごく一部でしかないのにいつもそれが強調される
894デフォルトの名無しさん:2005/05/11(水) 23:36:35
ちょっと違うな。
まあ聞き流してやってくれ。
895デフォルトの名無しさん:2005/05/11(水) 23:37:22
何かもう嫌になってきた。ほんと、この板住人頭悪いやつ多すぎ。
896デフォルトの名無しさん:2005/05/11(水) 23:40:36
http://pc8.2ch.net/test/read.cgi/tech/1115386557/

>>895 はこのスレ入る資格がある
>>1-894 は立ち入り禁止
>>896- は未定義だ
897禁止でいいよ!:2005/05/12(木) 00:09:53
>>869
> そもそもテンプレートは関数型から派生した物であり、

はあ?
オペレータオーバーロード、関数多重定義が、
generic functionから来たって事を言いたいわけ?

クラステンプレートは関数型とは何の関係もないよ。
898デフォルトの名無しさん:2005/05/12(木) 00:18:38
>>897
マクロの延長はマクロの延長らしく使えってことだな。
899デフォルトの名無しさん:2005/05/12(木) 00:23:08
>869
もしかして『関数プログラミング』の間違いでしょうか……
900デフォルトの名無しさん:2005/05/12(木) 00:23:58
なんか勘違いしている人がちらほら。
901デフォルトの名無しさん:2005/05/12(木) 00:39:38
関数型言語ってこの板で厨房を釣るぐらいの用途しかないよな
902デフォルトの名無しさん:2005/05/12(木) 00:40:29
標準テンプレートライブラリ 【STL】
C++言語の標準テンプレートライブラリ。C++でプログラミングを行なう際によく使う汎用的な
データ構造やアルゴリズムを、利用しやすい形でまとめたもの。
1992年にHewlett Packerd社のAlexander Stepanov氏、Rensellaer工科大学の
David Musser教授らのグループによって考案され、 1994年にANSI/ISO標準C++ライブラリの一部として採択された。

STLに限っては別にオブジェクト指向に基づいてとかそんな考えはなさそうだな。
あくまでもよく使う汎用的なデータ構造やアルゴリズムを利用しやすい形でまとめたもの。
903デフォルトの名無しさん:2005/05/12(木) 00:41:10
>>901
そりゃもうこの板には厨房しかいませんから!
904デフォルトの名無しさん:2005/05/12(木) 00:43:04
>>893
あいやー。
C++はオブジェクト指向言語だから、オブジェクト指向でプログラムを組むために生まれた言語よ。
みんながC++を叩くのは、オブジェクト指向でなくても組めてしまうってとこよ。
905デフォルトの名無しさん:2005/05/12(木) 00:49:33
C++はハイブリッド言語
906デフォルトの名無しさん:2005/05/12(木) 01:04:23
C++はマルチパラダイム言語だっていってるだろこのスカタン
907デフォルトの名無しさん:2005/05/12(木) 01:17:58
オブジェクト指向言語 → 朝起きてバスにのり電車を乗り継いでいつもどうり目的地へ。

総称プログラミング(テンプレート) → 朝起きて、何だかよくわからない乗り物に乗る。
何だかよくわからないが体がものすごいスピードでバラバラになりつつ目的地で本来の姿へもどる。
次の日の朝は、それとはべつの何だか名状しがたいことがおきてやはり目的地に着く。
908デフォルトの名無しさん:2005/05/12(木) 01:32:10
>>907
全然わからん例えでワラタヨ
909デフォルトの名無しさん:2005/05/12(木) 01:48:14
なるほど、OOだと日本語が間違っていても大丈夫なんですね。
910デフォルトの名無しさん:2005/05/12(木) 12:37:29
>>907
高階の論理を「なんだかわからない」と感じる人が結構いるのは確かだから、
通常のコーディングからそこらへんを排除した Java や C# にも妥当性は
あるんでしょうね。

どうしても必要なときには、十分解っている人がリフレクションやバイトコードの
自動書き換えとかで実装すれば良いわけだし。
911デフォルトの名無しさん:2005/05/12(木) 12:42:10
>バイトコードの自動書き換え

バイトコード編集ね
912デフォルトの名無しさん:2005/05/12(木) 19:33:24
>>910
generics入ってるじゃん!> Java,C#
913デフォルトの名無しさん:2005/05/12(木) 19:58:19
>>912
m9(^Д^)プギャー
914デフォルトの名無しさん:2005/05/12(木) 20:19:09
ねぇ、「ジェネリック(generic)」の訳語が「総称」っておかしくないか?
「総称」は直訳なわけだけれども、「汎用」がより適切だと思うが。
しかし、「内包⇔外延」関係の意味での「総称」
であるならばありだと思うけれども、判りにくいよな。
915デフォルトの名無しさん:2005/05/12(木) 20:37:16
じゃあGeneral→将軍様プログラミング
916デフォルトの名無しさん:2005/05/12(木) 20:40:21
ジェネリックプログラミングがしきりに唱えられ始めたころ、昔から実現されているパラダイムをいかにも新しいものかのように言うのは止めてほしいな、と思った。
917デフォルトの名無しさん:2005/05/12(木) 20:41:26
それが商売ですから
918デフォルトの名無しさん:2005/05/12(木) 20:43:53
>>916のレスを見たころ、資本主義って嫌だな、と思った。
俺の仕事は金とほとんど無縁だからなぁ。
919デフォルトの名無しさん:2005/05/12(木) 20:47:41
>>912
generics は template の持つ機能のホンの1部だし、
generics を「なんだかわからない」と感じる人は少ないと思う。

C++ の template は、通常のコードの1階層上のレベルで(文法はアレだが)
完全な記述能力を持ってるとこに難しさがあるわけで。

(んでもLISPのマクロを「難しい」と感じる人はいないわけだから、
 もしかすると単純に「文法がアレ」ってのが問題なのかも知れない)
920デフォルトの名無しさん:2005/05/12(木) 20:49:34
それは、いつの時代の話?
・Lispの総称関数
・C++のSTLで総称
・Java Genericで代入キャストを自動補完(w
921デフォルトの名無しさん:2005/05/12(木) 20:50:29
>LISPのマクロを「難しい」と感じる人はいない

そーか?
922デフォルトの名無しさん:2005/05/12(木) 20:51:20
BREWがしきりに唱えられ始めたころ、Win3.1でさえ実現されている
糞パラダイムをいかにも新しいものかのように言うのは止めてほしいな、と思った。
923デフォルトの名無しさん:2005/05/12(木) 20:53:16
>>919
〜を感じる人はいない というレスに対して感じる人が一人でもいたら成り立たない、という論理になるわけだから、不利な論理だと思うよ。
924デフォルトの名無しさん:2005/05/12(木) 20:56:15
・ミジンコのようなハードウェアでなんか凄いことできたり、
・古代の言語は備えていたが、過去の進化で消えちゃってた機能が洗練された形で復活した
からウリになるわけで
925デフォルトの名無しさん:2005/05/12(木) 21:04:10
C++のアレが洗練されてるとは口が裂けても言えない
926デフォルトの名無しさん:2005/05/12(木) 21:16:07
型無しマクロの世界と比べて、
長足の進歩と言えるが
927デフォルトの名無しさん:2005/05/12(木) 21:35:57
>>923
そだね。
でも perl 厨にも eval を難しいと感じてる奴はいなそうなわけだから・・・
928デフォルトの名無しさん:2005/05/12(木) 21:40:36
頭悪いのが粘着してるな
929デフォルトの名無しさん:2005/05/12(木) 23:39:24
頭の良い最高学歴の私が来ましたが何か質問は?
930デフォルトの名無しさん:2005/05/12(木) 23:46:55
>>929
俺様に一から全てを教えてください。
931デフォルトの名無しさん:2005/05/13(金) 00:11:02
あなたのまんこ暦をうpしてください
932デフォルトの名無しさん:2005/05/14(土) 11:38:00
質問は?
933デフォルトの名無しさん:2005/05/15(日) 11:38:45
次スレです。

【C++】STL(Standard Template Library)相談室 3
http://pc8.2ch.net/test/read.cgi/tech/1065535118/l50
934デフォルトの名無しさん:2005/05/15(日) 11:53:35
>>933
そのスレはさ、ただ「次スレ」とだけ書いて貼ることに意味があるんだよ。
偽のスレタイを書いたら、それはただの「嘘」だろ?
935デフォルトの名無しさん:2005/05/15(日) 12:10:24
そろそろ危ないんで、念のため言っとくが、このスレの次スレは無いぞ。
936デフォルトの名無しさん:2005/05/15(日) 12:27:49
>>935
どうもこのスレにはあんちが住み着いているようですね
なんと言われようと次スレは作ります。
937デフォルトの名無しさん:2005/05/15(日) 12:40:08


読解力低いなぁ
938デフォルトの名無しさん:2005/05/15(日) 12:43:27
次スレ建てようと思う奴は>>562を否定できる論拠を持っているべきだ。
939デフォルトの名無しさん:2005/05/15(日) 13:24:06
マルチスレッドでSTLを使い場合__STL_PTHREADSをつけないといけないのでしょうか?
STLはスレッドセーフではないのでしょうか?
940デフォルトの名無しさん:2005/05/15(日) 13:47:16
>>939
実装による。各実装のドキュメントを参照せよ。
941デフォルトの名無しさん:2005/05/15(日) 15:49:50
C++相談室に統合しようとするやつは
>テンプレートライブラリ(STL含む)に関する質問は
>専用の別スレにお願いします。
となっていることを解決してから言え
942デフォルトの名無しさん:2005/05/15(日) 16:19:14
じゃC/C++室へ行こう。
943デフォルトの名無しさん:2005/05/15(日) 16:23:13
>>941
何がどう解決していないのかさっぱりなんだが。
944デフォルトの名無しさん:2005/05/15(日) 16:31:18
【C++】template 統合スレ -- Part6
http://pc8.2ch.net/test/read.cgi/tech/1101384692/l50
945デフォルトの名無しさん:2005/05/15(日) 16:36:37
946デフォルトの名無しさん:2005/05/15(日) 16:38:52
947デフォルトの名無しさん:2005/05/15(日) 16:46:07
>945
じゃあ、C++相談室の次スレが立ったら統合な。
STLの次スレには『統合予定』て書いたら?
948デフォルトの名無しさん:2005/05/15(日) 17:02:27
>>947 「STLの次スレ」など要らない。
949デフォルトの名無しさん:2005/05/15(日) 17:27:43
950デフォルトの名無しさん:2005/05/17(火) 06:30:36
vectorで確保した配列を、
生の配列として関数に渡すにはどうすればいいですか?
たとえば vector<unsigned char> bits; を配列として渡したいときに
&bits[0] としたとき、これが正常に動くことは保証されていますか?
951デフォルトの名無しさん:2005/05/17(火) 07:10:17
はい。
vector<bool>以外は。
Effective STL 第16,18項
952デフォルトの名無しさん:2005/05/17(火) 07:53:12
>>950 assert( !bits.empty() );
953950:2005/05/17(火) 13:36:55
出典まで書いていただきありがとうございます。安心して使えます。
vectorのサイズはあらかじめ調べた上で使うので大丈夫です。
954デフォルトの名無しさん:2005/05/18(水) 07:14:25
map< string, int > str_Bufferin

str_Bufferin["やさしさ"] = 50;
char *sss = "やさしさ";

printf( "%d, %d", str_Bufferin["やさしさ"], str_Bufferin[sss] );
これは両方50が表示されますが、
:::::::::::::::::::::

map< char *, int > c_Bufferin;

c_Bufferin["やさしさ"] = 50;
char *sss = "やさしさ";

printf( "%d, %d", c_Bufferin["やさしさ"], c_Bufferin[sss] );
こっちは50と0が返るのは仕様ですか?
955デフォルトの名無しさん:2005/05/18(水) 07:19:41
とりあえず、C言語からやり直すほうが良いかもしれない。
956デフォルトの名無しさん:2005/05/18(水) 08:19:13
ポインタの基礎からやり直せ
957デフォルトの名無しさん:2005/05/18(水) 09:54:55
>>954
mapクラステンプレートの第三引数のdefaultは、less<Key>。
これを!strcmpするcomparatorに代えてはどうか?
958デフォルトの名無しさん:2005/05/18(水) 09:58:17
>>957
根本的な解決にならない悪寒。
959デフォルトの名無しさん:2005/05/18(水) 10:33:33
strcmp < 0だろ。
960デフォルトの名無しさん:2005/05/18(水) 12:31:09
961デフォルトの名無しさん:2005/05/18(水) 12:38:44
>>960
解説きぼん
962デフォルトの名無しさん:2005/05/18(水) 12:57:30
>>958
mapの外部で文字列の寿命を管理できるなら別に良いと思うけど・・・
963デフォルトの名無しさん:2005/05/18(水) 12:58:27
>仕様ですか?
(´-`)…
964デフォルトの名無しさん:2005/05/18(水) 13:20:24
>>962
それができるなら、そもそも>954みたいな質問しない気がする。
965デフォルトの名無しさん:2005/05/18(水) 14:44:20
>>960はSTLをよくわかってないまま
突っ込んじゃったな。
966デフォルトの名無しさん:2005/05/18(水) 17:43:32
>>954 これでわからなかったらもっとSTLの勉強をしろ。基本中の基本。
#include <cstdio>
#include <map>
#include <string>
#include <cstring>

struct Less {
bool operator()(const char* s1, const char* s2) const {
return std::strcmp(s1, s2) < 0;
}
};

int main()
{
std::map<std::string, int> str_Bufferin;

str_Bufferin["やさしさ"] = 50;
char *sss = "やさしさ";

std::printf("%d, %d\n", str_Bufferin["やさしさ"], str_Bufferin[sss]);

std::map<char *, int> c_Bufferin;
c_Bufferin["やさしさ"] = 50;
std::printf("%d, %d\n", c_Bufferin["やさしさ"], c_Bufferin[sss]);

std::map<char *, int, Less()> cl_Bufferin;
cl_Bufferin["やさしさ"] = 50;
std::printf("%d, %d\n", cl_Bufferin["やさしさ"], cl_Bufferin[sss]);
}
967デフォルトの名無しさん:2005/05/18(水) 17:44:48
△std::map<char *, int, Less()> cl_Bufferin;

○std::map<char *, int, Less> cl_Bufferin;

まあどっちでも同じなんだが
968デフォルトの名無しさん:2005/05/18(水) 17:50:34
>>967
同じじゃないぞ。gccは上のLess()ではエラー。
というか、関数オブジェクトではなくてクラス名を書けって。
969954:2005/05/18(水) 17:54:11
>>956さんのレスから
map< char *, なんか >は
結局char型のポインタってことなのか...と推測。
というか、ググッたら出ました、申し訳ないです。
ttp://www.google.com/search?q=map+char%E5%9E%8B&sourceid=opera&num=0&ie=utf-8&oe=utf-8

>>957さん
アドレス比較を文字列比較にするということですか、>>962さんの方法でなら一応動きますが管理の手間が増えますね...。

というわけで、解決です。

970デフォルトの名無しさん:2005/05/18(水) 18:00:39
>>968
スマソ。今"Generic Programming"の§8.1.1を見てみたら、そのように
書いてあった。アルゴリズムの比較基準と、テンプレートパラメータに渡す
比較オブジェクトは違うのね。また、叙述関数(boolを返す関数)の場合
でも()は付けちゃだめなのね。

Borlandの糞コンパイラは上の形式でもエラーなしで通すので勘違いしてた。
971デフォルトの名無しさん:2005/05/18(水) 18:06:07
つか、何処指してんだか信用できない char * を
キーにするのってどうよ?
972デフォルトの名無しさん:2005/05/18(水) 18:09:27
若気の至りです
973デフォルトの名無しさん:2005/05/18(水) 18:23:37
>>968
どうでも良いが、Less()はその文脈では「Lessを返す無引数関数」。
974デフォルトの名無しさん:2005/05/19(木) 21:58:18
Lesson1()
975デフォルトの名無しさん:2005/05/19(木) 23:55:44
ちゅーかさ、俺がほしいのはSTLじゃなくて、
STLにもう1階層かぶせたぐらいのものが欲しいんだよね。

ローカルでちょっと使う場面だとそのまんま使ってるけど、
〜の要素を増やしてとか減らしてとか取得してとか設定してとかやってると
どうしてもラッパー作っちゃうよね?
そうなるとvectorやlistも別にあってもなくてもいいかなぁ・・・とか考えちゃったりしてw
(会社じゃ覚えてる人少ないからむやみに使えないしね)

ローカルでちょっと使う場面だとそのまんま使ってるけど、
何か変換かけるたんびに一度固定長の配列に移してstr***系の関数に
ぶち込まなきゃならないからそこが面倒でたまんないよね?
そうなるとstringも別にあってもなくても(略w
976デフォルトの名無しさん:2005/05/20(金) 00:03:46
vector使わずにC++やってる会社って……
微温湯の温さに合わせていると、上がったときに風邪引くぞ。
977デフォルトの名無しさん:2005/05/20(金) 00:07:23
「ローカルでちょっと使う場面」とか、
「何か変換かけるたんびに」とか、
言っている意味がわからん
978デフォルトの名無しさん:2005/05/20(金) 00:07:41
>微温湯の温さに合わせていると、上がったときに風邪引くぞ。

誰か日本語に翻訳お願いします。
979デフォルトの名無しさん:2005/05/20(金) 00:09:11
>>978
身近の馬鹿に合わせて自分のレベルを落とすな、ってコトでしょ。
980デフォルトの名無しさん:2005/05/20(金) 00:15:43
>>977
その辺りは想像力で補間してやらないと、行数が異常に増えてしまって2chでの会話は厳しい
981デフォルトの名無しさん:2005/05/20(金) 00:16:37
そんなの余計なお世話じゃないの?
982デフォルトの名無しさん:2005/05/20(金) 00:17:16
>>976
むしろ使ってない会社の方が多い希ガス
983デフォルトの名無しさん:2005/05/20(金) 00:27:29
>>980
まずは書く側がまともな短文書くのが先だな。この場合元の文が壊れすぎだ。
984デフォルトの名無しさん:2005/05/20(金) 00:31:11
>>983
俺がわかったからいいよ。
985デフォルトの名無しさん:2005/05/20(金) 00:54:42
986デフォルトの名無しさん:2005/05/20(金) 01:19:14
&vec[0] とか c_str() とか使えばいいのにな。
ただ巨大なstring作って write(fd,s.c_str(),s.size());とかcout << s ;
とかしてやったら内容ちょろっと壊れてるのな。ヒギィ
987デフォルトの名無しさん:2005/05/20(金) 02:04:09
STLをフルに使ったプログラムで
うまくいった例ってあるの?
988デフォルトの名無しさん:2005/05/20(金) 02:05:58
ほどほどに使うor足元を固める
くらいの使い方でいいんだよね?
989デフォルトの名無しさん:2005/05/20(金) 02:08:35
>>987
つ[EmEditor]
990デフォルトの名無しさん:2005/05/20(金) 02:30:39
エディタとしては成功してないな
991デフォルトの名無しさん:2005/05/20(金) 07:28:53
>>986
例えば、
stringで保持している文字列の中の特定の文字列を別の文字列に置換する
って一度固定長の配列に移さなくても処理できるの?
c_str使っても文字列に変換かけるときって、固定長の配列にいちいち移さなくちゃできないでしょ?
992デフォルトの名無しさん:2005/05/20(金) 07:35:09
>>991
それは std::string の実装方法によるだろ。c_str()は const char* なので、
多くの実装が std::string の内部をそのまま返している(つまり、最後には
初めから '\0' が入れられている)ようだが。STLportなどのソースを読んで
みると勉強になるよ。
993デフォルトの名無しさん:2005/05/20(金) 08:12:18
>>991
char *で処理しないといけないわけでもあるのか?
994デフォルトの名無しさん:2005/05/20(金) 08:58:21
>>991
find_xxx_of()
replace()
995デフォルトの名無しさん:2005/05/20(金) 10:17:10
996デフォルトの名無しさん:2005/05/20(金) 10:20:15
>>984
発言者のオナニーじゃ意味がない
997デフォルトの名無しさん:2005/05/20(金) 11:45:50
998デフォルトの名無しさん:2005/05/20(金) 11:46:19
999デフォルトの名無しさん:2005/05/20(金) 11:46:55
1000デフォルトの名無しさん:2005/05/20(金) 11:47:30
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。