09/06/30 07:50:46
別にそうでもないか
忘れてくれ
263:デフォルトの名無しさん
09/07/02 18:34:47
時々でいいので>>261の事を思いだしてあげて下さい
264:デフォルトの名無しさん
09/07/10 12:16:30
>>262 >>256
smart_ptrはコピー時に参照回数を変更するひつようがあるんでメモリイメージコピーはできないからそうでもあるよ。
265:デフォルトの名無しさん
09/07/10 12:20:47
メモリ領域コピーして元領域のメモリをそのまま解放したらカウント維持で問題ないからそうでもない
そういう問題ではない
266:デフォルトの名無しさん
09/07/17 17:15:45
ものすごく基本的な質問をさせてください。
std::vectorで100個(数は可変)のデータがあって
これの最初20個ぐらい(数は可変)のデータを削除して
前に詰めたいのですが、どうすればいいのでしょうか?
erase (remove( ではダメでした。
267:デフォルトの名無しさん
09/07/17 17:29:47
v.erase( v.begin(), v.begin() + 20 );
268:デフォルトの名無しさん
09/07/17 19:53:15
できました!
ありがとうございました!
269:デフォルトの名無しさん
09/07/24 18:27:56
初めて出てきた要素に対してのみ動作するunique_transformを実装してるのですが
unary_functionを継承した関数オブジェクトだけでなく
普通の関数も渡せるようにするにはどうすれば良いのでしょうか?
template<class InputIterator, class OutputIterator, class UnaryFunction>
InputIterator unique_transform(InputIterator first, InputIterator last,
OutputIterator result, UnaryFunction unary_func){
set<iterator_traits<InputIterator>::value_type> s;
while(first!=last){
if(count(s.begin(),s.end(),*first)>=1){++first;}
else{
s.insert(*first);
*result=unary_func(*first);
++first;++result;
}
}
return last;
}
struct i:public unary_function<int,int>{ int operator()(int a)const{return a;} };
//main側
string a="abcadbc";
string b;
unique_transform(a.begin(),a.end(),back_inserter(b),i());
cout << b << endl;
これを
int id(int n){return n;}を定義して
unique_transform(a.begin(),a.end(),back_inserter(b),id)
などと出来るようにしたい
後、STL実装ってVisualStudioのどっかのフォルダに入ってるんですかね?
270:デフォルトの名無しさん
09/07/24 18:51:41
あ、特に修正しなくてもidも渡せるのか
>>269は忘れてください
271:デフォルトの名無しさん
09/07/24 18:53:25
忘れました。^^
272:デフォルトの名無しさん
09/07/29 16:14:30
std::vector<Object*> objs;
をソートしたいのですが、どうすればいいのでしょうか?
Objectクラスにはbool operator< (const Object& lhs, const Object& rhs); が定義されています。
objs.sort (objs.begin(), objs.end());
とやると、上の<を使わずにポインターの値そのものを使ってソートしてくれやがります。
273:デフォルトの名無しさん
09/07/29 16:48:57
>>272
第三引数にコンパレータを渡せ
274:デフォルトの名無しさん
09/07/29 17:42:22
Object& じゃ型が違うんじゃ
Object*& じゃないの
275:デフォルトの名無しさん
09/07/29 17:50:35
>>274
ポインタ型同士の比較は272が言っているとおりコンパイラが組込で持っているから、
そんなのは定義できない。
というわけで>>273。
276:デフォルトの名無しさん
09/07/29 18:00:58
> コンパイラが組込で持っている
ああ、すっかり忘れてた
277:デフォルトの名無しさん
09/07/29 18:23:21
bool operator <(Object* o1, Object* o2);
グローバル関数のオーバーロードで行けるかと思ったけど、
引数の片一方がクラスじゃねえぞ、とコンパイラにキレられた
278:デフォルトの名無しさん
09/07/29 18:54:19
ObjectPtrクラスを作って、Objectの&を上書きしてPtrクラスを返すようにすれば
279:272
09/07/29 19:03:15
みなさん、ありがとうございます。
言っていることがさっぱりわからないので、勉強し直してきます。
280:デフォルトの名無しさん
09/07/29 19:40:45
うだうだ言っていないで、こう書けばいい。
#include <boost/lambda/lambda.hpp>
using boost::lambda::_1;
using boost::lambda::_2;
std::sort(objs.begin(), objs.end(), *_1 < *_2);
281:デフォルトの名無しさん
09/07/31 11:00:25
lambda さんかっけーっす!
282:デフォルトの名無しさん
09/08/01 11:48:54
なるほど、覚えておこう
std::sort(objs.begin(), objs.end(), *boost::lambda::_1 < *boost::lambda::_2);
283:デフォルトの名無しさん
09/08/01 21:19:29
日本横断 STL の旅
SL の見間違いだった
284:デフォルトの名無しさん
09/08/01 22:07:16
そういえばlsってよくslと打ち間違えて電車走るな
電車は飽きたので、slって打ったらSTLを宣伝するディストリを誰か作って
285:デフォルトの名無しさん
09/08/01 22:39:14
>>284
走っているのは蒸気機関車であって電車ではない罠。
つーか、適当なSTL紹介文書を垂れ流すスクリプトを作って問題のslよりも上流に置けばいいだけじゃん。
286:デフォルトの名無しさん
09/08/01 22:47:12
alias sl='lynx URLリンク(www.sgi.com)'
287:デフォルトの名無しさん
09/08/05 23:59:28
URLリンク(d.hatena.ne.jp)
STLってlistとtreeを区別するもんだっけ?
288:デフォルトの名無しさん
09/08/07 10:25:05
>>287
別に区別するともしないとも言ってないんでないの?
289:デフォルトの名無しさん
09/08/07 18:32:11
STLの中にはlistと別に_Treeクラスがある
listのノードは_Next, _Prevがあるだけだが
_Treeのノードは_Parent, _Left, _Rightがあるから
手が一本多い=構造に違いがある
っていうレスを求めてるのか?>>287
290:デフォルトの名無しさん
09/08/07 19:44:14
標準で定められてるSTLコンテナはvector,deque,list,set,multiset,map,multimapだけ
treeはないし、あったとすればそれはベンダの独自拡張だから何とも言えない
291:デフォルトの名無しさん
09/08/08 02:49:21
VCだと確かmapとsetの親がtreeだったな
292:デフォルトの名無しさん
09/08/21 00:36:35
今時二分木とかw
ハッシュマップだろjk
293:デフォルトの名無しさん
09/08/21 01:20:43
おまえのハッシュはソート済みにしてくれんのか
294:デフォルトの名無しさん
09/08/21 02:15:38
おうよ、常にソート済みさ
295:デフォルトの名無しさん
09/08/21 02:25:42
鬼才あらわる
296:デフォルトの名無しさん
09/08/21 11:04:35
>>294
男前だなあんた
297:デフォルトの名無しさん
09/08/21 12:08:50
std::stringstreamは、ostringstreamとistringstreamの多重継承であると知った
std::stringはstd::stringstreamと関係してる?別物?
298:デフォルトの名無しさん
09/08/21 12:18:47
>>297
当然関係してる。
で、当然別物。
299:デフォルトの名無しさん
09/08/21 12:34:25
>>297
嘘乙
stringstreamはiostreamを継承している
300:デフォルトの名無しさん
09/08/26 21:02:08
int a[10];
std::generate(a, a+10, rand);
で乱数を入れられますが、rand()%100を入れたい場合、bindとか使ってどう書けばいいですか?
lambdaならできそうな気はしますが。
301:デフォルトの名無しさん
09/08/26 22:33:27
>>300
generate(a, a+10, bind(modulus<int>(), bind(rand), 100));
TR1(bind)無しだと関数オブジェクト作らないと無理かな。
bindが使える環境ならTR1のrandomを使った方が良いような気がする。