【C++】STL(Standard Template Library)相談室 2
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNG【C++】STL(Standard Template Library)相談室
http://pc5.2ch.net/test/read.cgi/tech/1095583235/
関連スレなどは>>2以降で
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNGSTLならもっとスマートに書けるのに・・・
0004デフォルトの名無しさん
NGNGSTLなんてつかうより、もっと素直な関数型言語をつかえばいいのに。。
0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNG0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNG【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
0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNGなる。
100ステップだったらTステップに
1000ステップなら10ステップだ。
10000ステップなら100ステップだ。
0012デフォルトの名無しさん
NGNG実際に実行されない部分が多いと思うんだけど。
0013デフォルトの名無しさん
NGNGSTLのソースで実行されない部分が多いってことを心配してるの?
使う部分しかコンパイルされないから安心するよ
0014デフォルトの名無しさん
NGNGtemplateは呼び出されたときに初めてインスタンスされる。
これを利用して、実装できないメソッドとかの中身をコンパイルエラーがでるようにして、
コンパイル時にチェックするテクニックもある。
たまにずいぶん前に書いたコードがコンパイルすらできないということが発生したりもするw
0016デフォルトの名無しさん
NGNG【C++】STL(Standard Template Library)相談室
http://pc5.2ch.net/test/read.cgi/tech/1095583235/l50
0017デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNG0019デフォルトの名無しさん
NGNG氏ねよ(プゲラ
0020デフォルトの名無しさん
NGNGファイルが巨大になったとき、std::fstreamだと激遅なんて事態にならないですよね?
それともc言語のfopenのんが良いのかな。
使ってるコンパイラはBCBでつ。
0021デフォルトの名無しさん
NGNGウンコー
0022デフォルトの名無しさん
NGNG何でここで聞くかな。
追記だけなら追加モードで開けばいいから追加するステップが複雑でなければ何を使っても大差ない。
0023デフォルトの名無しさん
NGNG0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNG発想がヤヴァイです
キチガイみたいなことすんなよ
>>24
環境かけヴォケ
VCなら大ジョブ
mingwならおけ
cygwinはたぶんヤヴァイ
他はシラネ
0026デフォルトの名無しさん
NGNG0027デフォルトの名無しさん
NGNG0028デフォルトの名無しさん
NGNG>>26
「STL iostream」はセットだよ。ググてみて。
0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNG仕切りたがりの古参気取りのキチガイよ
おとなしく冬眠してそのまま永眠しとけ
0031デフォルトの名無しさん
NGNGBCBはしらねーや
ごめんなこんなおれで
0032デフォルトの名無しさん
NGNG0033デフォルトの名無しさん
NGNG相変わらず 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
0034デフォルトの名無しさん
NGNGシねや禿
0035デフォルトの名無しさん
NGNG>>9と重複
0036デフォルトの名無しさん
NGNGこんなスレが誤って立たぬよう
是非とも(STL含む)ってのを加えて欲しいものだ
0037デフォルトの名無しさん
NGNG0038デフォルトの名無しさん
NGNG0039デフォルトの名無しさん
NGNGいいえ。
0040デフォルトの名無しさん
05/01/17 01:31:570041デフォルトの名無しさん
05/01/20 00:40:27streamがでかいのだ。
0042デフォルトの名無しさん
05/01/24 03:17:580043デフォルトの名無しさん
05/01/24 03:55:100044デフォルトの名無しさん
05/01/24 12:31:36愛想のないページしか表示されないんですけど・・・
0045デフォルトの名無しさん
05/01/24 12:55:04お前は今、全世界数百万人のGoogleユーザーを敵に回した
0046デフォルトの名無しさん
05/01/24 13:27:510047デフォルトの名無しさん
05/01/24 17:43:140048デフォルトの名無しさん
05/01/24 21:02:03六十数億のうちの数百万なんて微々たるものなんですけど・・・
0049デフォルトの名無しさん
05/01/24 21:04:20そのうち、人間として認められるのは数%だ。
0050デフォルトの名無しさん
05/01/24 22:49:53↓
0051デフォルトの名無しさん
05/01/25 00:48:400052デフォルトの名無しさん
05/01/28 00:11:020053デフォルトの名無しさん
05/02/21 16:22:490054デフォルトの名無しさん
05/02/21 16:46:47http://www.google.com/search?hl=ja&q=string+c%2B%2B
0055デフォルトの名無しさん
05/02/21 17:49:57ありがとう
0057デフォルトの名無しさん
05/02/21 21:59:47vec.push_back(100);
vec.push_back(101);
たとえば上みたいなかんじで
今現在vectorに入っている要素の数と値をデバッガーでしらべるにはどうすれば良いですか?
Eclipse CDT拡張, Cygwinのg++を使ってます。
方法はない?
0058デフォルトの名無しさん
05/02/21 22:26:34プログラムで使われていれば
vec.size() とか vec.front() を評価することができるはずですけどね。
肝心のプログラムで使われてない場合は
(テンプレートのコード生成をg++の自動処理に任せていると)
メソッドのコードは当然バイナリに入らないから使えませんが。
テンプレートのコードを使う使わないに関わらず全部含めるような
コンパイルオプションがgccにあるかどうか調べてみては。
0059デフォルトの名無しさん
05/02/21 22:32:01_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を使ってしまうと
入れたら最後まったく中身がわからんというのが何とも困ってます。
0060デフォルトの名無しさん
05/02/22 00:15:34自分で作れば見れるようなやつが _M_start を見れないとは思わない。
0061デフォルトの名無しさん
05/02/22 09:26:030062デフォルトの名無しさん
05/02/22 12:08:21gdbっていうのは副作用の無いメソッドもウォッチできないのか?
できるなら普通に見ればいいだけだと思うが。
0063デフォルトの名無しさん
05/02/22 12:27:53>>33
0064デフォルトの名無しさん
05/02/22 12:45:180065デフォルトの名無しさん
05/02/22 12:47:49delete する必要があるかどうか。
0066デフォルトの名無しさん
05/02/22 14:03:14自動拡張してくれたり、独自のメモリアロケータ使えたり、
基本的なメソッドを提供してくれる
0067デフォルトの名無しさん
05/02/22 21:46:310068デフォルトの名無しさん
05/02/23 09:30:070069デフォルトの名無しさん
05/02/23 10:13:250070デフォルトの名無しさん
05/02/23 13:57:34VC7だと飛びましたが、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++;
}
}
0071デフォルトの名無しさん
05/02/23 14:33:37if (i==1) test_erase(it++); else ++it;
なら大丈夫じゃないかな。
0072デフォルトの名無しさん
05/02/23 17:03:30実はこれだけで済む。
remove禁止としてもerase()は次の要素を指すイタレータを返すからこうしたらどうだ。
if (i == 1) {
it = test_list.erase(it);
} else {
it++;
}
0073デフォルトの名無しさん
05/02/23 19:34:560074デフォルトの名無しさん
05/02/23 20:48:05イタレータの指す要素
0075デフォルトの名無しさん
05/02/24 07:29:10「for を含む関数はインライン展開できない」
が山ほど出るのだがどうにかならないものか?
warningは基本的にOFFにしたくないのだが
0076デフォルトの名無しさん
05/02/24 10:06:48どうにもならないというかなんというか……、どうなって欲しいんだ?
0077デフォルトの名無しさん
05/02/24 11:13:30#pragma warning(disable:1234)
#include <boost/source_of_warnings.hpp>
#pragma warning(pop)
恐らくこんな感じで局所的に特定のwarningを殺すpragmaが
コンパイラについていると思うのでそれで殺すとか.
これを毎回やるのが嫌ならこれを一つのヘッダーにしてしまって
そちらをインクルードするようにするとか.
007875
05/02/24 11:55:00ちなみに今使っているのはBorland C++です
0079デフォルトの名無しさん
05/02/24 12:22:09警告なんだから、理解した上で無視するべきだと思うよ。理解した上でね……
0080デフォルトの名無しさん
05/02/26 01:40:040081デフォルトの名無しさん
05/02/26 07:37:090082デフォルトの名無しさん
05/02/26 07:50:38#include <string>
#include <strstream>
double d;
std::string str = (std::ostringstream() << d).str();
0083デフォルトの名無しさん
05/02/26 08:13:49あきらめます。
0084デフォルトの名無しさん
05/02/26 08:20:060085デフォルトの名無しさん
05/02/26 08:21:01あきらめるの早(w
0086デフォルトの名無しさん
05/02/26 19:59:44そんなの常識
0087デフォルトの名無しさん
05/03/03 19:52:24http://www.tietew.jp/cppll/archive/10694
double d = 250.25;
string x = strex::_f( d );
と使えるらしい。
0088デフォルトの名無しさん
05/03/04 20:19:480089デフォルトの名無しさん
05/03/04 21:46:29共通点を探す方が難しいくらい、全然違います。
0090デフォルトの名無しさん
05/03/04 22:45:00vectorは動的配列、listは線形リスト。
0091デフォルトの名無しさん
05/03/04 23:33:030092デフォルトの名無しさん
05/03/05 02:58:100093デフォルトの名無しさん
05/03/05 03:07:480094デフォルトの名無しさん
05/03/05 03:10:43先頭挿入が沢山ありえるならdeque
ないならvector
0095デフォルトの名無しさん
05/03/05 03:25:04なる方法ってありませんか?
struct A{ int x; int y; } data; などとして、
data.←ここまで押すと[ x 、y ] とかメンバが表示されますよね
vector< A > data; として、何個か入れたとして、
data[0]. まで押しても何もでないんです
0096デフォルトの名無しさん
05/03/05 07:47:200097デフォルトの名無しさん
05/03/05 08:30:536.0を使わないでください
0098デフォルトの名無しさん
05/03/05 08:34:472個目からは無理
正直stdのコンテナクラスは使えないと思う
0099デフォルトの名無しさん
05/03/05 08:40:29エェー
0100デフォルトの名無しさん
05/03/05 09:00:17使えないんじゃなくて、使いこなせないんだろ。
0101デフォルトの名無しさん
05/03/05 10:17:110102デフォルトの名無しさん
05/03/05 11:51:45それはインテリセンスじゃなくてデバッガの話じゃねえのか
0103デフォルトの名無しさん
05/03/05 14:21:33VC++ がどーのこーのぬかす阿呆まで出てきたじゃないか。
0104デフォルトの名無しさん
05/03/05 18:12:440105デフォルトの名無しさん
05/03/05 18:39:39もう一つのC++のスレは、STL以外だろ?
0106デフォルトの名無しさん
05/03/05 18:41:300107デフォルトの名無しさん
05/03/05 19:01:59ひとりごとは掲示板じゃなくてチラシの裏へ
0108デフォルトの名無しさん
05/03/05 23:30:28× 聞く
○ 訊く
0109デフォルトの名無しさん
05/03/06 03:59:23double x, y;
};
のようなクラスがあったとして、
insert(make_pair<Coordinate, double>(hoge, mage)) みたいな感じでは
map, multimap のキーとしての挿入ができませんでした。
これは挿入時、map内で比較がなされていて、それが足りないのだろうと思い
Coordinate へ operator <, >, <=, >=, =, ==, != などを
追加してみたのですがやっぱり通らず
そういうもんなんですか?
何か対応策、常套手段などありましたらご教授ください。
@WinXP, VC7.1
0110デフォルトの名無しさん
05/03/06 06:19:54通るはず。どっか別のところで変な事してるんでしょ。
なお、make_pairはわざわざ型を指定する必要はない。
0111デフォルトの名無しさん
05/03/06 06:36:44#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));
}
0112デフォルトの名無しさん
05/03/06 06:38:47std::cout << mapc.begin()->second << std::endl;
0113デフォルトの名無しさん
05/03/06 10:04:18含んでます。っていうかウザイ死ね。
0114デフォルトの名無しさん
05/03/06 13:13:33粘着 ウザー
0115デフォルトの名無しさん
05/03/06 14:05:45うるせーばか
0116デフォルトの名無しさん
05/03/06 15:55:120117デフォルトの名無しさん
05/03/06 15:57:33VC6
0118デフォルトの名無しさん
05/03/06 16:39:47さげろ
0119デフォルトの名無しさん
05/03/06 16:45:450120デフォルトの名無しさん
05/03/06 17:26:070121デフォルトの名無しさん
05/03/06 17:42:05STLを更新してどうすんだ
0122デフォルトの名無しさん
05/03/06 18:17:07テンプレートがまともに動かないのは別問題。
0123デフォルトの名無しさん
05/03/06 19:05:340124デフォルトの名無しさん
05/03/06 19:05:580125デフォルトの名無しさん
05/03/06 19:06:230126デフォルトの名無しさん
05/03/06 19:06:580127デフォルトの名無しさん
05/03/06 20:25:480129デフォルトの名無しさん
05/03/06 23:54:52おまえ、いい奴だな。
0130デフォルトの名無しさん
05/03/07 09:33:550131デフォルトの名無しさん
05/03/07 10:54:150132デフォルトの名無しさん
05/03/07 11:47:480133デフォルトの名無しさん
05/03/07 19:28:220134デフォルトの名無しさん
05/03/07 23:56:560135デフォルトの名無しさん
05/03/08 00:03:320136デフォルトの名無しさん
05/03/08 20:02:36このとき読み込み位置を移動させたくありません。
char buf[len];
ifs.read(buf, len);
ifs.seekg(-len, ios::cur);
のようにするしかないのでしょうか?
copyとか使って実現することはできませんか?
0137デフォルトの名無しさん
05/03/08 20:27:39それ以外になし。
0138デフォルトの名無しさん
05/03/08 23:39:160139デフォルトの名無しさん
05/03/09 10:26:58まんこ
0140デフォルトの名無しさん
05/03/09 14:21:390141デフォルトの名無しさん
05/03/09 16:42:37理由を聞かせてくれ
0142デフォルトの名無しさん
05/03/09 17:39:07一番手軽な方法って何でしょうか?ただし、O(N)程度で。
よろしくおねがいします。
0143デフォルトの名無しさん
05/03/09 17:41:250144デフォルトの名無しさん
05/03/09 18:28:54std::string s, ss;
// ...
ss.reserve(s.length() * m);
for (int i = 0; i < m; ++i) ss.append(s);
0145デフォルトの名無しさん
05/03/09 20:45:49std::string s, ss;
// ...
ss.reserve(s.length() * m);
for (int i = 0; i < m; ++i) ss.append(s);
0146デフォルトの名無しさん
05/03/09 20:46:21std::string s, ss;
// ...
ss.reserve(s.length() * m);
for (int i = 0; i < m; ++i) ss.append(s);
0147デフォルトの名無しさん
05/03/09 20:47:23>>116
さげろ
119 名前:デフォルトの名無しさん[] 投稿日:05/03/06(日) 16:45:45
さげるな
0148デフォルトの名無しさん
05/03/09 20:47:53>>116
さげろ
119 名前:デフォルトの名無しさん[] 投稿日:05/03/06(日) 16:45:45
さげるな
0149デフォルトの名無しさん
05/03/09 21:03:26パンツさげろ
119 名前:デフォルトの名無しさん[] 投稿日:05/03/06(日) 16:45:45
にげるな
0150"”
05/03/09 21:09:55>>116
さあげろしろ
119 名前:デフォルトの名無しさん[] 投稿日:05/03/06(日) 16:45:45
さげるな
0151">>>1000
05/03/09 21:10:53>>116
さげろ
119 名前:デフォルトの名無しさん[] 投稿日:05/03/06(日) 16:45:45
さげるな
0152デフォルトの名無しさん
05/03/09 21:14:24(≦三) /
┃. (#゚Д゚)< 神であるひろゆきの名のもとにおいて
┃(≦ ▼ ) | >>1に対し、ここで聖戦を宣言する。
/. │━‖│ すべての2ちゃんねらーに告ぐ。
/. │ ‖│ >>1に速やかなる死を!!
└-┘⊃⊃ \__________________
(≦三) (≦三) (≦三) (≦三)
┃. (#゚Д゚).┃ (#゚Д゚) ┃ (#゚Д゚)┃ (#゚Д゚)
┃(≦ ▼ )┃(≦ ▼ )┃(≦▼ )┃(≦ ▼ )
(≦三) (≦三) (≦三) (≦三)
┃. (#゚Д゚).┃ (#゚Д゚).┃ (#゚Д゚)┃ (#゚Д゚)
┃(≦ ▼ )┃(≦ ▼ )┃(≦▼ )┃(≦ ▼ )
0153デフォルトの名無しさん
05/03/09 21:15:22(≦三) /
┃. (#゚Д゚)< 神であるひろぽんの名のもとにおいて
┃(≦ ▼ ) | >>1に対し、ここで聖戦を宣言する。
/. │━‖│ すべての2ちゃんねらーに告ぐ。
/. │ ‖│ >>1に速やかなる死を!!
└-┘⊃⊃ \__________________
(≦三) (≦三) (≦三) (≦三)
┃. (#゚Д゚).┃ (#゚Д゚) ┃ (#゚Д゚)┃ (#゚Д゚)
┃(≦ ▼ )┃(≦ ▼ )┃(≦▼ )┃(≦ ▼ )
(≦三) (≦三) (≦三) (≦三)
┃. (#゚Д゚).┃ (#゚Д゚).┃ (#゚Д゚)┃ (#゚Д゚)
┃(≦ ▼ )┃(≦ ▼ )┃(≦▼ )┃(≦ ▼ )
0154デフォルトの名無しさん
05/03/09 21:18:53(≦三) /
┃. (#゚Д゚)< ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・。
┃(≦ ▼ ) | ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・。
/. │━‖│ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・。
/. │ ‖│ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・。
└-┘⊃⊃ \__________________
(≦三) (≦三) (≦三) (≦三)
┃. (#゚Д゚).┃ (#゚Д゚) ┃ (#゚Д゚)┃ (#゚Д゚)
┃(≦ ▼ )┃(≦ ▼ )┃(≦▼ )┃(≦ ▼ )
(≦三) (≦三) (≦三) (≦三)
┃. (#゚Д゚).┃ (#゚Д゚).┃ (#゚Д゚)┃ (#゚Д゚)
┃(≦ ▼ )┃(≦ ▼ )┃(≦▼ )┃(≦ ▼ )
0155デフォルトの名無しさん
05/03/09 21:19:31(≦三) /
┃. (#゚Д゚)< ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・。
┃(≦ ▼ ) | ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・。
/. │━‖│ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・。
/. │ ‖│ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・。
└-┘⊃⊃ \__________________
(≦三) (≦三) (≦三) (≦三)
┃. (#゚Д゚).┃ (#゚Д゚) ┃ (#゚Д゚)┃ (#゚Д゚)
┃(≦ ▼ )┃(≦ ▼ )┃(≦▼ )┃(≦ ▼ )
(≦三) (≦三) (≦三) (≦三)
┃. (#゚Д゚).┃ (#゚Д゚).┃ (#゚Д゚)┃ (#゚Д゚)
┃(≦ ▼ )┃(≦ ▼ )┃(≦▼ )┃(≦ ▼ )
0156デフォルトの名無しさん
05/03/09 21:37:130157デフォルトの名無しさん
05/03/09 21:58:40(≦三) /
┃. (#゚Д゚)< 2chの神ひろぽんの名のもとに>>156を
┃(≦ ▼ ) | 四系にする。
/. │━‖│
/. │ ‖│
└-┘⊃⊃ \__________________
(≦三) (≦三) (≦三) (≦三)
┃. (#゚Д゚).┃ (#゚Д゚) ┃ (#゚Д゚)┃ (#゚Д゚)
┃(≦ ▼ )┃(≦ ▼ )┃(≦▼ )┃(≦ ▼ )
(≦三) (≦三) (≦三) (≦三)
┃. (#゚Д゚).┃ (#゚Д゚).┃ (#゚Д゚)┃ (#゚Д゚)
┃(≦ ▼ )┃(≦ ▼ )┃(≦▼ )┃(≦ ▼ )
0158デフォルトの名無しさん
05/03/09 22:01:190159デフォルトの名無しさん
05/03/09 22:04:340160デフォルトの名無しさん
05/03/09 22:29:140161デフォルトの名無しさん
05/03/10 12:47:530162デフォルトの名無しさん
05/03/10 12:48:240163デフォルトの名無しさん
05/03/10 13:41:090164デフォルトの名無しさん
05/03/10 13:48:33こちら、http://pc5.2ch.net/test/read.cgi/tech/1106527792/
もしくはチラシの裏にでも、どうぞ。
0165デフォルトの名無しさん
05/03/10 13:50:060166デフォルトの名無しさん
05/03/10 13:51:060167デフォルトの名無しさん
05/03/10 13:53:50STLに関してはここでいいのか?
0168デフォルトの名無しさん
05/03/10 13:56:320169デフォルトの名無しさん
05/03/10 13:58:14こちら、http://pc5.2ch.net/test/read.cgi/tech/1106527792/
もしくはチラシの裏にでも、どうぞ。
0170デフォルトの名無しさん
05/03/10 14:39:510171デフォルトの名無しさん
05/03/10 14:48:200172デフォルトの名無しさん
05/03/10 14:51:33SGIはSTLPortと一緒だから除外ね。newlibもウンコだから除外。
0173デフォルトの名無しさん
05/03/10 14:53:270174デフォルトの名無しさん
05/03/10 14:54:060175デフォルトの名無しさん
05/03/10 15:16:200176デフォルトの名無しさん
05/03/10 15:23:560177デフォルトの名無しさん
05/03/10 17:19:58ttp://www.dinkumware.com/
0178デフォルトの名無しさん
05/03/10 17:59:090179デフォルトの名無しさん
05/03/10 18:01:051.愛と勇気のため
2.地位と名誉のため
3.喜びと快楽のため
さあ選べ。
0180デフォルトの名無しさん
05/03/10 20:17:120181デフォルトの名無しさん
05/03/10 20:17:38まんこのために決まってるだろ
0182デフォルトの名無しさん
05/03/10 21:16:040183デフォルトの名無しさん
05/03/10 23:10:530184デフォルトの名無しさん
05/03/11 00:08:26頭が悪いってよく人に言われるでしょ。
0185デフォルトの名無しさん
05/03/11 00:09:48まんこ
0186デフォルトの名無しさん
05/03/11 00:10:290187デフォルトの名無しさん
05/03/11 00:10:510188デフォルトの名無しさん
05/03/11 00:13:580189デフォルトの名無しさん
05/03/11 00:40:330190デフォルトの名無しさん
05/03/11 00:44:190191デフォルトの名無しさん
05/03/11 09:44:080192デフォルトの名無しさん
05/03/11 19:03:460193デフォルトの名無しさん
05/03/11 19:17:56STLを使うことで、プログラムコードが100分の1になるそうです。
0194デフォルトの名無しさん
05/03/11 19:19:050195デフォルトの名無しさん
05/03/11 19:46:220196デフォルトの名無しさん
05/03/11 19:50:420197デフォルトの名無しさん
05/03/11 19:51:240198デフォルトの名無しさん
05/03/11 19:51:440199デフォルトの名無しさん
05/03/11 19:52:040200デフォルトの名無しさん
05/03/11 20:20:01マジレスすると、以前C++&テンプレート関連のスレが
乱立していているので整理しようという話があって、
STLはC++スレで、それ以外の非標準テンプレートは
テンプレート総合スレで扱う、ってことになったのに、
それを不満に思う奴が勝手にこのスレ立てたから
反発を受けている。
0201デフォルトの名無しさん
05/03/11 20:56:140202デフォルトの名無しさん
05/03/11 20:58:570203デフォルトの名無しさん
05/03/11 20:59:340204デフォルトの名無しさん
05/03/11 21:01:400205デフォルトの名無しさん
05/03/11 21:02:110206デフォルトの名無しさん
05/03/11 21:02:560207デフォルトの名無しさん
05/03/11 21:03:200208デフォルトの名無しさん
05/03/11 21:44:300209デフォルトの名無しさん
05/03/11 21:45:25いやだ。
0210デフォルトの名無しさん
05/03/11 22:02:24お釣りかえしといた
0211デフォルトの名無しさん
05/03/11 22:04:570212デフォルトの名無しさん
05/03/11 22:15:490213デフォルトの名無しさん
05/03/11 22:16:340214デフォルトの名無しさん
05/03/11 22:16:590215デフォルトの名無しさん
05/03/12 00:47:190216デフォルトの名無しさん
05/03/12 04:33:59みんな仲良くやろうよ
0217デフォルトの名無しさん
05/03/12 10:31:55まんこ
0218デフォルトの名無しさん
05/03/12 10:34:290219デフォルトの名無しさん
05/03/12 11:20:240220デフォルトの名無しさん
05/03/12 11:29:02終わり
0221デフォルトの名無しさん
05/03/12 11:37:180222デフォルトの名無しさん
05/03/12 18:36:100223デフォルトの名無しさん
05/03/12 19:57:340224デフォルトの名無しさん
05/03/12 21:25:21だから何度も重複だ、と言っている。
…まあ stream I/O 訊いて来るアホの子もいてるわけだが。
0225(゚Д゚)
05/03/12 21:49:070226デフォルトの名無しさん
05/03/12 22:18:240227デフォルトの名無しさん
05/03/12 22:34:100228デフォルトの名無しさん
05/03/12 22:46:210229デフォルトの名無しさん
05/03/12 22:51:500230デフォルトの名無しさん
05/03/12 23:54:520231デフォルトの名無しさん
05/03/12 23:57:340232デフォルトの名無しさん
05/03/13 00:00:18毛の生えてない、われめぇええええええええええええええええええ
0233デフォルトの名無しさん
05/03/13 00:00:470234デフォルトの名無しさん
05/03/13 00:10:39ぴんくの、おまたぁあああああああああああああああああああ
0235デフォルトの名無しさん
05/03/13 00:30:480236デフォルトの名無しさん
05/03/13 04:33:17漏れもSTL専用スレとは区別してる口なのでここで。
multimap::equal_range で得られる同じキーを持つ両端のiteratorは
間の(もしくはequal_range::second)要素を削除した場合の
equal_range::secondはキチンと同一キーをもつ要素の終端を指している、
という保障はあるのでしょうか?
あと、こういうのはどこで調べるものなんでしょうか?
0237デフォルトの名無しさん
05/03/13 05:36:480238デフォルトの名無しさん
05/03/13 05:57:25multimap は 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 とかがお勧め。
0239デフォルトの名無しさん
05/03/13 06:27:43馬鹿みたいにたけーよな。
0240デフォルトの名無しさん
05/03/13 07:20:05確かに変ですね^^;
>>238
丁寧にありがとうございます
今後、極力それらドキュメントに目を通すよう努力します(`・ω・´)
0241デフォルトの名無しさん
05/03/13 09:24:01死ね
0242デフォルトの名無しさん
05/03/13 11:36:270243デフォルトの名無しさん
05/03/13 11:59:37ttp://webstore.ansi.org/ansidocstore/product.asp?sku=INCITS%2FISO%2FIEC+14882-2003
$18 なら馬鹿みたいに高くはなかろ?
0244デフォルトの名無しさん
05/03/13 12:04:06ttp://webstore.ansi.org/ansidocstore/product.asp?sku=ISO%2FIEC+14882%3A2003
こっちのことじゃね
0245デフォルトの名無しさん
05/03/13 13:16:080246デフォルトの名無しさん
05/03/13 14:13:470247デフォルトの名無しさん
05/03/13 14:35:32ここも忘れるな
0248デフォルトの名無しさん
05/03/13 14:37:39ライセンスかなぁ?
俺は $18 の方しか持ってないけど、これは PDF にライセンシーの名前や
注文番号、それと「Single User Only」の文字が埋め込まれてる。
0249デフォルトの名無しさん
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、 氏ね。」
0250デフォルトの名無しさん
05/03/13 19:56:26値段も高いし、ダウンロード販売と冊子が同じ値段ってどういうことだ。
JIS X 3010:2003 プログラム言語C 14,280円
JIS X 3014:2003 プログラム言語C++ 17,325円
0251デフォルトの名無しさん
05/03/13 21:54:50JIS規格票の値段はページ数で決まるという仕様です。
高いのは諦めましょう(笑)
0252デフォルトの名無しさん
05/03/13 23:09:27アホみたいに余白を詰めてページ数を
減らしているのにはそういう事情があったのか。
0253デフォルトの名無しさん
05/03/14 03:53:34一応、閲覧は無料で可能じゃないか。
0254デフォルトの名無しさん
05/03/14 04:03:510255デフォルトの名無しさん
05/03/14 08:43:29Cは見れるの知ってるけど、C++も見れるの?
0256デフォルトの名無しさん
05/03/14 08:57:12手元に両方とも落ちてきてるよ。
0257デフォルトの名無しさん
05/03/14 10:18:15「ファイルが壊れています。修復できません」ってなる……。
0258デフォルトの名無しさん
05/03/14 11:46:480259デフォルトの名無しさん
05/03/14 15:04:41hoge.end()で得られるイテレータをインクリメントするとhoge.end()が得られたりしますか?
0260デフォルトの名無しさん
05/03/14 15:26:03だめ。
0261デフォルトの名無しさん
05/03/14 15:56:370262デフォルトの名無しさん
05/03/15 06:21:260263デフォルトの名無しさん
05/03/15 22:29:390264デフォルトの名無しさん
05/03/16 07:28:02サンプルコードってどこかにないでしょうか?
0265デフォルトの名無しさん
05/03/16 11:09:080266デフォルトの名無しさん
05/03/16 12:18:14俺のHDDの中にある
0267デフォルトの名無しさん
05/03/16 12:45:15奇遇だな、漏れのUSBメモリの中にもあるよ。
0268デフォルトの名無しさん
05/03/16 13:03:120269デフォルトの名無しさん
05/03/16 13:04:57動詞なのか?
0270デフォルトの名無しさん
05/03/16 14:36:340271デフォルトの名無しさん
05/03/16 23:26:13ttp://yy13.kakiko.com/taisyo/
第1章〜ふんどしクオリティ〜
0272デフォルトの名無しさん
05/03/17 02:56:13そんなのわざわざstl使わなくても簡単にかけるぞ
0273デフォルトの名無しさん
05/03/17 09:00:550274デフォルトの名無しさん
05/03/17 21:02:34struct 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()の実態ってなに?
0275デフォルトの名無しさん
05/03/17 21:14:120276デフォルトの名無しさん
05/03/17 21:17:27T()と書くとT型の一時オブジェクトが作られる。スコープは式が終わるまで。
括弧の中にはコンストラクタへ渡す引数を並べる。何も書かなければ当然デフォルトコンストラクタが呼ばれる。
組み込み型に対しては引数が無ければ0クリアされ,有ればいわゆる関数形式キャストになる。
0277デフォルトの名無しさん
05/03/18 00:38:00pair() : first(),second() {}
これじゃダメなんだろうか?
0278274
05/03/18 04:47:17組み込み型のT()コンストラクタについて詳しい書籍ってご存知ですか?
0279デフォルトの名無しさん
05/03/18 05:20:57こんな感じで使うと値渡しになってしまいますよね?
参照渡しの場合、removeなどとともに自動でdeleteしてくれるSTLってありますか?
0280デフォルトの名無しさん
05/03/18 05:31:550281デフォルトの名無しさん
05/03/18 05:55:24こういう場合にそもそも参照渡しってできるんだっけ?
0282デフォルトの名無しさん
05/03/18 06:08:220283デフォルトの名無しさん
05/03/18 13:12:15MyClassの代わりにboost::shared_ptr<MyClass>でもかちこんどけ。
0284デフォルトの名無しさん
05/03/18 15:35:03組み込み型を空のカッコで初期化した場合,
ゼロを対象の型に変換した値で初期化されます.
>組み込み型のT()コンストラクタについて詳しい書籍
ISO14882といってみるテスト(書籍じゃないですが)
0285デフォルトの名無しさん
05/03/18 22:48:25> 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
0286デフォルトの名無しさん
05/03/18 22:51:01http://www.webstore.jsa.or.jp/webstore/Com/FlowControl.jsp?lang=jp&bunsyoId=JIS+X+3014%3A2003&dantaiCd=JIS&status=1&pageNo=1
和文冊子 17,325円 だそうで。
0287デフォルトの名無しさん
05/03/19 00:56:090288デフォルトの名無しさん
05/03/19 01:58:44売ってるやつはできるの?
0289デフォルトの名無しさん
05/03/19 02:02:39あんたみたいに日本語能力の乏しい人にはどっちみち検索は難しいだろ。
0290デフォルトの名無しさん
05/03/20 00:40:39すこしいじればいんさt
0291デフォルトの名無しさん
05/03/20 16:19:07setのfindなどで取得したiteratorで、要素の変更が自由に行えるけど、
こんな事したら、せっかくのソート済みが滅茶苦茶になると思うのだが。
連想コンテナでは、イテレータでの要素の変更はNGですか?
それともソート順に影響しない変更はOK?
0292デフォルトの名無しさん
05/03/20 16:26:34とりあえず、ソートに関わる要素はいじっちゃダメ。
ソートと関係無い部分は、どうしても変更したけりゃ注意してやれ。
と、そんな感じでは。
0293デフォルトの名無しさん
05/03/20 17:08:46どうも。
やはり、むやみな変更は駄目だね。
Effective STL読んでみる。
0294デフォルトの名無しさん
05/03/20 17:15:09あれ?setのキーはconstじゃないのか?
要素はソートと関係ないような・・・
0295デフォルトの名無しさん
05/03/20 17:21:08mapと混同してないか?
0296デフォルトの名無しさん
05/03/20 17:29:48う、そうだorz
でもそうなるとなおさら、constな希ガス。const_iteratorでなくてiteratorだったら、
コンパイルエラー出るんじゃないの?
0297デフォルトの名無しさん
05/03/20 17:39:38Effective STL持ってないのか?
std::map/std::multimapのキーは確かにconstだが、std::set/std::multisetのキーは
非constなのだ。だからiteratorでコンパイルが通ってしまう。
正しく変更するには、一度削除してからもう一度挿入するしか手がない。
0298デフォルトの名無しさん
05/03/20 18:01:43標準としてはどちらでもいいようですよ。
ttp://www.cuj.com/documents/s=8002/cujcexp1810kreft/
0299デフォルトの名無しさん
05/03/20 19:27:24という事は、std::remove()などの削除系アルゴリズムをstd::setに対して
呼び出せる処理系と呼び出せない処理系が混在しているという事か。
移植性を重視するなら、constと決めつけてかかった方がいいみたいだね。
0300デフォルトの名無しさん
05/03/20 19:36:29STLportはキーを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);
}
0301デフォルトの名無しさん
05/03/20 20:26:34EmpIDSet 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");
}
と、等価であるから。
どうしていきなり一時オブジェクトが出てきたのか理由がわからないです。
教えてください。
0302デフォルトの名無しさん
05/03/20 21:25:160303デフォルトの名無しさん
05/03/20 21:34:00〜その明示的変換の効果は、一時的変数tを宣言し初期化した上で、変換結果としてtを
使うことと同じである。
JIS X3014 5.2.9
実際、
string s = "asdf";
static_cast<string>(s).clear();
で、sは変わらないよ。
俺も初めて知った。
0304デフォルトの名無しさん
05/03/20 22:06:120305301
05/03/20 22:55:57なるほど。
ありがd。
いつかはまるんだろうなぁorz
>>304
yes。
if (i != se.end()) {
const_cast<Employee&>(*i).setTitle("Corporate Deity");
}
というのが正解みたい。
0306デフォルトの名無しさん
05/03/21 00:51:48ttp://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実装)を晒せ。
0307デフォルトの名無しさん
2005/03/21(月) 12:02:58Sunのコンパイラだと、5.0から5.1?になったときに非constあり->constのみに変わったよ。
STLはRawgue?とかいうとこの実装。
あと、cygwin+g++ 3.3.3だと、constのみのようだ。
ただし、_GLIBCPP_RESOLVE_LIB_DEFECTSをdefineすると非constも追加されるみたい。
0308デフォルトの名無しさん
2005/03/21(月) 12:03:240309デフォルトの名無しさん
2005/03/21(月) 12:04:59C#でやたらイテレータとデリゲートがすげーみたいに言われてたけど
C++にもあるじゃん
もしかしてデリゲートと同じ機構を持つものもC++にあるの?
0310デフォルトの名無しさん
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を使い調べます。
申し訳ございませんが、宜しくお願いいたします。
0311ヽ(´ー`)ノ ◆.ogCuANUcE
2005/03/21(月) 13:01:59関数オブジェクトについて調べるといいよ。
オススメ ↓
ttp://www005.upp.so-net.ne.jp/episteme/html/stlprog/_04.html#fun_object
型固有の predicate を作るのはあまり関心しないなぁ。
比較演算子を定義して std::greater 使った方が良いと思われ。
0313デフォルトの名無しさん
2005/03/21(月) 13:12:440314310
2005/03/21(月) 13:15:03http://www005.upp.so-net.ne.jp/episteme/html/stlprog/
これを勉強しマスターすればSTLに関しては完璧になれますか?
0315デフォルトの名無しさん
2005/03/21(月) 13:40:05それ入門書。それ読んでスタート地点。
0317デフォルトの名無しさん
2005/03/21(月) 13:47:17STL覚えたら自作のTLに移行するだけじゃん
0318デフォルトの名無しさん
2005/03/21(月) 13:50:37中級以上を目指すなら複数のSTLの実装を読みつつ実際に自分で実装してみるのがいい。
0319デフォルトの名無しさん
2005/03/21(月) 13:57:42みんな30歳超えたプロの集まりだぞ
がんばって追いつけ!
0320ヽ(´ー`)ノ ◆.ogCuANUcE
2005/03/21(月) 14:12:40>>317-318
コンパイラの差異とか考え出すと面倒になってきて投げる。やってられん。
0321デフォルトの名無しさん
2005/03/21(月) 17:48:12"無ければ作れ"が原則。
0322デフォルトの名無しさん
2005/03/21(月) 18:01:110323デフォルトの名無しさん
2005/03/21(月) 18:26:420324デフォルトの名無しさん
2005/03/21(月) 21:09:23STLを勉強するんだったら、Effective STL最強。
ttp://www.amazon.co.jp/exec/obidos/ASIN/4894714108/
金ないかもしれないけど、良書だからこそ、ケチらずに自分で金出して買うべし。
あとは、必読書スレも見た方がいい。
変な本を買うより、ここで推薦されている本は外れが少ない。
0325デフォルトの名無しさん
2005/03/21(月) 21:53:23>スコット メイヤーズ (著), Scott Meyers (原著), 細谷 昭 (翻訳)
>価格: ¥3,360 (税込)
>3,360
やすっ!(笑)
0326デフォルトの名無しさん
2005/03/23(水) 09:35:06for(Iterator it1 = vector.begin(); it1 != end; ++it1) {
for(Iterator it2 = boost::next(it1); it2 != end; ++it2) {
…
}
}
このように、2重にイテレータを回す場合も、for_eachを入れ子にして使って書いた方がいいのでしょうか?
0327デフォルトの名無しさん
2005/03/23(水) 10:31:19どっちがいいも悪いもない
0328デフォルトの名無しさん
2005/03/23(水) 10:38:00内側はともかく外側のループには使えないと思う。
0329デフォルトの名無しさん
2005/03/23(水) 10:52:49中身読むと、意見変わるよ・・・
せいぜい値段なり
0330デフォルトの名無しさん
2005/03/23(水) 11:45:15> STLを勉強するんだったら、Effective STL最強。
最強っていうより、単なる入門書だろ。底が知れるぜ。
0332デフォルトの名無しさん
2005/03/23(水) 19:40:08binary_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/
がある。
0333デフォルトの名無しさん
2005/03/23(水) 21:28:15読む方がいいと思うぞ。もしくはそういうサイトでもいいけどさ。
STLじゃなくてC++自体の理解もあやふやのようだし。
0334デフォルトの名無しさん
2005/03/24(木) 18:24:14なぜエラーがでるのかがわかりません。
ヒントをご提供し頂けると助かります。
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' : 左側がクラス、構造体、共用体ではありません。
0335デフォルトの名無しさん
2005/03/24(木) 18:36:05using namespace stdを書き忘れてないか?
0336334
2005/03/24(木) 18:37:580337デフォルトの名無しさん
2005/03/24(木) 19:34:030338デフォルトの名無しさん
2005/03/24(木) 23:45:25(1)追加したいキーをfind
(2)findに該当がなければinsert
(3)必要なくなったらerase
を高速で行っていると、
不定期でSTL内のfind(バイナリーサーチ関連)で
AccessViolationが発生します。
この現象を知っている方いないでしょうか。
0339デフォルトの名無しさん
2005/03/24(木) 23:48:200340デフォルトの名無しさん
2005/03/24(木) 23:55:33低速にすれば?
0341デフォルトの名無しさん
2005/03/25(金) 00:12:160343デフォルトの名無しさん
2005/03/25(金) 00:26:44#include <list>
0344デフォルトの名無しさん
2005/03/25(金) 00:40:07解決した場合はその手順を書くのがマナー
0345デフォルトの名無しさん
2005/03/25(金) 00:51:01なんでもいいので教えていただけないですか
0346デフォルトの名無しさん
2005/03/25(金) 00:56:48コード晒せ。
0347デフォルトの名無しさん
2005/03/25(金) 01:00:58情報不足で絞り込めません
1276通りの原因が考えられます
0348デフォルトの名無しさん
2005/03/25(金) 01:06:08じゃあ92通り目の原因は何?
0349デフォルトの名無しさん
2005/03/25(金) 01:40:2192行目にtypoがある
0350デフォルトの名無しさん
2005/03/25(金) 01:47:15じゃあ1273通り目は?
0351デフォルトの名無しさん
2005/03/25(金) 02:07:390352デフォルトの名無しさん
2005/03/25(金) 07:09:070353デフォルトの名無しさん
2005/03/25(金) 08:08:25と適当なこと言ってみる
0354デフォルトの名無しさん
2005/03/25(金) 08:11:32>>338が迷信でプログラミングしてるのが問題。
0355デフォルトの名無しさん
2005/03/25(金) 08:14:45と適当に言ってみた。
0356デフォルトの名無しさん
2005/03/25(金) 08:26:22コレクションの状態を変えるのはナンセンスだよね
とはいえ、insert_iterator系も用意されてるから一概には言えないけど
0357デフォルトの名無しさん
2005/03/25(金) 08:29:26AccessViolationをCPUの速度のせいにする。
明らかに切り口の見つけ方がおかしいが、それを自覚しない|できない人間。
>>353も間違いなく>>338と同じ人種。
例えば二日徹夜すると小人さんが代わりにやってくれると信じて、
あえて徹夜で待機するアフォと同レベル。
0358デフォルトの名無しさん
2005/03/25(金) 08:38:31大量に改行入れてるレスをまじめに受け止めるなって
0359デフォルトの名無しさん
2005/03/25(金) 08:55:010360デフォルトの名無しさん
2005/03/25(金) 18:51:070361デフォルトの名無しさん
2005/03/27(日) 18:35:32using namespace std;
vector<int> a = {2, 20, 3};
こんな感じで vector<int> a を初期化したいのですが、上の文法だとコンパイラーが
error: `a' must be initialized by constructor, not by `{...}'
とエラーを出してきやがります。
本当はどう書いたら良いのでしょうか?
aグローバル変数なのでpush.back()の羅列が出来ません。
だれか助けて。
0362デフォルトの名無しさん
2005/03/27(日) 18:44:080363デフォルトの名無しさん
2005/03/27(日) 19:01:16はい?
普通に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;
}
つーか、グローバル変数にしたい理由が判らん。
0364361
2005/03/27(日) 19:29:02む、む、む、無理なんですか!?
実はSTLってたいしたこと無い?
>>363
このvector<int>自体はプログラム全体から参照(read only)するのでグローバルにしたいんですよ。
んでプログラム中で値を変更する事はないから初期化のときに値を入れておくと。
俺のちょー美しい設計がスタートからくずれた…
0365デフォルトの名無しさん
2005/03/27(日) 19:33:16main()の最初の行にinitialize()っての入れてそこで代入すりゃいいじゃん
0366デフォルトの名無しさん
2005/03/27(日) 19:35:26単に定数で初期化したいんだろ。
おまえの例示した内容でアフォだってことはわかった。
>>361
vector<int>を派生させるかして、
適当に作成したコンストラクタの引数で初期化しろ。
0368デフォルトの名無しさん
2005/03/27(日) 19:44:11みんなありがとう。でも理解できないでつ。
少なくとも俺の考えた方法は無理だとわかりました。
出直してきます……
0369デフォルトの名無しさん
2005/03/27(日) 19:45:44read onlyなら普通のconstな配列をグローバル変数にしたら駄目なのか?
なんでvectorにいれる必要があるんだ。
0370361
2005/03/27(日) 19:53:09>>369
うん、普通にconstの配列で良いよ。
単に vector って言ってみたかっただけ。ごめんなさい。ごめんなさい。ごめんなさい。
本当はSTLでかっこよく書いて、あのクソ野郎***をみかえしてやりたかったんだよ……
0371デフォルトの名無しさん
2005/03/27(日) 19:54:13static 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);
しかし、何がしたいのかわからん。
0372デフォルトの名無しさん
2005/03/27(日) 19:57:07むしろ無駄が多いだけだろ、それ…。
笑われるぞ。
0373デフォルトの名無しさん
2005/03/27(日) 19:57:07この場合は無理にSTL使ったほうがかっこわるい。
クソ野郎じゃなくても「なんでもSTL使えばかっこいいとでも思ってやがる」って言われるのがオチ。
もっと本質を見るようにしような。
0374361
2005/03/27(日) 20:05:32Cの配列でも十分だけど vector で定義して for_each でぐるぐる回したらかっこいいと思っただけでつ。
STLを使えるちょーーーーーーー嫌な奴がいて、STLが使えない俺を馬鹿にするんです。
で、俺もSTLぐらい使えるぜと思ったけどレベルが違いすぎました。
アホの子は白鳥にはなれないんですね……
0375デフォルトの名無しさん
2005/03/27(日) 20:19:13ちゃんとSTLの趣旨を理解して使ってあげなきゃSTLが可哀想だ
0376デフォルトの名無しさん
2005/03/27(日) 20:22:530377デフォルトの名無しさん
2005/03/27(日) 20:50:010378デフォルトの名無しさん
2005/03/27(日) 20:52:42CXSValというクラスを作り、
#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;
};
0379デフォルトの名無しさん
2005/03/27(日) 20:53:49class 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];
(省略)
};
0380デフォルトの名無しさん
2005/03/27(日) 20:56:05ConsoleAppMg 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 が未解決です。
これはなぜ起きるのでしょうか?
初心者なため難しいです。
数時間ほど考えましたがわかりません。
わかるかたがいらっしゃいましたら、お教えいただけないでしょうか。
0381デフォルトの名無しさん
2005/03/27(日) 20:56:570382デフォルトの名無しさん
2005/03/27(日) 21:03:38あなたが利用したい関数がリンカが参照できる位置にないってことでしょ
必要なライブラリはパス上にあるの?
0383デフォルトの名無しさん
2005/03/27(日) 21:04:500384デフォルトの名無しさん
2005/03/27(日) 21:10:06typedef 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を用いてはいけないのでしょうか?
0385363
2005/03/27(日) 21:11:57例えば整数配列から値を検索するのに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";
}
0387デフォルトの名無しさん
2005/03/27(日) 21:19:29CXSVal のコンストラクタ、デストラクタが宣言されただけで定義されて無いから。
なんでこのスレで聞いたんだろう?
0388デフォルトの名無しさん
2005/03/27(日) 21:24:46CXSValクラスの実装を *.cpp に書いてたらリンクが通らないので確認を。
0390デフォルトの名無しさん
2005/03/28(月) 00:48:10export されていない関数(メンバ関数)テンプレートの定義は
インスタンス化されるコンパイル単位に含まれる必要がある。
たぶん export は使えないから、定義もヘッダに含めてしまうのが現状では一般的。
0391デフォルトの名無しさん
2005/03/28(月) 00:53:33const 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;
}
これなら、コンストラクタにも縛られんし
0392デフォルトの名無しさん
2005/03/28(月) 00:54:490393デフォルトの名無しさん
2005/03/28(月) 01:03:54少々スレ違いだが、boostに同様のものがある。
#include <boost/assign/list_of.hpp>
const std::vector<int> a = list_of(2)(20)(3);
0394デフォルトの名無しさん
2005/03/28(月) 11:18:25それとも、必ず0が返るとかみたいに決まってますか?
0395デフォルトの名無しさん
2005/03/28(月) 12:09:32先ず本を読め。
0396デフォルトの名無しさん
2005/03/28(月) 12:29:48T()が返る
0397デフォルトの名無しさん
2005/03/28(月) 13:13:060398デフォルトの名無しさん
2005/03/28(月) 13:39:220399デフォルトの名無しさん
2005/03/28(月) 16:01:150400デフォルトの名無しさん
2005/03/28(月) 16:07:210401デフォルトの名無しさん
2005/03/28(月) 16:21:01組み込み型は0だな
0402デフォルトの名無しさん
2005/03/28(月) 16:24:56あとGA()でもいいな
0403デフォルトの名無しさん
2005/03/28(月) 19:43:12デフォルトコンストラクタの結果への参照が返る。
0404デフォルトの名無しさん
2005/03/28(月) 23:30:23返すのはT&だよ。
0405デフォルトの名無しさん
2005/03/28(月) 23:38:350406デフォルトの名無しさん
2005/03/28(月) 23:58:060407デフォルトの名無しさん
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になってしまいます
同じことをしているだけなのになぜ結果がおかしくなるんでしょうか・・・
0408デフォルトの名無しさん
2005/03/29(火) 16:42:46strFileが初めから空ではないかと言ってみる。
0409407
2005/03/29(火) 17:32:04デバッグでもちゃんとデータが入ってるのは確認しましたし
色々やっててやっと原因がわかったんですが
lstrcpy((char*)strFile.begin(), 別のstring変数のポインタ);
としてやってたのがいけなかったようです
size()の返値が0になってました・・・
直接コピーはダメなんですね・・・
0410デフォルトの名無しさん
2005/03/29(火) 17:35:410411デフォルトの名無しさん
2005/03/29(火) 18:01:340412デフォルトの名無しさん
2005/03/29(火) 18:38:210413デフォルトの名無しさん
2005/03/30(水) 02:32:32basic_string<>に直接コピーすると内部でのデータ構造が破壊される
虞がある。そもそもbasic_string<>::begin()が返すのはbasic_string<>::iterator
であって、char*ではない。basic_string<>::iteratorがchar*で実装されている
「可能性もある」にすぎないし、かなりの数の実装ではそうではない。
0414デフォルトの名無しさん
2005/03/30(水) 19:14:59strFile = 別の string 変数
にしなかった理由を知りたい。
0415デフォルトの名無しさん
2005/03/30(水) 19:21:410416デフォルトの名無しさん
2005/03/30(水) 23:26:37std::wstring m_string;
wchar_t* pWC=m_string.c_str();
このpWCに直接アクセスしてもいいのでしょうか?
たとえば、strcpyなどで文字列をコピーしたり。
0417デフォルトの名無しさん
2005/03/30(水) 23:52:190418デフォルトの名無しさん
2005/03/31(木) 00:16:35const wchar_t* ならわかるけど
0419デフォルトの名無しさん
2005/03/31(木) 10:15:43一旦別のchar変数に受け取ってから代入するしか無いんでしょうか
0420デフォルトの名無しさん
2005/03/31(木) 10:27:130421デフォルトの名無しさん
2005/03/31(木) 10:33:020422デフォルトの名無しさん
2005/03/31(木) 10:41:170423デフォルトの名無しさん
2005/03/31(木) 10:53:50例えば、
int a=10
で
string(a)
は何故できない?
0424デフォルトの名無しさん
2005/03/31(木) 11:06:43string の機能とする必要がないからだろうな。
0425デフォルトの名無しさん
2005/03/31(木) 11:41:27確かにもう少し冗長な方法で、変換できますが。
borlandのAnsiStringやMFCのCStringではできるのに、stlがサポートしなかったのは、どうしてなのでしょうか?
0426デフォルトの名無しさん
2005/03/31(木) 12:02:24「便利な文字列型」と「標準の文字列型」の違いがあるからだろうな。
0427デフォルトの名無しさん
2005/03/31(木) 12:04:16最近はそーゆーのも「キャスト」と呼ぶんですか。
(´・∀・`)ヘー
0428デフォルトの名無しさん
2005/03/31(木) 12:18:56そこで、const_castですよ
0429デフォルトの名無しさん
2005/03/31(木) 13:27:39暗黙の型変換を許したくなかったんじゃまいか
0430デフォルトの名無しさん
2005/03/31(木) 13:53:39それならexplicitで十分。たぶん>>426のようなことだと思う。
0431デフォルトの名無しさん
2005/03/31(木) 14:10:410432デフォルトの名無しさん
2005/03/31(木) 14:21:100433デフォルトの名無しさん
2005/03/31(木) 14:33:300434デフォルトの名無しさん
2005/03/31(木) 16:08:05boost::lexical_cast
0435デフォルトの名無しさん
2005/03/31(木) 17:34:58STL が何か解ってない >>1 が勃てた重複スレで
その指摘はどうだろう。
0436デフォルトの名無しさん
2005/04/05(火) 00:17:02現在,
hoge::iterator it;
をポインタに変換するのに
&*it
としていますが,あんましいい方法じゃない気がするので….
0437デフォルトの名無しさん
2005/04/05(火) 00:36:070438デフォルトの名無しさん
2005/04/05(火) 04:52:01template <typename Target, typename Source>
inline Target* iterator_cast(Source source)
{ return &*source; }
hoge<T>::iterator it;
T* t = iterator_cast<T>(it);
だったらこんなんどう?
オレはこんなのオススメしないけど
0439デフォルトの名無しさん
2005/04/05(火) 07:43:24boostなら、boost::arrayがあるじゃあないか
0440デフォルトの名無しさん
2005/04/05(火) 13:03:38boost::addressof(*it);
0441デフォルトの名無しさん
2005/04/05(火) 23:19:520442436
2005/04/05(火) 23:39:40hoge<T>::iterator it;
T *p = (T*)it;
みたいなのが普通に通ってたんですけど,
VC7に移行したとたんエラーが出て通らなくなっちゃいました.
もしかして,この書き方はVC6専用??
0443デフォルトの名無しさん
2005/04/05(火) 23:45:01VC6 と VC7 の両方で
std::cout << typeid(hoge<T>::iterator).name();
を実行して見れ
0444デフォルトの名無しさん
2005/04/06(水) 00:50:08イテレータがポインタで実装されている保証はないから、そういうコードは書いちゃダメだろ
0445デフォルトの名無しさん
2005/04/06(水) 01:15:360446デフォルトの名無しさん
2005/04/06(水) 04:39:11これはひどい
0447デフォルトの名無しさん
2005/04/06(水) 05:12:250448デフォルトの名無しさん
2005/04/06(水) 12:21:06そこで reinterpret_cast ですよ。
0449436
2005/04/06(水) 20:50:00どうやらやっちまってたらしい…。
1年間ぐらいずっと
「この変換は便利だ〜」
とか思って使い続けていた俺はいったい…orz
0450デフォルトの名無しさん
2005/04/07(木) 00:16:120451デフォルトの名無しさん
2005/04/07(木) 00:28:510452デフォルトの名無しさん
2005/04/07(木) 01:22:37一年間に書いたコード全部それかよ。
0453デフォルトの名無しさん
2005/04/07(木) 03:06:06そこで reinterpret_cast ですよ。
0454デフォルトの名無しさん
2005/04/07(木) 05:34:12オブジェクトを新たに生成せずに行うことは可能でしょうか。
以下のコードくらいしか思いつかないのです。
Object foo = *iter; // ←オブジェクト生成のコストを減らしたい
list.erase(iter);
list.push_front(foo);
0455454
2005/04/07(木) 07:01:520456デフォルトの名無しさん
2005/04/07(木) 09:41:54後学のためにどう解決したのか知りたい。
0457デフォルトの名無しさん
2005/04/07(木) 10:22:020459デフォルトの名無しさん
2005/04/07(木) 20:39:510460デフォルトの名無しさん
2005/04/07(木) 22:28:57>>459 (°Д°)ハァ?
0461デフォルトの名無しさん
2005/04/07(木) 23:14:410462デフォルトの名無しさん
2005/04/08(金) 10:37:590463デフォルトの名無しさん
2005/04/08(金) 12:09:02プログラミング言語以前に、日本語を勉強すべきだな。
0464デフォルトの名無しさん
2005/04/08(金) 20:25:540465デフォルトの名無しさん
2005/04/08(金) 22:08:03どうがよろしくいれてください
0466デフォルトの名無しさん
2005/04/08(金) 22:17:350467デフォルトの名無しさん
2005/04/27(水) 10:47:21str="200";
で、このstrをint型に変換するにはどうしたらよいのですか?
0468デフォルトの名無しさん
2005/04/27(水) 10:49:58int i=200;
と書く。
0469デフォルトの名無しさん
2005/04/27(水) 10:58:55変換する方法を知りたいのですが
0470デフォルトの名無しさん
2005/04/27(水) 11:33:04std::string str = "200";
std::istringstream is(str);
int i;
is >> i;
std::cout << i << std::endl;
0471デフォルトの名無しさん
2005/04/27(水) 13:48:47i = atol(str.c_str());
2. チェックをするとき
const char *p;
i = strtol(str.c_str(), &p, 10);
if (*p) {
エラー処理;
}
3. 無駄にC++なやり方
>>470
0472デフォルトの名無しさん
2005/04/27(水) 13:54:34このスレ的には、1-2は間違い。
0473デフォルトの名無しさん
2005/04/27(水) 14:40:28int i = boost::lexical_cast<int>( str );
} catch(boost::bad_lexical_cast& err) {
// エラー処理
}
内部的には>>470と同じことをしてる
0474デフォルトの名無しさん
2005/04/27(水) 15:23:160475デフォルトの名無しさん
2005/04/27(水) 16:25:47全部STL使わにゃいけんのか?w
0476デフォルトの名無しさん
2005/04/27(水) 16:44:00STLの相談と解釈すべきってことだろ。
0478デフォルトの名無しさん
2005/04/27(水) 18:26:13>ストリームってSTLじゃないんだっけ。
まったくもって違う。
つか、STL なんていう呼称に何か意味があるのか?
0479デフォルトの名無しさん
2005/04/27(水) 18:39:150480デフォルトの名無しさん
2005/04/27(水) 22:04:51#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)));
0481デフォルトの名無しさん
2005/04/27(水) 22:29:05いつもはboost::lambdaの方を使ってるんだけど。
0482デフォルトの名無しさん
2005/04/27(水) 22:43:04boost::lambdaは無名関数作成。
boost::bindは>>480のように2引数関数オブジェクトから1引数関数オブジェクトを作ったりするのに使う。
0483デフォルトの名無しさん
2005/04/27(水) 23:22:150484デフォルトの名無しさん
2005/04/28(木) 01:30:10boost 1.32 だと boost::lambda::bind よりも boost::bind の方が適用範囲が
広い。確か intrusive_ptr を使ってると lambda の方はうまく動かなかった
ような気がする。
0485デフォルトの名無しさん
2005/04/28(木) 02:05:09あんまり答えになってないんじゃないか? それはさておき、俺は
boost::lambda::bindとintrusive_ptrを使ってるけど別に困ってないけどな。
俺の経験ではboost::bindはlambdaと混用できなくて、
必然的にboost::lambda::bindを使う方が多い。
0486デフォルトの名無しさん
2005/04/28(木) 21:53:380487デフォルトの名無しさん
2005/04/28(木) 22:49:52便利だと思うんだけど。
0488デフォルトの名無しさん
2005/04/29(金) 00:50:380489デフォルトの名無しさん
2005/04/29(金) 01:26:530490デフォルトの名無しさん
2005/04/29(金) 10:05:350491デフォルトの名無しさん
2005/04/29(金) 10:57:120492デフォルトの名無しさん
2005/04/29(金) 11:03:470493デフォルトの名無しさん
2005/04/29(金) 12:09:40STL 以前に、コンピュータサイエンスで使われてた単語をそのまま
持ってきただけかと。そもそも boost::lambda のラムダも、λ計算
そのままだし。
0494デフォルトの名無しさん
2005/04/29(金) 12:17:260495デフォルトの名無しさん
2005/04/29(金) 12:38:550496デフォルトの名無しさん
2005/04/29(金) 12:41:310497デフォルトの名無しさん
2005/04/29(金) 13:51:070498デフォルトの名無しさん
2005/04/29(金) 14:01:390499デフォルトの名無しさん
2005/04/29(金) 14:43:260500デフォルトの名無しさん
2005/04/29(金) 14:57:020501デフォルトの名無しさん
2005/04/29(金) 16:42:560502デフォルトの名無しさん
2005/04/29(金) 16:58:320503デフォルトの名無しさん
2005/04/29(金) 17:10:16グッドセンスな名前はまだか?
0504デフォルトの名無しさん
2005/04/29(金) 23:49:14お前が馬鹿なだけ。
0505デフォルトの名無しさん
2005/04/30(土) 00:11:35理由は何ですか?
0506デフォルトの名無しさん
2005/04/30(土) 00:16:23>>489
STLのbind1st、bind2ndは引数に束縛という意味でbindをそのまま持ってきたわけだが、
boost::bindについてまで束縛を「そのまま持ってきた」と言えるかというと疑問だ。
0507デフォルトの名無しさん
2005/04/30(土) 00:16:38単に拡張にせよ縮小にせよ、ポインタが指している先の面倒を自分でみる必要があるだけで。
0508デフォルトの名無しさん
2005/04/30(土) 01:20:320509デフォルトの名無しさん
2005/04/30(土) 03:27:20そいつに聞け。
0510デフォルトの名無しさん
2005/04/30(土) 07:26:01vectorを使って、動的に確保したメモリ領域のアドレスを管理するのに、
どこもポインタからunsigned longとかunsigned intとかに変換してるのですが、
直接ポインタ型でvectorを使っても何もダメなことって無いですよね?
ポインタ型だって結局はunsigned longとかと同じ数値なんだし・・・
0511デフォルトの名無しさん
2005/04/30(土) 07:53:51そこで語源が固有名詞な専門用語持ってくるのも嫌な感じだな。
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"
だそうだ。
0512デフォルトの名無しさん
2005/04/30(土) 07:56:00どこでや。
>ポインタ型だって結局はunsigned longとかと同じ数値なんだし
sizeof(long*) == 8
sizeof(long) == 4
という環境もあるわけですが…
0513デフォルトの名無しさん
2005/04/30(土) 07:57:28数値に変換しているのは、ポインタ型それぞれに
テンプレートのインスタンス化が起こるのを嫌ってるんだろう。
ただ、そこで整数型で置き換えるのは間違いで void* ぐらいにしておくべき。
ポインタ型でvectorを使うのは全く問題ないが、
問題ない理由としてポインタが数値であるという認識は間違い。
0514デフォルトの名無しさん
2005/04/30(土) 08:04:14あぁいや、サイズが同じというんじゃなくて、結局は数値なんだしってことで
>>513
でも、データ上数値であることに変わりないと思うのですが
じゃあ、どういった理由で問題無いのでしょう?
0515デフォルトの名無しさん
2005/04/30(土) 08:38:51頭悪そうですね…
0516513
2005/04/30(土) 08:48:02数値であっても、サイズが同じじゃないと問題が起こることぐらいわかるよな?
ポインタ型でvectorを使うのが問題ない理由は、ポインタ型が
vectorのテンプレート引数として要求される条件を全て満たしているから。
0517デフォルトの名無しさん
2005/04/30(土) 10:24:410518デフォルトの名無しさん
2005/04/30(土) 10:54:130519デフォルトの名無しさん
2005/04/30(土) 18:36:36すなわち「うんこ味のカレー」はうんこそのものである。
また、「カレー味のうんこ」はたとえ見た目がうんこそっくりでも、
カレーそのものかもしれないという可能性がまだ残されている。
しかし、「うんこ」と断言されている以上、危険性は賭けである。
これ以上は1/2の確率と「運」に任せるしかない。
ゆえに、選ぶとしたら「カレー味のうんこ」だ!
0520デフォルトの名無しさん
2005/04/30(土) 18:44:01それは「カレー味」とは、どの程度の質レベルなのか、という問題である。
もしもうんこが1%でもブレンドされていたらおれの敗北である。
「カレー味」と表記されたからといって、原料が100%すべてカレー
である確率は残念ながらとても低いだろう。
最後に「うんこ」と断言されていることを忘れてはならない。
おれはまた、思考の渦に入り込んでしまった様だな。
0521デフォルトの名無しさん
2005/04/30(土) 18:45:030522デフォルトの名無しさん
2005/04/30(土) 18:53:140523デフォルトの名無しさん
2005/04/30(土) 20:50:030524デフォルトの名無しさん
2005/04/30(土) 21:04:010525デフォルトの名無しさん
2005/04/30(土) 21:52:06スカトロって、誰が出したのかも判らない様なうんこでも食えるもんなの?
0526デフォルトの名無しさん
2005/04/30(土) 22:10:420527デフォルトの名無しさん
2005/05/01(日) 03:35:590528デフォルトの名無しさん
2005/05/01(日) 06:58:44(「究極の選択」コーナー) って18年くらい前だっけ?
息の長いネタだ<カレー味の運子
0529デフォルトの名無しさん
2005/05/03(火) 03:17:290530デフォルトの名無しさん
2005/05/03(火) 03:31:200531デフォルトの名無しさん
2005/05/03(火) 06:00:160532デフォルトの名無しさん
2005/05/03(火) 07:28:550533デフォルトの名無しさん
2005/05/03(火) 07:32:470534デフォルトの名無しさん
2005/05/03(火) 08:11:01http://www.unsymmetry.org/up3d/files/1112701802518.jpg
0535デフォルトの名無しさん
2005/05/04(水) 13:49:330536デフォルトの名無しさん
2005/05/04(水) 13:55:470537デフォルトの名無しさん
2005/05/04(水) 14:21:52もっとC++的なやり方はありませんか?
0538デフォルトの名無しさん
2005/05/04(水) 14:27:450539デフォルトの名無しさん
2005/05/04(水) 14:30:560540デフォルトの名無しさん
2005/05/04(水) 14:44:19std::string str(number, ' ');
>>539
遅くない?
0541デフォルトの名無しさん
2005/05/04(水) 14:47:100542デフォルトの名無しさん
2005/05/04(水) 14:51:10そういう時の代替案はなんだろう?printf?
0543デフォルトの名無しさん
2005/05/04(水) 14:54:20C++使うのやめれ
0544デフォルトの名無しさん
2005/05/04(水) 14:56:57wsprintf
0545デフォルトの名無しさん
2005/05/04(水) 14:59:58string str="aaa"+string(x)+"bbb";
みたいなことが出来るような文字列クラスはありませんか?
0546デフォルトの名無しさん
2005/05/04(水) 15:15:200547デフォルトの名無しさん
2005/05/04(水) 15:26:200548デフォルトの名無しさん
2005/05/04(水) 15:56:01reinterpret_cast<std::string>
0549デフォルトの名無しさん
2005/05/04(水) 21:19:450550デフォルトの名無しさん
2005/05/04(水) 21:25:540551デフォルトの名無しさん
2005/05/04(水) 22:23:58boost::lexical_cast()
0552デフォルトの名無しさん
2005/05/04(水) 23:03:02STL の意味を知らないからこそこのスレに来るんじゃなかろうかと。
0553デフォルトの名無しさん
2005/05/04(水) 23:18:27"標準的"手法
#include <iostream>
#include <sstream>
int main()
{
double d = 1.2345;
std::stringstream ss;
std::string str;
ss << d;
ss >> str;
std::cout << str;
}
0554デフォルトの名無しさん
2005/05/05(木) 00:14:19orzとSTL
0555デフォルトの名無しさん
2005/05/05(木) 00:15:12そうなんだけど。
だからこのスレいらないんだよ。
0556デフォルトの名無しさん
2005/05/05(木) 00:19:15例えば俺とか
0558デフォルトの名無しさん
2005/05/05(木) 00:44:210559デフォルトの名無しさん
2005/05/05(木) 02:38:55STLちゃうやん
0561デフォルトの名無しさん
2005/05/05(木) 02:53:460562デフォルトの名無しさん
2005/05/05(木) 02:58:39取り込まれてしまった今となっては明確に区切れる物では無い。
HP STL や SGI STL のことを指して言ってるのかもしれないが、
今使われてるのはそれらをベースにしたC++標準ライブラリだ。
範囲が明確に決まってるかのように、含まれるだの含まれないだの言うのは時代遅れだぞ。
このスレが不要である事に疑いの余地は無い。
0563デフォルトの名無しさん
2005/05/05(木) 03:08:02根強く残っているから混乱しちゃうんだな。
呼称は「標準ライブラリ」で統一されるといいんだけど。
0564デフォルトの名無しさん
2005/05/05(木) 03:17:35標準ライブラリじゃなくてテンプレートライブラリ
0565デフォルトの名無しさん
2005/05/05(木) 03:29:050566デフォルトの名無しさん
2005/05/05(木) 06:39:300567デフォルトの名無しさん
2005/05/05(木) 07:05:530568デフォルトの名無しさん
2005/05/05(木) 07:19:560569デフォルトの名無しさん
2005/05/05(木) 07:30:48はかってみたら5倍程度遅くなったんです。これってふつうですか?
0570デフォルトの名無しさん
2005/05/05(木) 07:53:23アクセス毎に境界チェックが入るということ等から見当がつきそうなものだが。
見当がつかなかったらコンパイラにアセンブラソースを吐かせて自分で比較すれ。
0571デフォルトの名無しさん
2005/05/05(木) 08:39:120572デフォルトの名無しさん
2005/05/05(木) 09:00:21速度が気になるのならboost::arrayをどうぞ。
0573デフォルトの名無しさん
2005/05/05(木) 09:02:38普通に全件表示を書いたら配列とvectorでは速度が変わらなかったんです。
普通にstd::find()を使ってもstd::accumurate()を使っても同じ速度だし。
どうやったらvectorを遅く動かせるんでしょうか。
0574デフォルトの名無しさん
2005/05/05(木) 09:07:12vectorは動的にメモリを確保するから、普通の配列に比べコンストラクタ・デストラクタに時間が掛かる。
0575デフォルトの名無しさん
2005/05/05(木) 10:45:100576デフォルトの名無しさん
2005/05/05(木) 10:48:22それでも普通の配列より時間がかかる
0577デフォルトの名無しさん
2005/05/05(木) 11:23:36operator[]()は境界チェックをしないわけだが。
0578デフォルトの名無しさん
2005/05/05(木) 11:28:29デバッグモードだと差がでるけど、リリースモードだとかなり差が縮んだはず。
まあ、俺的には可変長という汎用性の割には満足な結果だと思うがどうよ?
0579デフォルトの名無しさん
2005/05/05(木) 13:29:55保守性考えてもvectorでしょ。
#あ、boost::arrayは知らないのだが、vectorに較べてよりよいならそれも検討の価値ありだな。
0580デフォルトの名無しさん
2005/05/05(木) 14:00:52オープンソースの敵
0581デフォルトの名無しさん
2005/05/05(木) 14:09:49・スタック上の固定配列
・_alloca等でスタック上に確保される配列
・ヒープに確保される配列
には多少差があるだろ。ついでにvectorの場合要素の初期化コストもかかる。
0582デフォルトの名無しさん
2005/05/05(木) 15:32:31・スタック上の固定配合
0583デフォルトの名無しさん
2005/05/05(木) 16:15:32たとえば 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();
}
0584デフォルトの名無しさん
2005/05/05(木) 16:27:03それは構わない。逆がまずいだけで。
0585デフォルトの名無しさん
2005/05/05(木) 16:39:25「動的にサイズ変化するようなもん」を「auto_ptrに突っ込」むのは
あんま意味無いよな。
0586デフォルトの名無しさん
2005/05/05(木) 17:15:06STLコンテナのは有名だけど、おかげでググったらauto_ptrは最悪とか書かれてて
最近まで使うの躊躇してもんで。
>>585
ムッキッー 上の例はimplのほうじゃ!謝罪と(ry
(たぶん正確にはpimplだけどな)
0587デフォルトの名無しさん
2005/05/05(木) 17:23:38さらに指してるのがvectorならauto_ptrは別に使わなくて良いような?
0588デフォルトの名無しさん
2005/05/05(木) 17:24:30exceptional c++でも読んでみ?便利な使い方のってるよ。
結局、標準のスマートポインタがauto_ptrっていう
割と癖の強いスマートポインタしかないのがダメなだけ。
普通のスマートポインタが必要な人にとっては
「何だこれは?」みたいなことになる。
0589デフォルトの名無しさん
2005/05/05(木) 17:36:51万人に理解されない設計をするなってマジで思う。
0590デフォルトの名無しさん
2005/05/05(木) 17:47:160591デフォルトの名無しさん
2005/05/05(木) 17:54:55実際ところは↓こんな感じでつかってるんで、vectorを直接渡すってわけじゃないけど。
大丈夫か気になったんでちょっと聞きたかっただけ、今は反省している。
struct A{
string class;
set<string> name;
};
auto_ptr<A> impl;
0592デフォルトの名無しさん
2005/05/05(木) 18:00:31どうかってのを考えないでやたらめったらテンプレート使う
クソグラマが多くなったね。
ソースコードに技巧をこらしちゃうとホントに見れたもんじゃない。
やねうらおまわりの奴等のソースは汚いだけ。
でもって動作最悪w
せめて技巧をこらしたなら動作はよくしろよって思うw
ひとりごとね。レスつけないで。
0593デフォルトの名無しさん
2005/05/05(木) 18:06:310594デフォルトの名無しさん
2005/05/05(木) 18:13:15レスつけられるの怖がっちゃうような、
小動物並みの心臓しか持ってない癖に2chに書き込むな。
メモ帳にでも書いとけバーカ。
0595デフォルトの名無しさん
2005/05/05(木) 18:14:13不勉強な人に理解されないのはしょうがないと思う。
ある程度 C++ を理解している人で auto_ptr がわからない
なんていう人は今のところ見たことがない。
0596デフォルトの名無しさん
2005/05/05(木) 18:24:57>ある程度 C++ を理解している人で auto_ptr がわからないなんていう人は今のところ見たことがない。
俺のいる会社の同僚が全滅な件について
0597デフォルトの名無しさん
2005/05/05(木) 18:28:180598デフォルトの名無しさん
2005/05/05(木) 18:29:440599デフォルトの名無しさん
2005/05/05(木) 18:35:03俺のいる会社の同僚も全滅な件について
0600デフォルトの名無しさん
2005/05/05(木) 18:47:440601デフォルトの名無しさん
2005/05/05(木) 18:52:100602デフォルトの名無しさん
2005/05/05(木) 18:56:35boostがスレちがいな件について
0603デフォルトの名無しさん
2005/05/05(木) 19:00:390604デフォルトの名無しさん
2005/05/05(木) 19:04:23テンプレートに技巧を凝らしてしまう愚かな奴について
0605デフォルトの名無しさん
2005/05/05(木) 19:12:56boost::mplくらいでないとテンプレートに技巧凝らしてるとはいえない件について
0606デフォルトの名無しさん
2005/05/05(木) 19:14:15boostなんてほとんどの奴は使ってない件について
0607デフォルトの名無しさん
2005/05/05(木) 19:14:290608デフォルトの名無しさん
2005/05/05(木) 19:19:02C++ 独自の機能ではないよね?
0609デフォルトの名無しさん
2005/05/05(木) 19:48:33禿曰くAdaとCluから影響を受けたそうだが。あとはCのプリプロセッサマクロの安全な代替。
0610デフォルトの名無しさん
2005/05/05(木) 22:13:29thanx!!
Clu というのは恥ずかしながら知りませんでした。面白そうね。
http://www.shoeisha.com/book/pc/20c/chap08/gen.htm
0611デフォルトの名無しさん
2005/05/05(木) 23:00:45皮が?
0612デフォルトの名無しさん
2005/05/06(金) 06:37:300613デフォルトの名無しさん
2005/05/06(金) 07:21:55templateの方が、より強力でより便利な反面
圧倒的に危険な仕様であるが
0614デフォルトの名無しさん
2005/05/06(金) 07:37:45再帰展開が強欲。
0615デフォルトの名無しさん
2005/05/06(金) 17:31:07今のうちからなれておく意味で使っておくのは悪くないと思うの。
0616デフォルトの名無しさん
2005/05/06(金) 21:38:53俺の設計理念ではboostとかスマートポインタなんか必要になる時点で駄目。
普通の人の理解の限界はvectorとlistとstringまで。
と、俺は思ってる(その他のSTLってどうも気持ち悪い)。
0617デフォルトの名無しさん
2005/05/06(金) 21:46:170618デフォルトの名無しさん
2005/05/06(金) 22:10:46スマートポインタなんてどこで使うんだよ!ってきくと
大抵、ウンコな設計してるからみちゃいられん。
テンプレートは特に必要が無いなら、なるべくさけるようにして
設計技術を磨いてったほうがいいよ。
と、あえてテンプレートスレでいってみる。
なるべく多くの人に理解できる使い方を心がけよう。>ALL
0619デフォルトの名無しさん
2005/05/06(金) 22:11:18そんな常識もわからんのかw
0620デフォルトの名無しさん
2005/05/06(金) 22:14:20スマートポインタぐらい使えるだろw
0621デフォルトの名無しさん
2005/05/06(金) 22:16:35>あえてテンプレートスレでいってみる。
誤りですね。ここはテンプレートスレではありません。STL スレです。
…って何回言や理解すんだろな。
0622デフォルトの名無しさん
2005/05/06(金) 22:18:18GCを使うのを除けば、ろくな方式を知らんが
0623デフォルトの名無しさん
2005/05/06(金) 22:24:03是非スマートポインタを使わない際のメモリ動的取得解放の
設計を書いていただけないだろうか。
良いか駄目かということよりも、どうやれば良いのかということの
方が興味あるのです。
0624デフォルトの名無しさん
2005/05/06(金) 22:36:10boost::functionは使わないより使ったほうが分かりやすくなると思うけど。
0625デフォルトの名無しさん
2005/05/06(金) 22:42:10boost::functionで引数なしの型をどう書くのかしばらくわからなかった。
0626デフォルトの名無しさん
2005/05/06(金) 22:50:40流行だからは無しで。なんとなくも無し。
0627デフォルトの名無しさん
2005/05/06(金) 22:57:21だからなぜそんな2者択一な質問になるのだ?
STLにはない機能が、もしくはSTLにも同様な機能があるがより拡張・洗練された形で
Boostで提供されているから使っている、それが理由だ。
0628デフォルトの名無しさん
2005/05/06(金) 22:58:59方法とかそういうのは無い。
決まりを守るだけ。
・必ず確保したクラスで解放するようにする。
・そのメモリにアクセスできるのは確保したクラスのみ。
・確保したクラスを消せば消滅する。
・そのメモリへのポインタの保持を許さない。
ってだけ。
同じようなことをやるのにdelete時のメモリの解放忘れ防止ただそれだけのために
スマートポインタを使うのなら俺もいいとおもうのだけどね。
どうもそれだけじゃない人を見て、それが気持ち悪くてね。
0629デフォルトの名無しさん
2005/05/06(金) 23:02:21おkwwwっうぇっうぇうぇwwwうぇwww
wwwwww
wwwうはっwwwっwwwwwwっ
wおkwww
wおkwwwおkwww
おkwwwwwwwww
0630デフォルトの名無しさん
2005/05/06(金) 23:11:22>・必ず確保したクラスで解放するようにする。
>・そのメモリにアクセスできるのは確保したクラスのみ。
>・確保したクラスを消せば消滅する。
>・そのメモリへのポインタの保持を許さない。
こんな不自由な決まりを作らないとダメな時点でダメだろw
0631デフォルトの名無しさん
2005/05/06(金) 23:22:28戻り値なしのときはどうしているの?
0632デフォルトの名無しさん
2005/05/06(金) 23:24:13忘れてた。
0633デフォルトの名無しさん
2005/05/06(金) 23:27:59とか言ってる時点で駄目。
「スマートポインタなんてどこで使うんだよ!ってきくと
大抵、ウンコな設計してるからみちゃいられん」
と言ってるヤツは大抵ウンコな設計してるから見てられん。
0634623
2005/05/06(金) 23:32:23返事ありがとう。
つまり、scopedに解放されることを重視していると思って良いですか?
>>628の気持ち悪いのは複数のオブジェクトに共有されて、
いつが解放のタイミングかわからない状態のことだと感じました。
少なくともboost::scoped_ptrは許容されているように見えます。
0635デフォルトの名無しさん
2005/05/06(金) 23:33:02例えば、どんな?
0636623
2005/05/06(金) 23:41:25次に、>>634の前提で書くと、MicrosoftのCOMなどに対する考え方を
どの様に持っておられるか気になります。COMは参照カウントを内部に
持つことで、解放のタイミングが掴めません。逆に言えば、利用者がいなくなった
時点で自動的に解放されるとも取ることができます。
これに対しては気持ち悪いと思われますか?
良い、駄目、またその理由なども伺ってみたいです。
0637デフォルトの名無しさん
2005/05/06(金) 23:46:51auto_ptrもダメですか。そうですか。
0638デフォルトの名無しさん
2005/05/06(金) 23:53:08と言うことは、私もダメ…
0639デフォルトの名無しさん
2005/05/07(土) 00:12:05むしろCOMのようなフレームワークの存在を前提におけば
それだけでshared_ptrの有用性は十分認められると思うんですけれどね.
実際COMオブジェクトとshared_ptrの組み合わせはshared_ptrの代表的な使用例になりえますし.
>628
scopedな使用例にしかスマートポインタの必要性を認めてないですけれど,
factoryなどで関数境界,あるいはバイナリ境界を所有権が超える必要性って
普通にあると思うんですが,ここら辺ってどうなんでしょうか.
後,CoW(あるいはpimplの一部)には普通に所有権の共有がありえますし,
またslot,observerのようにオブジェクトを登録するようなパターンでは
どのようにすれば良いのかも聞いてみたい.
0640デフォルトの名無しさん
2005/05/07(土) 00:25:19てゆうか、参照カウンタによっかかって
プログラム組んでくとソース中にばら撒いた一見なんの関連もないようで
実はちゃっかりつながってるオブジェクトに酷い目にあわされるでしょ?
参照カウンタが役に立った極稀な例は俺のプログラミング人生で
ゲームのりソース管理ぐらいだ。
データのロードとアンロードをするとき。
まあ、こういう変なことするときって大抵最適化とかそっちまわりだよね。
十分に速度がありゃ、1回すべて破棄して、構築しなおす。これ最強。
綺麗な設計が重視されるときはこれが一番。
0641デフォルトの名無しさん
2005/05/07(土) 00:31:21所有権の共有が当然なソフトウェアしか書かない人も居る。
両方を書く人も居る。
大事なのは自分の環境が一般的ではない可能性を想定できることだ。
顔も知らない他人と話すのに「普通は」なんて、そう簡単に持ち出すべきではない。
0642623
2005/05/07(土) 00:32:20返事ありがとう。
>>636の俺の意図は>>628のレスの意図を明確化したいがためなんです。
どこに駄目さとか気持ち悪さを感じているのかを得たいと思ったんですよ。
でも、同じような目線でレスしてくれる人が居て助かります。
0643デフォルトの名無しさん
2005/05/07(土) 00:42:44お前のプログラム人生って
単純なショボイプログラムしか作ったことない、そんな人生なんだろうね。
0644639
2005/05/07(土) 00:44:34まったくもっておっしゃるとおりです.639のレス中の「普通は」という言葉は不適切でした.すいません.
639は「639に書いたような設計も十分想定され,そのような設計では所有権の共有あるいは
shared_ptrも十分有用だと思うので,一概にそれを否定するのには違和感を感じます.」
というふうに訂正させてください.
>642
>どこに駄目さとか気持ち悪さを感じているのかを得たい
それは私も同じです.
0645デフォルトの名無しさん
2005/05/07(土) 00:48:49COMって、 IUnknown で AddRef() が定義されてるんだから、 intrusive_ptr のほうが適切じゃないの。
0646623
2005/05/07(土) 00:54:28まだ酷い目に遭った事はありませんが、デッドロックが話題になったりしますね。
つまり参照カウンタに良い印象を持たれていないということなんですね。
参照カウンタ型の管理が必要になるのが効率アップの為が多いというのも
同意できます。この方式を利用するのはオブジェクトの生成から破棄
までの時間を限りなく短くするため(もしくはそのタイミングが決められない場合)
だろう考えるからです。
# 標準ライブラリのコンテナに入れるためというのは本質的ではないのでここでは無視
ここまでレスを続けると、>>628は言葉がまずいだけでそれほど的外れでは無いと
思っています。
0647デフォルトの名無しさん
2005/05/07(土) 00:58:29俺の文章とお前等の文章どっちが読みやすいかわかるか?
俺のは>>628,640でお前等のは>>634,636,639だ。
俺は俺が認識する普通のプログラマが普通にもっている知識で十分に読める文章で書いたつもりだ。
お前等の文章はどうかな?w
俺が難くなに守っているものはソース可読性でも設計理念でも無い。
俺が持つ普通という感覚の普通らしさだ。
まあ、scopedなfactoryでpimplがsharedな会話をしてるお前等にはきっとわからんだろうがなw
0648623
2005/05/07(土) 01:02:14に関しては許容しているようです。
さらに>>639にある
>scopedな使用例にしかスマートポインタの必要性を認めてないですけれど,
>factoryなどで関数境界,あるいはバイナリ境界を所有権が超える必要性って
>普通にあると思うんですが,ここら辺ってどうなんでしょうか.
これらの利用法は恐らく彼の許容範囲内では?
違っているなら否定して欲しいところです。
ではboost::shared_ptrをどのように利用するのかというところが
最も中心的な内容だと感じています。続きを書きたいですがここで切ります。
0649デフォルトの名無しさん
2005/05/07(土) 01:03:54なにコイツw
ただのバカじゃんw
それで満足したんだ。はいはいよかったねw
すごいすごい。普通の感覚バンザーイw
0650デフォルトの名無しさん
2005/05/07(土) 01:08:37そうかい?
すぐにこの能力が羨ましくてたまらないときがくるよ。
まあ、きても気が付かないかもしれないけどw
0651デフォルトの名無しさん
2005/05/07(土) 01:08:59俺はあのレスは頭いいと思った。かなりおもろい。
0652623
2005/05/07(土) 01:09:56まともに議論する気は無いということですか?
それともこちらの文章がわからなかったという話ですか?
少なくとも僕は否定的な感情で文章を書いていないですよ。
何が有用で、何が危険かを他人の感覚も含めて明らかにしたいだけです。
基本的に誰の話でもちゃんと聞いてみたほうが良いと思ったから
話を引っ張ったんですけどね。がっかりしました。
やっぱり2chでまともにやろうとするのが間違いだったようです。
スレ汚し失礼しました>皆様
0653デフォルトの名無しさん
2005/05/07(土) 01:11:46ちょ、ま、お前wwwwwwwwwww「フッ」ってwwwwwwwww
「フッ」って書いちゃったwwwwwwwwww
しかも勝利宣言wwwwでたwwwwwww
低能の証明の勝利宣言でちゃったwwwwwwwwうぇwww
0654デフォルトの名無しさん
2005/05/07(土) 01:12:12詳しい理由は分かりませんがintrusive_ptrは推奨されないみたいなので
shared_ptrを優先して利用しているんですよ.もちろんintrusive_ptrもアリだと思います.
>>648
shared_ptrの話が中心になるのなら恐らくスレ違いになるので
Boostスレかtemplateスレ(多分Boostスレの方が適切)に移った方が良くないですか?
0655デフォルトの名無しさん
2005/05/07(土) 01:12:34それを叩く方が楽なんだよね。
このスレみてなんとなく思い出した。
0657デフォルトの名無しさん
2005/05/07(土) 01:13:38俺が重要だと認識しているものを、君がまったく理解しようとしないから何も得るものがないのさ。
これでも真面目にレスをつけたつもりなんだけどね。
0658デフォルトの名無しさん
2005/05/07(土) 01:15:542chには限らないよ。
否定だけして根拠も何も示さない人間に、議論で勝つことは出来ない。
0659デフォルトの名無しさん
2005/05/07(土) 01:16:580660デフォルトの名無しさん
2005/05/07(土) 01:18:350661デフォルトの名無しさん
2005/05/07(土) 01:31:14>>628でスマートポインタに関して許容している発言があったので
それを掘り下げたつもりだったんですよ。
どうやら僕のレスの意図も全く理解されていなかったようですね。
これを摺り寄せるのは面倒なので去ります。お付き合いありがとう。
>>654
配慮ありがとう。でも自分は気持ちが無くなってしまいました。
君は議論できそうな相手なんでどっかで出会ったらまた話したいです。
撤収。
0662デフォルトの名無しさん
2005/05/07(土) 01:33:23俺のwwwwww文章wwうぇwwwお前等の文章wwwww
どっちが読みやすいかわかるか?wwwwwwwww
俺のはwwwwwww>>653でお前等のはその他だwwwwwwwwww
俺は俺が認識する普通のVIPPERがwwwwww
普通にもっている知識で十分に読めるwwwwクオリティタカスwwww
オマエラの文章はブー⊂二( ^ω^)二⊃ーン
俺が難くなに守っているものはレス可読性でも設計理念でもねーよwwwwww。
俺が持つ普通という感覚の普通らしwwwwwwwwうぇwwww
まあ、scopedなfactoryでpimplがsharedな会話をしてるお前等にはきっとわからんwwwwwww
0663デフォルトの名無しさん
2005/05/07(土) 02:00:400664デフォルトの名無しさん
2005/05/07(土) 02:08:47先頭に「自分が」って入れると毎日の残業時間が1h減って、
先頭に「同僚が」って入れると毎日の残業時間が2h減って、
先頭に「一般的に」って入れると新人の研修期間が1/2になります。
各自、環境にあった選択をしてください。
0665デフォルトの名無しさん
2005/05/07(土) 02:29:100666デフォルトの名無しさん
2005/05/07(土) 02:32:05少なくとも623氏にはもう少しレスしてほしかったな。
>>648の気に入らない言葉リストではscopedしかひっかかっていないし、
scopedにしても、スマートポインタだのboostだのを
議論している人はわかっているはずじゃない?
なんでそこで「俺の考える普通の人」がでてくるのかな?
0668デフォルトの名無しさん
2005/05/07(土) 02:36:23理解無しでは駄目だろうな。
vectorの要素のポインタ保存しだす奴多数。
サイズが変わった瞬間に阿鼻叫喚の巷と化すことが予想できる。
ブラックボックスにするならそれなりのマニュアルが無いと駄目だな。
もちろん書いただけでは華麗にスルーされて終わりだろうが。
自分だけの理解で解決できるほど会社は甘くない。
自分が知らないことを他の人間が知ってるって場面もあるわけだし。
上手く協調していかないとね。
0669デフォルトの名無しさん
2005/05/07(土) 17:41:070670デフォルトの名無しさん
2005/05/07(土) 17:47:270671デフォルトの名無しさん
2005/05/07(土) 17:51:220672デフォルトの名無しさん
2005/05/07(土) 18:03:04だれも回避するなんて言ってないだろ。
「参照カウンタ方式なら循環参照には気をつけろ」でおしまいだ。
0673デフォルトの名無しさん
2005/05/07(土) 18:05:410674デフォルトの名無しさん
2005/05/07(土) 18:07:23いいえ。
「参照カウンタ方式なら循環参照には気をつけろ」がFAです。
0675デフォルトの名無しさん
2005/05/07(土) 18:10:38っwwwwwwwwwwwwうはっwww
うはっwww
おkwwwwwwうはっwww
wwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwww
0676デフォルトの名無しさん
2005/05/07(土) 18:16:220677デフォルトの名無しさん
2005/05/07(土) 18:21:09多数の亜種意識して使い分けるのがマンドクサ・・
だったら使わなきゃいいじゃんとか言われそうだけど
使うか否かの判断は、そいつをよく知った上でなきゃ出来ない訳で・・
例えば、100種類のスマートポインタ型があって
この場合はアレ使って、この場合はコレ使って、これはあんまり有用じゃないからパス・・
考えただけでウザ。
0678デフォルトの名無しさん
2005/05/07(土) 18:22:500679デフォルトの名無しさん
2005/05/07(土) 18:29:250680デフォルトの名無しさん
2005/05/07(土) 18:33:25__wada_akiko_nantoCD_uriage470_ptrとどう違うの?
0681デフォルトの名無しさん
2005/05/07(土) 18:33:290682デフォルトの名無しさん
2005/05/07(土) 18:34:21「さあ、はじめよう」
とか冒頭で言っちゃっているけど、
"Accelerated C++"って、初心者が読んで理解できるのか?
初心者時代の俺がこの本で入門したら挫折すると思う。
と、ふと思った。
0683デフォルトの名無しさん
2005/05/07(土) 18:47:57>>682
「私たちのアプローチは有効です。-- (もし理解できるのであれば)プログラミングの初心者にも」
> "Accelerated C++"って、初心者が読んで理解できるのか?
多分 No だろうね。もちろん例外はいるけれど。
つまり "Accelerated C++" + 初心者 = 豚 + 真珠。
0684デフォルトの名無しさん
2005/05/07(土) 18:49:490685デフォルトの名無しさん
2005/05/07(土) 18:54:37だよね。C++は4年やっているし、STLもそこそこ使っているのに
ACは結構難しいところがあるんで、おれがヤバイのかとちょっと思った。
でもなかなかいい本だ。基礎固めに。
0686デフォルトの名無しさん
2005/05/07(土) 18:57:21初心者 = 豚 + 真珠 + "Accelerated C++"
0687686
2005/05/07(土) 18:58:09初心者 = 豚 + 真珠 - "Accelerated C++"
0688デフォルトの名無しさん
2005/05/07(土) 19:28:244年でそれはヤバい。>>683はプログラミング初心者の話だ。
0689デフォルトの名無しさん
2005/05/07(土) 19:34:180690デフォルトの名無しさん
2005/05/07(土) 19:38:080691デフォルトの名無しさん
2005/05/07(土) 19:38:11ただ、お前が好きな方向なだけだろ?
俺は3DやPS2、GC、無線通信、DB、ドライバ製作と色々やってきたけど
そんなもんしらんぞ。
0692デフォルトの名無しさん
2005/05/07(土) 19:40:340693デフォルトの名無しさん
2005/05/07(土) 19:44:21たしかに、こんだけちゃんぽんすればまともにやる暇なんてないかもね。
何回転職したんだか。
0694デフォルトの名無しさん
2005/05/07(土) 19:48:45そんなもんって何のこと?
0695デフォルトの名無しさん
2005/05/07(土) 20:22:42確かに言語の勉強するくらいなら
技術の勉強をしたいっていう話はあるよね。
>>691はそういうこと言いたいんじゃない?
0696691
2005/05/07(土) 20:30:284年でそれはヤバイとか、プログラミング初心者だとか、まあ色々とフカシ過ぎなんじゃないの?
って言いたかった。
俺も転職回数多いほうだと思うけど、テンプレートなんて現場にほとんど浸透してないよ。
0697デフォルトの名無しさん
2005/05/07(土) 20:47:52> テンプレートなんて現場にほとんど浸透してないよ。
そりゃ C++ の練度が低い職場にいるからだろ。
もっとも、C++ の練度が低い = 駄目な職場、とは限らんが。
0698デフォルトの名無しさん
2005/05/07(土) 22:00:16std::vectorもstd::stringも使わない現場なんて、ダメっぽい気がするが。
まぁ、ダメな技術者なら吐いて捨てるほどいるがな。
0699デフォルトの名無しさん
2005/05/07(土) 22:38:00マ板を見てるとCっぽいC++のが多いのかもわからんな。
0700デフォルトの名無しさん
2005/05/07(土) 22:57:430701デフォルトの名無しさん
2005/05/08(日) 00:26:04バカまるだし。仕事もできないだろう。
0702デフォルトの名無しさん
2005/05/08(日) 02:09:00なんのために誰にむけてプログラム書いてるかわからないよね?
stlもわからない馬鹿。
boostもわからない馬鹿。
って自分が知ってることがさも常識みたいにいってすぐに相手を馬鹿呼ばわり。
こんな姿勢じゃ自分のプログラムを読めない人なんてみんな馬鹿なんだろうね。
誰に読んでもらう予定も無いから、プログラムなんて動きゃいいんだろうね。
こいつらと仕事することになったら、
一体どこまでできれば普通で、何がわからないと馬鹿なのか、
是非、説明書を掲示しておいてほしい。
テンプレートなんてプログラマのスキルからすりゃ所詮、戦術レベルだよ。
どう組んだって動けば問題ないんだ。バグればみんないっしょ。
大事なのは設計。
0703デフォルトの名無しさん
2005/05/08(日) 02:09:04世の中には色々な職場があって、
それぞれの職場でどのようにC++を使っているかは全然違う。
いつもageている人の職場のように、
C++をオブジェクト指向がサポートされたCとして使う職場もあれば、
STLとかboostとかを少しずつかじって使うような職場(うちの職場)もある。
そして、adobeのようなboostを活用しているような会社も実際に存在している。
どの職場もおそらくちゃんとうまく機能しているのならそれでいいじゃん。
他のところの人にこんな風に文句言うのなんて、
通りがかりの人に喧嘩売ってるのとかわんなくない?
0704デフォルトの名無しさん
2005/05/08(日) 02:25:00どうでもいいが、ここに感動した。
0705デフォルトの名無しさん
2005/05/08(日) 02:44:14>テンプレートなんてプログラマのスキルからすりゃ所詮、戦術レベルだよ。
Modern C++ Designを一度読んだほうがよろしいかと……
設計というものの困難さがどのようなもので、テンプレートが設計に対して
どのような影響を与えているのかわかると思うよ。
戦術を知らずに戦略(設計)なんか立てられないよね。
0706デフォルトの名無しさん
2005/05/08(日) 02:48:39お前の軍は軍師が一番強いのか・・・そうか・・・
0707デフォルトの名無しさん
2005/05/08(日) 02:50:49>Modern C++ Designを一度読んだほうがよろしいかと……
http://www.shos.info/develop/oo/dscsnptn.html#teach
ワロス
0708デフォルトの名無しさん
2005/05/08(日) 02:54:150709デフォルトの名無しさん
2005/05/08(日) 03:02:02702じゃないが、テンプレートがなくても設計できるんじゃね?
影響とかいわれても、それはただテンプレートという機能に
振り回されてるとしか思えないが。
0710デフォルトの名無しさん
2005/05/08(日) 03:04:12いろんな技術を知ってた方が視野が広くなっていいんだよな。
STLは既に言語の標準規格だし、どちらかというと知ってた方が良いものだと思う。
と、Cの標準ライブラリすら使えない環境(組み込み系)の仕事もやってる俺は思う。
引出しが多ければ制限された環境でも取れる手段が多くなるよ。
0711デフォルトの名無しさん
2005/05/08(日) 03:08:25振り回されてる俺が来ましたよ。
0712デフォルトの名無しさん
2005/05/08(日) 03:09:34しかし、一方で技術に振り回されてしまっている人間もいるな。
このスレの人間みたいに。
金槌をもったらなんでも叩いて解決したくなる厨房そのものだなw
テンプレートを使うことの方が重要で、設計なんて考えた事すらなさそうだよ。
0713デフォルトの名無しさん
2005/05/08(日) 03:11:19それは別だな。
設計理念に足りないからできたものがクラスだ。(まあ、無くてもなんとかなるはなるが)
テンプレートはあくまでもマクロの延長。
0714デフォルトの名無しさん
2005/05/08(日) 03:11:53でもそのうちに使える場面と使いにくい場面がわかるようになってくる。
知ってるもののうち、その場で一番使えるものがどれかをうまく選べるようになれればいいのさ。
0715デフォルトの名無しさん
2005/05/08(日) 03:16:43まあ、そうだが。
可読性を重視したときに、同僚が使い慣れないテンプレートを使うという
選択肢が果たして残っているかどうかは疑問ではあるがな。
0716デフォルトの名無しさん
2005/05/08(日) 03:17:04その先にSTLやらboostみたいな世界が広がってたわけさ。
0717デフォルトの名無しさん
2005/05/08(日) 03:20:29>しかし、一方で技術に振り回されてしまっている人間もいるな。
>このスレの人間みたいに。
今のところ、このスレの人間が技術に振り回されているということを
示す話は出ていないように思うのだが。
どうしてちゃんとした議論もせずにそんなことが言えるのだろうか。
ttp://www.shos.info/develop/oo/dscsnptn.html#hastily
2chにまともな議論を期待する方が間違ってる?
0718デフォルトの名無しさん
2005/05/08(日) 03:22:31・・・
単にデストラクタが呼ばれる前にjoin()呼べってだけで
scoped_ptrは関係ないだろ。それは。
0719デフォルトの名無しさん
2005/05/08(日) 03:40:05俺は
〜も知らない=レベルが低い
的な発言(>>698みたいなの)を取って言ったんだけど?
0720698
2005/05/08(日) 03:50:48>696-697の流れを受けて、テンプレートを使わないの職場はダメっぽいと言いたいだけ。
そんな職場でも知ってる香具師はいるだろうし、
使えなくても高レベルなプログラムを書く香具師もいるだろう。
ダメな技術者は知識の有無やレベルの高低に関わらずダメだと思うがそれは別の話だ。
余計なお世話だったか。
0721デフォルトの名無しさん
2005/05/08(日) 03:59:15そう?>>698の文章はとてもそうは読め無かったよ。
後から発言の軌道修正するのも限界があると思うよ。
0722デフォルトの名無しさん
2005/05/08(日) 04:01:08今更、>>698がどういうつもりだったかなんて大して重要じゃないけど。
0723デフォルトの名無しさん
2005/05/08(日) 04:56:07>>705がテンプレートに振り回された意見を言ってますよ
もろに設計に影響を与えているそうです
0724デフォルトの名無しさん
2005/05/08(日) 10:03:23プログラミング言語C++のp397、真ん中のへんのコード
max(2.7, 4); //max(2.7, double(4))
というのは間違いですよね?
max(double, int)があるんだからそっちが呼ばれると思うんですが。
というより実際に作ってみたらこっちが呼ばれたんですが。
0725デフォルトの名無しさん
2005/05/08(日) 10:21:410726デフォルトの名無しさん
2005/05/08(日) 10:40:580727デフォルトの名無しさん
2005/05/08(日) 11:01:39「STLやデザインパターンを使いこなしている⇒ 最強の将棋AIを書ける人 ∧ 最強のレンダリングエンジンを書ける人」
という命題が真ならば、おまえの話を聞いてやろう。
STLってそんな高度なプログラムか?俺はSTLの存在を認識する以前から似たようなライブラリを発明していたぞ。
ニコラウス・ヴィルト+ジェネリック思想程度を持ってりゃ一般的に行き着くとこだろ?
つまり今時、CS系大学卒業までに習う程度の基礎的知識だよ。
「STLを知っている」ことがおまえのアイデンティティか?
そしてそれは他の技術者を卑下する十分必要条件だとでも思っているのか?
だとしたらそれは極めて低レベルな脳だということを指摘しておこう。
0728デフォルトの名無しさん
2005/05/08(日) 11:06:15そんなことあるのかという気もしますけど、でもそういう感じの理由なんでしょうか。
原著のでも訳書のでも正誤表に載ってなかったんで少し不安だったんですが、
安心しました。ありがとうございます。
>>725
ちょっと好き
0729デフォルトの名無しさん
2005/05/08(日) 11:06:460730デフォルトの名無しさん
2005/05/08(日) 11:20:240731デフォルトの名無しさん
2005/05/08(日) 11:20:52今日は涼しいからそういうのも大人しいと思ったのに。
0732デフォルトの名無しさん
2005/05/08(日) 11:26:14これは、maxの多重定義の中で、max<int>() と max<double>() のどちらを
どのように呼び出しているかを、問題にしていると思われ
0733デフォルトの名無しさん
2005/05/08(日) 11:26:270734デフォルトの名無しさん
2005/05/08(日) 11:34:52 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄」
―――――――――――――‐┬┘
|
____.____ |
| | | |
| | | |
| | | |
| | | |
 ̄ ̄ ̄ ̄' ̄ ̄ ̄ ̄ | ミ
|
ミ ∧_∧
( ´Д`)
⊂ つ
/ / /
し' し
0735( ゚д゚)ウッウー
2005/05/08(日) 11:39:430736デフォルトの名無しさん
2005/05/08(日) 12:09:38テンプレートに振り回されてるなって思う。
0737デフォルトの名無しさん
2005/05/08(日) 12:11:100738デフォルトの名無しさん
2005/05/08(日) 12:12:43またそれか、と思ってしまった。
0739デフォルトの名無しさん
2005/05/08(日) 12:13:12言語の機能のせいにすれば、気が晴れるんだろう。
機能の限られた言語で失敗したら自分のせいだから、
本当は助かってんじゃないのかな、言語のせいにできて。
0740デフォルトの名無しさん
2005/05/08(日) 12:14:49とにかくスレを端から全部荒らして回るのを止めろ
さっさと引き篭もれよバカ
0741デフォルトの名無しさん
2005/05/08(日) 12:14:510742デフォルトの名無しさん
2005/05/08(日) 12:18:33何?
自分と違う意見の人を同一人物だと思うのは辞めたほうがいいよ。
俺も起爆剤なだけで後は勝手に議論が進むことのが多いし。
0743デフォルトの名無しさん
2005/05/08(日) 12:21:16板人口が極端に少ない掲示板(ぷぷぷ
0744デフォルトの名無しさん
2005/05/08(日) 12:23:560745デフォルトの名無しさん
2005/05/08(日) 12:44:25> 自分と違う意見の人を同一人物だと思うのは
君の妄想はある意味おもしろいです。
0746デフォルトの名無しさん
2005/05/08(日) 12:48:230747デフォルトの名無しさん
2005/05/08(日) 13:18:15サンプルコードの断片に過ぎない事が
理解できていない痛い香具師
0748705
2005/05/08(日) 13:29:15パワフルな機能を使いこなせないからと言って、機能そのものを否定する
のはな……べつにテンプレートが使いこなせないからと言ってSTL自体が
使いこなせないわけじゃないだろうに。
>713
テンプレートには「安全にGenericsを実現する」という設計理念がありますが。
『C++の設計と進化』でも「テンプレートのルーツは、コンテナクラスに入れるものの
タイプをパラメータ化したい、という願望だ」とありますな。
>723
もろに設計に影響を与えておりますが……STL
0749デフォルトの名無しさん
2005/05/08(日) 13:48:360750デフォルトの名無しさん
2005/05/08(日) 14:55:24つか、独り言多いよ。
0751デフォルトの名無しさん
2005/05/08(日) 15:32:55また占い師みたいなことを。
痛いとか言うあたり、ほんとにショックだったみたいだな
0752デフォルトの名無しさん
2005/05/08(日) 15:59:25http://namazu.org/~satoru/blog/archives/000021.html
0753デフォルトの名無しさん
2005/05/08(日) 16:02:30→ダウンキャストを使い始める→
→理解できないコード
0754デフォルトの名無しさん
2005/05/08(日) 16:10:38テンプレートを使わないとダウンキャストを使わなきゃいけない設計が腐ってる。
そもそも設計が腐ってるのにテンプレートで辻褄を合わせようとする
その姿勢を修正した方がいいということに気が付かないのがあまりにもマヌケでFA
0755デフォルトの名無しさん
2005/05/08(日) 16:17:21ダウンキャストをテンプレートで回避するケースって、どんなの?
0756デフォルトの名無しさん
2005/05/08(日) 16:19:26そんな腐った設計する奴の頭の中は理解しないほうがいいぞw
まさに馬鹿がうつるw
0757デフォルトの名無しさん
2005/05/08(日) 17:39:11{
D() : B(*this) {} //こういうのは?
};
0758デフォルトの名無しさん
2005/05/08(日) 17:41:500759デフォルトの名無しさん
2005/05/08(日) 17:43:07あー!もう!わかれよ!馬鹿!
ってのが>>757の仕事の進め方だから何言っても無駄w
0760デフォルトの名無しさん
2005/05/08(日) 17:45:230761( ゚д゚)ウッウー
2005/05/08(日) 17:49:42( ゚д゚)ウッウー
0762デフォルトの名無しさん
2005/05/08(日) 17:50:270763デフォルトの名無しさん
2005/05/08(日) 17:53:35 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄」
―――――――――――――‐┬┘
|
____.____ |
| | | |
| | | |
| | | |
| | | |
 ̄ ̄ ̄ ̄' ̄ ̄ ̄ ̄ | ミ
|
ミ ∧_∧
( ´Д`)
⊂ つ
/ / /
し' し
0764デフォルトの名無しさん
2005/05/08(日) 17:55:000765デフォルトの名無しさん
2005/05/08(日) 18:08:40マルチバイトでstd::stringでもワイドでstd::wstringでも
お好きなように
0766デフォルトの名無しさん
2005/05/08(日) 18:17:38テンプレートの使用が禁止されるのはよくある。
しかしアセンブラも分からないバカが多いのに
アセンブラは禁止されることは無いのはなぜだろう?
0767デフォルトの名無しさん
2005/05/08(日) 18:22:48そりゃお前、CPUID命令を使いたきゃそれっきゃねぇからだろ。
0768デフォルトの名無しさん
2005/05/08(日) 18:29:12そりゃ、発言力の大きなロートルさんの好みでしょ。古い人は
アセンブラは出来るから。
0769デフォルトの名無しさん
2005/05/08(日) 20:17:51コンテナの話だろ?
テンプレートも使わず、javaとかみたくダウンキャストも使わずに
どうやってコンテナを作るのか知りたい。
0770755
2005/05/08(日) 20:36:53なるほど。そういうことか。
じゃぁ std::qsort と std::sort も当てはまるな。
ということは >754 は
「アルゴリズムを、データ型とは分けて部品化したい」
という姿勢を修正すべきだと考えていることになるのか?
どう修正すれば良いのかさっぱりわからんな。
0771デフォルトの名無しさん
2005/05/08(日) 21:33:16#define DEFINE_VECTOR(VECTORNAME,TYPE) \
class VECTORNAME { ... }
DEFINE_VECTOR(int_vector, int);
DEFINE_VECTOR(voidp_vector, void*);
・
・
・
0772769
2005/05/08(日) 21:38:58テンプレートより優れてるところってあるのかな?
というか基本的にやってることは一緒だよね。
可読性がいいとも思えないし。
もっとよい答えがほしい。>>754の降臨に期待。
0773デフォルトの名無しさん
2005/05/08(日) 21:40:510774デフォルトの名無しさん
2005/05/08(日) 21:49:58基底クラスから派生クラスへのキャストをダウンキャストと呼ぶ
これはいいよな?
基本的に基底クラスから派生クラスのキャストなんてしたら危ないじゃん。
やるなよ。やらなくていい設計にしろよ。
0775デフォルトの名無しさん
2005/05/08(日) 21:59:00> やらなくていい設計にしろよ。
アルゴリズムの汎用化は、やるなって結論で OK?
0776デフォルトの名無しさん
2005/05/08(日) 22:03:00いや、問題が出ずにできるならそれでいいけどさ。
この場合って設計がキタネェから起きる問題だろ?
0777デフォルトの名無しさん
2005/05/08(日) 22:06:20一番大本になる基底クラスのポインタを格納するコンテナを一個作るぐらいしか
あまりいい方法が無い
(そういうクラスがあるという前提な、Javaはそうなっていたような・・・)
それで、コンテナから取り出したポインタは基底クラスのポインタになるから
dynamic_castで目的のクラスにダウンキャストしてから使うと
0778デフォルトの名無しさん
2005/05/08(日) 22:15:39>dynamic_castで目的のクラスにダウンキャストしてから使うと
これ、設計がまずい。
そもそもまとめるべきでないものをまとめてしまっている。
汎用性を求めるあまりに言語で「やるな」と言われてるもんの
制限までとっぱらってしまってお前等は何がやりたいんだ?
そんなに汎用性がほしけりゃ全部void*で運用すりゃいいじゃん。
なんのために型があるのかすっかりわすれてしまっている。
テンプレートに振り回されてるいい例だな。
0779デフォルトの名無しさん
2005/05/08(日) 22:21:48テンプレートを使えば、そんなことしなくていいけど
テンプレートを使わないで、同じような利便性を得ようとすると
そうなるっていってるだけやん
別に配列と、new Hoge[] だけで、全部やれば問題ないよ
それがイヤなだけで
0780デフォルトの名無しさん
2005/05/08(日) 22:23:02要するに設計が腐ってるのをテンプレート使って誤魔化してるんだろ?
0781デフォルトの名無しさん
2005/05/08(日) 22:24:530782705
2005/05/08(日) 22:27:27汎用のコンテナを設計するときに
・設計の段階で決定できるもの:アルゴリズム
・設計の段階で決定できないもの:格納するオブジェクトの型
つうことなんだけど、C++の場合、テンプレートとマクロ以外には(777の通り)
型を決定せずにアルゴリズムを構築することはできないんよ。
……やっぱりModern C++ Design よめ。訳者まえがきから一章まででいいから。
0783デフォルトの名無しさん
2005/05/08(日) 22:27:42せっかくいい番号踏んだんだからバカはスルーしる
0784デフォルトの名無しさん
2005/05/08(日) 22:29:08だから、やるなっつーに。
0785デフォルトの名無しさん
2005/05/08(日) 22:30:10インターフェースをまとめられないの?って思うコードもちらほら
0786デフォルトの名無しさん
2005/05/08(日) 22:31:410787デフォルトの名無しさん
2005/05/08(日) 22:33:320788769
2005/05/08(日) 22:33:59void*使った方が危険な方な気がするが。
void* からの static_cast と
dynamic_cast を使ったダウンキャストで、
危険なのは明らかに前者だが(後者は失敗したことがわかるから)。
そもそもdynamic_castは言語として「やるな」なんて言われていない。
そして、>>779で指摘されているように
テンプレートを使った場合は上の問題は起こらない。
なぜなら、>>778のいっている
>そもそもまとめるべきでないものをまとめてしまっている
ということがそもそも起きていないから。
というか、>>778で言っている汎用性っていうのは
javaにあるような共通の基底クラスによってもたらされるものであり
C++のテンプレートによってもたらされるものとは全く違う。
まずそこをはっきりさせてから議論を展開してほしい。
>>780
人の話はもう少ししっかり聞いた方がいい。
だから荒れるんだ。
0789728
2005/05/08(日) 22:34:10あ…っ。分かりました…。ストラウストロゥェプ先生はつまり、
最終的にmax(2.7, 4)というコードにはmax<double>が適用されるのだ、
ということが言いたかったんですね。
max(double,int)とかの関数宣言(定義)は、どうせインライン化されるからそんなに意味はないと。
ありがとうございました。
0790デフォルトの名無しさん
2005/05/08(日) 22:34:36必要なものを強引に押し切るというならvoid*とどう違うのか説明キボン。
0791デフォルトの名無しさん
2005/05/08(日) 22:37:41俺はこれが誤魔化しにみえちゃうんだよね。
設計の悪さに目を向けないであえて強引に突っ切っちゃうあたりが。
0792デフォルトの名無しさん
2005/05/08(日) 22:38:41型の制限があてにならないから可読性も当然下がるしね。
0793デフォルトの名無しさん
2005/05/08(日) 22:39:17なにせ、ここでは誰も何にも設計などしていないんだw
設計が悪いといわれても、何のことやら
0794デフォルトの名無しさん
2005/05/08(日) 22:39:25>790
『必要なものを強引に押し切る』というのが何なのかわからんが、
テンプレートとvoid*じゃ型安全性が全然違いますがな。
そんなに未定義の領域に突っ込みたいのか?
>791-792
だからテンプレート使えと。
0795デフォルトの名無しさん
2005/05/08(日) 22:42:470796デフォルトの名無しさん
2005/05/08(日) 22:42:53これは個人の感覚にゆだねるしかないからね。
できちゃえばOK。エラーがでなけりゃそれでよしとするならいいんじゃないの。
俺がこだわるのは型の制限かな。
関数の引数から基底のクラスがよばれていたとしても
それは皮を被ったオオカミで中ではちゃっかり派生が呼ばれてるとかいう、
ある意味グローバル変数みたいな問題が起きちゃうからね。
俺はこういうのを絶対許さない性質でね(のちのち問題がおきるのわかってるから)
0797デフォルトの名無しさん
2005/05/08(日) 22:45:47別にそれでプログラム組めるけどさ
0798デフォルトの名無しさん
2005/05/08(日) 22:48:57はじめは使ってたんだけど。
バグが出たとき結構これで苦しんでね。
今は多分使ってない。
よく考えたら必要無いことに気づいた。
使っても大して楽にもならんし。
問題でると地獄だし。
0799デフォルトの名無しさん
2005/05/08(日) 22:49:11型の制限こそテンプレートの最大のメリットだと思うのだが。
0800デフォルトの名無しさん
2005/05/08(日) 22:51:18めでたく解散
0802デフォルトの名無しさん
2005/05/08(日) 22:52:08マクロでもそうだが。
デバグ困難
0803デフォルトの名無しさん
2005/05/08(日) 23:11:05テンプレートを使うと、しばしばテンプレート関数の中や、
クラステンプレートのメソッドの中でコンパイルエラーが出てしまうのもこまりものだ
しかも、やたらに下位の関数の中でコンパイルエラーが出たりする
0804デフォルトの名無しさん
2005/05/08(日) 23:12:14>中ではちゃっかり派生が呼ばれてるとかいう
?
派生で新たに実装された内容で処理されたら問題が起きる
設計の方が問題じゃないのか?
0805デフォルトの名無しさん
2005/05/08(日) 23:27:45何でC++なんて使ってるの?
名前空間が使いたいから?
0806デフォルトの名無しさん
2005/05/08(日) 23:29:250807デフォルトの名無しさん
2005/05/08(日) 23:31:110808デフォルトの名無しさん
2005/05/08(日) 23:35:08お前にとってのC++はそれがすべてかw
0809デフォルトの名無しさん
2005/05/08(日) 23:38:40図星で悔しいの?w
0810デフォルトの名無しさん
2005/05/08(日) 23:40:32なんの脈絡もないこと言われてもねw
0811デフォルトの名無しさん
2005/05/08(日) 23:43:23const_castでiteratorに出来ない件について。
0812デフォルトの名無しさん
2005/05/08(日) 23:49:440813デフォルトの名無しさん
2005/05/09(月) 00:25:120814デフォルトの名無しさん
2005/05/09(月) 00:29:130815デフォルトの名無しさん
2005/05/09(月) 00:29:190816デフォルトの名無しさん
2005/05/09(月) 00:30:35理由書いてあるじゃんww<馬鹿だから
0817デフォルトの名無しさん
2005/05/09(月) 00:34:21そういう方向でスレを埋めるのは荒らしじゃないの?
0818通りすがり
2005/05/09(月) 00:35:52今日書いてんの、全部荒しでしょ。
0819デフォルトの名無しさん
2005/05/09(月) 00:36:56恐れ入りました
0820通りすがり←免罪符
2005/05/09(月) 00:44:39おれは構文(せめて{ 〜 }ブロック)もテンプレートに入れてほしかった。
boost::lambdaとか書いてて惨め過ぎる。
0821デフォルトの名無しさん
2005/05/09(月) 01:24:41他スレでやれば?
0822デフォルトの名無しさん
2005/05/09(月) 01:32:302パラメータ以上とるテンプレートの特殊化
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;}
出来ない理由がわからん。
0823デフォルトの名無しさん
2005/05/09(月) 01:33:26こっちだこっち↓
BOOSTを語れゴラァ
http://pc8.2ch.net/test/read.cgi/tech/1091198276/l50
0824デフォルトの名無しさん
2005/05/09(月) 02:23:10ラディカルにガベージコレクションをサポートすべきじゃないか?
GC用コンテナとグローバルなリンクリストが一つあれば何とかなると思うが。
0825デフォルトの名無しさん
2005/05/09(月) 02:27:430826デフォルトの名無しさん
2005/05/09(月) 02:55:260827デフォルトの名無しさん
2005/05/09(月) 02:57:09必然的にFire and forget である方向に向かうだろうしそうすべきであると殆どの人が同意すると思われる。
現状ではまったくフェイルセーフじゃないもんね。
0828デフォルトの名無しさん
2005/05/09(月) 05:34:34std::set<CHoge> hoge;と宣言したときに
hoge.find()の引数にCHoge以外の型の変数を渡すことはできないのでしょうか?
CHoge::operator<()をオーバロードしてみたりしたのですが、
うまくいかなくて…。
0829デフォルトの名無しさん
2005/05/09(月) 06:08:00Windowsだとメモリリーク検出関数みたいなのあるじゃん。
あれで0%にできるよ。
0830デフォルトの名無しさん
2005/05/09(月) 06:52:07> メモリリークが0%なんて、小規模システムならともかく、人間業ではないわけだから、
サーバサイドのプログラムを C/C++ で行ってる人間なんて
ザラにいるわけだが……。
0831デフォルトの名無しさん
2005/05/09(月) 07:05:53リークするのは大抵使い方間違ってるとき。
COMでのリークなんかはその典型。
つまり設計が悪い。
0833デフォルトの名無しさん
2005/05/09(月) 11:07:58クラステンプレートなら可能。
関数テンプレートの場合はオーバーロードとの兼ね合いがあるので難しい。
どうしてもやりたいのなら、クラステンプレートの部分特殊化を用い
そのクラスのstaticメンバ関数を使うなどで対応は可能。汚くなるが安全。
0834デフォルトの名無しさん
2005/05/09(月) 14:20:24MSのtoolkit2003のclではうまくいくのですがボーランドのbcc32でコンパイルした場合、見つからない場合でもend()にならないのですが
0835デフォルトの名無しさん
2005/05/09(月) 14:35:40んな馬鹿な
0836デフォルトの名無しさん
2005/05/09(月) 14:43:470837デフォルトの名無しさん
2005/05/09(月) 15:18:09ソース上げろ。見てやるから。
0838デフォルトの名無しさん
2005/05/09(月) 16:12:17ガベージコレクション
ガベージコレクション
0839デフォルトの名無しさん
2005/05/09(月) 17:46:51素人投稿学園コレクション
SMマニアックコレクション
0840デフォルトの名無しさん
2005/05/09(月) 19:12:47CHogeから派生した型のインタスタンスなら
0841デフォルトの名無しさん
2005/05/09(月) 21:51:16なるほど!一つ勉強になりました。
とりあえず今日一日考えて、setではなくmapを使うことにしますた(つД`)
0842デフォルトの名無しさん
2005/05/09(月) 22:29:45ボインタで格納して、使用後に一個つづつdeleteしてくしかないんじゃなかったっけ?
0843デフォルトの名無しさん
2005/05/09(月) 22:35:590844デフォルトの名無しさん
2005/05/09(月) 22:41:58>>828を十回読み返したがそのとうりだったぞ!
ぬるぽ
0845デフォルトの名無しさん
2005/05/10(火) 01:17:080846デフォルトの名無しさん
2005/05/10(火) 09:54:20ゴリッ
0847デフォルトの名無しさん
2005/05/10(火) 10:09:260848デフォルトの名無しさん
2005/05/10(火) 10:26:31http://www.amazon.co.jp/exec/obidos/ASIN/4894714329/
これ読んだから間をおかずに、
Effective STL−STLを効果的に使いこなす50の鉄則
http://www.amazon.co.jp/exec/obidos/ASIN/4894714108/
後者は初心者向けじゃないけど、罠にはまる前に持っておいた方がいい。
前者を読んだときの疑問点にも答えてくれる。
0849デフォルトの名無しさん
2005/05/10(火) 18:25:36部分特殊化と条件演算子
0851デフォルトの名無しさん
2005/05/10(火) 22:59:20スマソ
俺の脳内コンパイルは通ったがBCC32は通らなかった。
template<uint_t N>
class factorial
{
static const uint_t Val = N ? N * factorial<N - 1>::Val : 0;
};
0852デフォルトの名無しさん
2005/05/10(火) 23:09:29template<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;
}
0853デフォルトの名無しさん
2005/05/10(火) 23:15:35条件演算子は3項のa ? b : cの演算子のこと。
0854デフォルトの名無しさん
2005/05/11(水) 01:51:40意味がわかるまで5分かかったよ。
一般的な話としてだけど、<false, R, T>のような特殊化してまでクラス名を同じにする理由がわからん。
0855デフォルトの名無しさん
2005/05/11(水) 05:29:16デザパタの存在すら知らない人が、何も知らずにこんなソースコード読んで理解できるのか?
偏執的デザパタだらけのフレームワークを使っている会社に間違って就職したら(そんな会社があったら)、
三日で辞めます。
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
(↑適当)とかやられたらもう気が狂うし。
0856デフォルトの名無しさん
2005/05/11(水) 05:53:110857デフォルトの名無しさん
2005/05/11(水) 05:59:46お前はデザパタに難癖付ける前に、
templateの綴りくらい正確に書けるようにしとけ。
次にtemplateのコード例を正確に書けるようになってから、
Modern C++ Design嫁。
頭悪過ぎ(・∀・)
0858デフォルトの名無しさん
2005/05/11(水) 08:27:21じゃあadobeに入社はやめとけよ
0859デフォルトの名無しさん
2005/05/11(水) 09:17:200860デフォルトの名無しさん
2005/05/11(水) 11:08:36templateの文法/意味に慣れてないだけだろ。
もう少し慣れ親しんでから読めばすんなり理解できるはず。
それから、デザインパターンに付いての予備知識はまったく必要ないと思う。
本文中で解説されてるし。
0861デフォルトの名無しさん
2005/05/11(水) 11:47:150862デフォルトの名無しさん
2005/05/11(水) 12:03:32typdefとデフォルト引数展開されたら
std::map<std::string,std:;string>程度でも鬼みたいな型になるしな。
0863デフォルトの名無しさん
2005/05/11(水) 20:21:04よく最適化されたCコンパイラで十分
0864デフォルトの名無しさん
2005/05/11(水) 20:23:23Cでオブジェクト指向で十分
0865デフォルトの名無しさん
2005/05/11(水) 20:32:49よく最適化されたK&R Cで十分
0866デフォルトの名無しさん
2005/05/11(水) 20:39:53あれはプリプロセッサで構文糖つくるのが面白いだけ。
プリプロなしでオブジェクト指向書くのは、苦痛以外のなにものでもないし、
まして他の人にメンテ任すのも困難。
つまり、「言語自体がオブジェクト指向をサポートしている事が重要」 (Robert Meyer)なんだよ
0867デフォルトの名無しさん
2005/05/11(水) 20:46:030868デフォルトの名無しさん
2005/05/11(水) 20:50:00ほー。もっと具体的に。
「Fortran77で、並列計算機用に、しかもオブジェクト指向もどきで書かされた自分」には、
「C++は幾分マシなマルチパラダイム言語」ですが何か?
0869デフォルトの名無しさん
2005/05/11(水) 20:50:47これはオブジェクト指向とは相反する概念。
C++は無理矢理テンプレートを組み込まれたせいで、
恐ろしく中途半端な物体になった。なにこれ?
BOOSTのような奇形ライブラリを喜んで使う奴は基地外と言える。
0870デフォルトの名無しさん
2005/05/11(水) 20:55:10C++の設計は失敗だったということだね。
0871デフォルトの名無しさん
2005/05/11(水) 21:05:140872デフォルトの名無しさん
2005/05/11(水) 21:05:49別の概念が複雑に入り組みすぎてるし。なんだろうね。
俺が思ってるC++がCに勝ってる利点てautoデストラクタの存在ぐらい。
Cでfinallyが使える処理系ならそっちで組んだ方がむしろ保守しやすい。
0873デフォルトの名無しさん
2005/05/11(水) 21:11:480874デフォルトの名無しさん
2005/05/11(水) 21:29:03C++をオブジェクト指向言語として考えるから駄目なんだよ。
オブジェクト指向プログラミング「も」できるようになっている言語として思っておけばいい。
0875デフォルトの名無しさん
2005/05/11(水) 21:36:56せめて許せる程度に面白い話をしろ。
0876デフォルトの名無しさん
2005/05/11(水) 22:51:46相反する概念じゃなくて、直交する概念なんだけど……
『テンプレート使ったらオブジェクト指向が使えなくなりました』つうわけでもないだろうに。
相反するのはむしろテンプレートとマクロのような気がします。
0877デフォルトの名無しさん
2005/05/11(水) 23:05:18楽しみにしておけ。
0878デフォルトの名無しさん
2005/05/11(水) 23:06:280879デフォルトの名無しさん
2005/05/11(水) 23:06:510880デフォルトの名無しさん
2005/05/11(水) 23:09:46テンプレート厨房になっちまった人は、テンプレートをしばらく禁止にしてみるとか
して組んでみる期間を作ったほうがいいよ。
知らずのうちにテンプレートを使うことばっかりに固執してオブジェクト指向で
考えること辞めちゃってるとかホント致命的だから。
それとは別にオブジェクト指向を覚えられないからテンプレートばっかり凝ってるって人
ほんとにいるから怖いよ。
0881デフォルトの名無しさん
2005/05/11(水) 23:14:05でも、STLっていう道具は上手に使うと便利だよね。
0882デフォルトの名無しさん
2005/05/11(水) 23:15:400883デフォルトの名無しさん
2005/05/11(水) 23:17:380884デフォルトの名無しさん
2005/05/11(水) 23:21:23ふつー、そう思ってるだろう。
テンプレートもOOPっぽい部分も、Cの拡張の一部。
>>875
どうせ重複スレの使い回しだ。気にすんな。
0885デフォルトの名無しさん
2005/05/11(水) 23:24:46OO厨房になっちまった人は、OOをしばらく禁止にしてみるとか
して組んでみる期間を作ったほうがいいよ。
知らずのうちにOOを使うことばっかりに固執してMixInで
考えること辞めちゃってるとかホント致命的だから。
それとは別にtemplateを覚えられないからOOばっかり凝ってるって人
ほんとにいるから怖いよ。
0886デフォルトの名無しさん
2005/05/11(水) 23:26:400887デフォルトの名無しさん
2005/05/11(水) 23:27:47OO乱用→普通
0888デフォルトの名無しさん
2005/05/11(水) 23:29:220889デフォルトの名無しさん
2005/05/11(水) 23:30:160890デフォルトの名無しさん
2005/05/11(水) 23:30:330891デフォルトの名無しさん
2005/05/11(水) 23:33:230892デフォルトの名無しさん
2005/05/11(水) 23:35:050893デフォルトの名無しさん
2005/05/11(水) 23:36:02C++の「オブジェクト指向」部分なんてごく一部でしかないのにいつもそれが強調される
0894デフォルトの名無しさん
2005/05/11(水) 23:36:35まあ聞き流してやってくれ。
0895デフォルトの名無しさん
2005/05/11(水) 23:37:220896デフォルトの名無しさん
2005/05/11(水) 23:40:36>>895 はこのスレ入る資格がある
>>1-894 は立ち入り禁止
>>896- は未定義だ
0897禁止でいいよ!
2005/05/12(木) 00:09:53> そもそもテンプレートは関数型から派生した物であり、
はあ?
オペレータオーバーロード、関数多重定義が、
generic functionから来たって事を言いたいわけ?
クラステンプレートは関数型とは何の関係もないよ。
0898デフォルトの名無しさん
2005/05/12(木) 00:18:38マクロの延長はマクロの延長らしく使えってことだな。
0899デフォルトの名無しさん
2005/05/12(木) 00:23:08もしかして『関数プログラミング』の間違いでしょうか……
0900デフォルトの名無しさん
2005/05/12(木) 00:23:580901デフォルトの名無しさん
2005/05/12(木) 00:39:380902デフォルトの名無しさん
2005/05/12(木) 00:40:29C++言語の標準テンプレートライブラリ。C++でプログラミングを行なう際によく使う汎用的な
データ構造やアルゴリズムを、利用しやすい形でまとめたもの。
1992年にHewlett Packerd社のAlexander Stepanov氏、Rensellaer工科大学の
David Musser教授らのグループによって考案され、 1994年にANSI/ISO標準C++ライブラリの一部として採択された。
STLに限っては別にオブジェクト指向に基づいてとかそんな考えはなさそうだな。
あくまでもよく使う汎用的なデータ構造やアルゴリズムを利用しやすい形でまとめたもの。
0903デフォルトの名無しさん
2005/05/12(木) 00:41:10そりゃもうこの板には厨房しかいませんから!
0904デフォルトの名無しさん
2005/05/12(木) 00:43:04あいやー。
C++はオブジェクト指向言語だから、オブジェクト指向でプログラムを組むために生まれた言語よ。
みんながC++を叩くのは、オブジェクト指向でなくても組めてしまうってとこよ。
0905デフォルトの名無しさん
2005/05/12(木) 00:49:330906デフォルトの名無しさん
2005/05/12(木) 01:04:230907デフォルトの名無しさん
2005/05/12(木) 01:17:58総称プログラミング(テンプレート) → 朝起きて、何だかよくわからない乗り物に乗る。
何だかよくわからないが体がものすごいスピードでバラバラになりつつ目的地で本来の姿へもどる。
次の日の朝は、それとはべつの何だか名状しがたいことがおきてやはり目的地に着く。
0908デフォルトの名無しさん
2005/05/12(木) 01:32:10全然わからん例えでワラタヨ
0909デフォルトの名無しさん
2005/05/12(木) 01:48:140910デフォルトの名無しさん
2005/05/12(木) 12:37:29高階の論理を「なんだかわからない」と感じる人が結構いるのは確かだから、
通常のコーディングからそこらへんを排除した Java や C# にも妥当性は
あるんでしょうね。
どうしても必要なときには、十分解っている人がリフレクションやバイトコードの
自動書き換えとかで実装すれば良いわけだし。
0911デフォルトの名無しさん
2005/05/12(木) 12:42:10バイトコード編集ね
0912デフォルトの名無しさん
2005/05/12(木) 19:33:24generics入ってるじゃん!> Java,C#
0913デフォルトの名無しさん
2005/05/12(木) 19:58:19m9(^Д^)プギャー
0914デフォルトの名無しさん
2005/05/12(木) 20:19:09「総称」は直訳なわけだけれども、「汎用」がより適切だと思うが。
しかし、「内包⇔外延」関係の意味での「総称」
であるならばありだと思うけれども、判りにくいよな。
0915デフォルトの名無しさん
2005/05/12(木) 20:37:160916デフォルトの名無しさん
2005/05/12(木) 20:40:210917デフォルトの名無しさん
2005/05/12(木) 20:41:260918デフォルトの名無しさん
2005/05/12(木) 20:43:53俺の仕事は金とほとんど無縁だからなぁ。
0919デフォルトの名無しさん
2005/05/12(木) 20:47:41generics は template の持つ機能のホンの1部だし、
generics を「なんだかわからない」と感じる人は少ないと思う。
C++ の template は、通常のコードの1階層上のレベルで(文法はアレだが)
完全な記述能力を持ってるとこに難しさがあるわけで。
(んでもLISPのマクロを「難しい」と感じる人はいないわけだから、
もしかすると単純に「文法がアレ」ってのが問題なのかも知れない)
0920デフォルトの名無しさん
2005/05/12(木) 20:49:34・Lispの総称関数
・C++のSTLで総称
・Java Genericで代入キャストを自動補完(w
0921デフォルトの名無しさん
2005/05/12(木) 20:50:29そーか?
0922デフォルトの名無しさん
2005/05/12(木) 20:51:20糞パラダイムをいかにも新しいものかのように言うのは止めてほしいな、と思った。
0923デフォルトの名無しさん
2005/05/12(木) 20:53:16〜を感じる人はいない というレスに対して感じる人が一人でもいたら成り立たない、という論理になるわけだから、不利な論理だと思うよ。
0924デフォルトの名無しさん
2005/05/12(木) 20:56:15・古代の言語は備えていたが、過去の進化で消えちゃってた機能が洗練された形で復活した
からウリになるわけで
0925デフォルトの名無しさん
2005/05/12(木) 21:04:100926デフォルトの名無しさん
2005/05/12(木) 21:16:07長足の進歩と言えるが
0927デフォルトの名無しさん
2005/05/12(木) 21:35:57そだね。
でも perl 厨にも eval を難しいと感じてる奴はいなそうなわけだから・・・
0928デフォルトの名無しさん
2005/05/12(木) 21:40:360929デフォルトの名無しさん
2005/05/12(木) 23:39:240930デフォルトの名無しさん
2005/05/12(木) 23:46:55俺様に一から全てを教えてください。
0931デフォルトの名無しさん
2005/05/13(金) 00:11:020932デフォルトの名無しさん
2005/05/14(土) 11:38:000933デフォルトの名無しさん
2005/05/15(日) 11:38:45【C++】STL(Standard Template Library)相談室 3
http://pc8.2ch.net/test/read.cgi/tech/1065535118/l50
0934デフォルトの名無しさん
2005/05/15(日) 11:53:35そのスレはさ、ただ「次スレ」とだけ書いて貼ることに意味があるんだよ。
偽のスレタイを書いたら、それはただの「嘘」だろ?
0935デフォルトの名無しさん
2005/05/15(日) 12:10:240936デフォルトの名無しさん
2005/05/15(日) 12:27:49どうもこのスレにはあんちが住み着いているようですね
なんと言われようと次スレは作ります。
0937デフォルトの名無しさん
2005/05/15(日) 12:40:08読解力低いなぁ
0938デフォルトの名無しさん
2005/05/15(日) 12:43:270939デフォルトの名無しさん
2005/05/15(日) 13:24:06STLはスレッドセーフではないのでしょうか?
0940デフォルトの名無しさん
2005/05/15(日) 13:47:16実装による。各実装のドキュメントを参照せよ。
0941デフォルトの名無しさん
2005/05/15(日) 15:49:50>テンプレートライブラリ(STL含む)に関する質問は
>専用の別スレにお願いします。
となっていることを解決してから言え
0942デフォルトの名無しさん
2005/05/15(日) 16:19:140943デフォルトの名無しさん
2005/05/15(日) 16:23:13何がどう解決していないのかさっぱりなんだが。
0944デフォルトの名無しさん
2005/05/15(日) 16:31:18http://pc8.2ch.net/test/read.cgi/tech/1101384692/l50
0945デフォルトの名無しさん
2005/05/15(日) 16:36:370946デフォルトの名無しさん
2005/05/15(日) 16:38:52http://pc8.2ch.net/test/read.cgi/tech/1104898734/945
0947デフォルトの名無しさん
2005/05/15(日) 16:46:07じゃあ、C++相談室の次スレが立ったら統合な。
STLの次スレには『統合予定』て書いたら?
0948デフォルトの名無しさん
2005/05/15(日) 17:02:270949デフォルトの名無しさん
2005/05/15(日) 17:27:43http://pc8.2ch.net/test/read.cgi/tech/1065535118/l50
0950デフォルトの名無しさん
2005/05/17(火) 06:30:36生の配列として関数に渡すにはどうすればいいですか?
たとえば vector<unsigned char> bits; を配列として渡したいときに
&bits[0] としたとき、これが正常に動くことは保証されていますか?
0951デフォルトの名無しさん
2005/05/17(火) 07:10:17vector<bool>以外は。
Effective STL 第16,18項
0952デフォルトの名無しさん
2005/05/17(火) 07:53:120953950
2005/05/17(火) 13:36:55vectorのサイズはあらかじめ調べた上で使うので大丈夫です。
0954デフォルトの名無しさん
2005/05/18(水) 07:14:25str_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が返るのは仕様ですか?
0955デフォルトの名無しさん
2005/05/18(水) 07:19:410956デフォルトの名無しさん
2005/05/18(水) 08:19:130957デフォルトの名無しさん
2005/05/18(水) 09:54:55mapクラステンプレートの第三引数のdefaultは、less<Key>。
これを!strcmpするcomparatorに代えてはどうか?
0958デフォルトの名無しさん
2005/05/18(水) 09:58:17根本的な解決にならない悪寒。
0959デフォルトの名無しさん
2005/05/18(水) 10:33:330960デフォルトの名無しさん
2005/05/18(水) 12:31:09>>956
0961デフォルトの名無しさん
2005/05/18(水) 12:38:44解説きぼん
0962デフォルトの名無しさん
2005/05/18(水) 12:57:30mapの外部で文字列の寿命を管理できるなら別に良いと思うけど・・・
0963デフォルトの名無しさん
2005/05/18(水) 12:58:27(´-`)…
0964デフォルトの名無しさん
2005/05/18(水) 13:20:24それができるなら、そもそも>954みたいな質問しない気がする。
0965デフォルトの名無しさん
2005/05/18(水) 14:44:20突っ込んじゃったな。
0966デフォルトの名無しさん
2005/05/18(水) 17:43:32#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]);
}
0967デフォルトの名無しさん
2005/05/18(水) 17:44:48↓
○std::map<char *, int, Less> cl_Bufferin;
まあどっちでも同じなんだが
0968デフォルトの名無しさん
2005/05/18(水) 17:50:34同じじゃないぞ。gccは上のLess()ではエラー。
というか、関数オブジェクトではなくてクラス名を書けって。
0969954
2005/05/18(水) 17:54:11map< 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さんの方法でなら一応動きますが管理の手間が増えますね...。
というわけで、解決です。
0970デフォルトの名無しさん
2005/05/18(水) 18:00:39スマソ。今"Generic Programming"の§8.1.1を見てみたら、そのように
書いてあった。アルゴリズムの比較基準と、テンプレートパラメータに渡す
比較オブジェクトは違うのね。また、叙述関数(boolを返す関数)の場合
でも()は付けちゃだめなのね。
Borlandの糞コンパイラは上の形式でもエラーなしで通すので勘違いしてた。
0971デフォルトの名無しさん
2005/05/18(水) 18:06:07キーにするのってどうよ?
0972デフォルトの名無しさん
2005/05/18(水) 18:09:270973デフォルトの名無しさん
2005/05/18(水) 18:23:37どうでも良いが、Less()はその文脈では「Lessを返す無引数関数」。
0974デフォルトの名無しさん
2005/05/19(木) 21:58:180975デフォルトの名無しさん
2005/05/19(木) 23:55:44STLにもう1階層かぶせたぐらいのものが欲しいんだよね。
ローカルでちょっと使う場面だとそのまんま使ってるけど、
〜の要素を増やしてとか減らしてとか取得してとか設定してとかやってると
どうしてもラッパー作っちゃうよね?
そうなるとvectorやlistも別にあってもなくてもいいかなぁ・・・とか考えちゃったりしてw
(会社じゃ覚えてる人少ないからむやみに使えないしね)
ローカルでちょっと使う場面だとそのまんま使ってるけど、
何か変換かけるたんびに一度固定長の配列に移してstr***系の関数に
ぶち込まなきゃならないからそこが面倒でたまんないよね?
そうなるとstringも別にあってもなくても(略w
0976デフォルトの名無しさん
2005/05/20(金) 00:03:46微温湯の温さに合わせていると、上がったときに風邪引くぞ。
0977デフォルトの名無しさん
2005/05/20(金) 00:07:23「何か変換かけるたんびに」とか、
言っている意味がわからん
0978デフォルトの名無しさん
2005/05/20(金) 00:07:41誰か日本語に翻訳お願いします。
0979デフォルトの名無しさん
2005/05/20(金) 00:09:11身近の馬鹿に合わせて自分のレベルを落とすな、ってコトでしょ。
0980デフォルトの名無しさん
2005/05/20(金) 00:15:43その辺りは想像力で補間してやらないと、行数が異常に増えてしまって2chでの会話は厳しい
0981デフォルトの名無しさん
2005/05/20(金) 00:16:370982デフォルトの名無しさん
2005/05/20(金) 00:17:16むしろ使ってない会社の方が多い希ガス
0983デフォルトの名無しさん
2005/05/20(金) 00:27:29まずは書く側がまともな短文書くのが先だな。この場合元の文が壊れすぎだ。
0984デフォルトの名無しさん
2005/05/20(金) 00:31:11俺がわかったからいいよ。
0985デフォルトの名無しさん
2005/05/20(金) 00:54:42http://pc8.2ch.net/test/read.cgi/tech/1115807478/
0986デフォルトの名無しさん
2005/05/20(金) 01:19:14ただ巨大なstring作って write(fd,s.c_str(),s.size());とかcout << s ;
とかしてやったら内容ちょろっと壊れてるのな。ヒギィ
0987デフォルトの名無しさん
2005/05/20(金) 02:04:09うまくいった例ってあるの?
0988デフォルトの名無しさん
2005/05/20(金) 02:05:58くらいの使い方でいいんだよね?
0989デフォルトの名無しさん
2005/05/20(金) 02:08:35つ[EmEditor]
0990デフォルトの名無しさん
2005/05/20(金) 02:30:390991デフォルトの名無しさん
2005/05/20(金) 07:28:53例えば、
stringで保持している文字列の中の特定の文字列を別の文字列に置換する
って一度固定長の配列に移さなくても処理できるの?
c_str使っても文字列に変換かけるときって、固定長の配列にいちいち移さなくちゃできないでしょ?
0992デフォルトの名無しさん
2005/05/20(金) 07:35:09それは std::string の実装方法によるだろ。c_str()は const char* なので、
多くの実装が std::string の内部をそのまま返している(つまり、最後には
初めから '\0' が入れられている)ようだが。STLportなどのソースを読んで
みると勉強になるよ。
0993デフォルトの名無しさん
2005/05/20(金) 08:12:18char *で処理しないといけないわけでもあるのか?
0994デフォルトの名無しさん
2005/05/20(金) 08:58:21find_xxx_of()
replace()
0995デフォルトの名無しさん
2005/05/20(金) 10:17:10http://pc8.2ch.net/test/read.cgi/tech/1113408957/
0996デフォルトの名無しさん
2005/05/20(金) 10:20:15発言者のオナニーじゃ意味がない
0997デフォルトの名無しさん
2005/05/20(金) 11:45:500998デフォルトの名無しさん
2005/05/20(金) 11:46:190999デフォルトの名無しさん
2005/05/20(金) 11:46:551000デフォルトの名無しさん
2005/05/20(金) 11:47:3010011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。