トップページtech
1001コメント267KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
前スレ
【C++】STL(Standard Template Library)相談室
http://pc5.2ch.net/test/read.cgi/tech/1095583235/

関連スレなどは>>2以降で
0002デフォルトの名無しさんNGNG
2get!!!!
0003デフォルトの名無しさんNGNG
>>2
STLならもっとスマートに書けるのに・・・
0004デフォルトの名無しさんNGNG
>>3
STLなんてつかうより、もっと素直な関数型言語をつかえばいいのに。。
0005デフォルトの名無しさんNGNG
糞スレ立てんな死ね>>1
0006デフォルトの名無しさんNGNG
STLはTemplateスレとC++相談室に統合って決まっただろ。
0007デフォルトの名無しさんNGNG
糞レス乙
0008デフォルトの名無しさんNGNG
STLを使うと実行ファイルのサイズが一気に100倍に!?
0009デフォルトの名無しさん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デフォルトの名無しさんNGNG
本当にコードが100分の1になるのですか?
0011デフォルトの名無しさんNGNG
>>10
なる。
100ステップだったらTステップに
1000ステップなら10ステップだ。
10000ステップなら100ステップだ。
0012デフォルトの名無しさんNGNG
>>11
実際に実行されない部分が多いと思うんだけど。
0013デフォルトの名無しさんNGNG
>>12
STLのソースで実行されない部分が多いってことを心配してるの?
使う部分しかコンパイルされないから安心するよ
0014デフォルトの名無しさんNGNG
>>11
templateは呼び出されたときに初めてインスタンスされる。
これを利用して、実装できないメソッドとかの中身をコンパイルエラーがでるようにして、
コンパイル時にチェックするテクニックもある。
たまにずいぶん前に書いたコードがコンパイルすらできないということが発生したりもするw
001514NGNG
>>11じゃなくて>>12
すまそ
0016デフォルトの名無しさんNGNG
立っちゃった以上前スレへのリンクを張っておく。

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

使ってるコンパイラはBCBでつ。
0021デフォルトの名無しさんNGNG
>>20
ウンコー
0022デフォルトの名無しさんNGNG
>>20
何でここで聞くかな。

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

>>24
環境かけヴォケ

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

他はシラネ
0026デフォルトの名無しさんNGNG
だからなんでここで質問するんだって。
0027デフォルトの名無しさんNGNG
相談室だろヴォケ
0028デフォルトの名無しさんNGNG
サンクス、BCBでつ>>25

>>26
「STL iostream」はセットだよ。ググてみて。
0029デフォルトの名無しさんNGNG
このすれC++相談室に統合でしょ
0030デフォルトの名無しさんNGNG
いいじゃねーかSTLなんだしよ
仕切りたがりの古参気取りのキチガイよ
おとなしく冬眠してそのまま永眠しとけ
0031デフォルトの名無しさんNGNG
>>28
BCBはしらねーや
ごめんなこんなおれで
0032デフォルトの名無しさんNGNG
stream は STL じゃないと何度言えば解るんだハゲ。
0033デフォルトの名無しさんNGNG
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
0034デフォルトの名無しさんNGNG
>>30
シねや禿
0035デフォルトの名無しさんNGNG
>>33
>>9と重複
0036デフォルトの名無しさんNGNG
C++相談室の次スレには
こんなスレが誤って立たぬよう
是非とも(STL含む)ってのを加えて欲しいものだ
0037デフォルトの名無しさんNGNG
STLはboostに取って代わられるの?
0038デフォルトの名無しさんNGNG
五月雨
0039デフォルトの名無しさんNGNG
>>37
いいえ。
0040デフォルトの名無しさん05/01/17 01:31:57
Boost.STLなるものが出る可能性は十分にあると思う.
0041デフォルトの名無しさん05/01/20 00:40:27
STLがでかいのではなく
streamがでかいのだ。
0042デフォルトの名無しさん05/01/24 03:17:58
boostって何?
0043デフォルトの名無しさん05/01/24 03:55:10
っ [ http://www.google.co.jp/ ]
0044デフォルトの名無しさん05/01/24 12:31:36
>>43
愛想のないページしか表示されないんですけど・・・
0045デフォルトの名無しさん05/01/24 12:55:04
>>44
お前は今、全世界数百万人のGoogleユーザーを敵に回した
0046デフォルトの名無しさん05/01/24 13:27:51
イベント日とかオリンピック期間中とか、十分愛想があると思うけど。
0047デフォルトの名無しさん05/01/24 17:43:14
>>45 よく言った(笑
0048デフォルトの名無しさん05/01/24 21:02:03
>>45
六十数億のうちの数百万なんて微々たるものなんですけど・・・
0049デフォルトの名無しさん05/01/24 21:04:20
>>48
そのうち、人間として認められるのは数%だ。
0050デフォルトの名無しさん05/01/24 22:49:53
自分が数%の方だと思ってるシアワセモノは手をあげて
0051デフォルトの名無しさん05/01/25 00:48:40
0052デフォルトの名無しさん05/01/28 00:11:02
>>51は自意識過剰
0053デフォルトの名無しさん05/02/21 16:22:49
stringについて解説してあるwebサイトなどを紹介してください
0054デフォルトの名無しさん05/02/21 16:46:47
>>53
http://www.google.com/search?hl=ja&q=string+c%2B%2B
0055デフォルトの名無しさん05/02/21 17:49:57
>>54
ありがとう
00565405/02/21 18:02:06
>>55
ネタなのか釣りなのかマジレスなのか判断に苦しむな
0057デフォルトの名無しさん05/02/21 21:59:47
vector<int> vec;

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

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


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

肝心のプログラムで使われてない場合は
(テンプレートのコード生成をg++の自動処理に任せていると)
メソッドのコードは当然バイナリに入らないから使えませんが。
テンプレートのコードを使う使わないに関わらず全部含めるような
コンパイルオプションがgccにあるかどうか調べてみては。
0059デフォルトの名無しさん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を使ってしまうと
入れたら最後まったく中身がわからんというのが何とも困ってます。
0060デフォルトの名無しさん05/02/22 00:15:34
>>59
自分で作れば見れるようなやつが _M_start を見れないとは思わない。
0061デフォルトの名無しさん05/02/22 09:26:03
(_M_finish-_M_start)/sizeof(int)
0062デフォルトの名無しさん05/02/22 12:08:21
別にサイズが知りたい訳じゃないだろ。
gdbっていうのは副作用の無いメソッドもウォッチできないのか?
できるなら普通に見ればいいだけだと思うが。
0063デフォルトの名無しさん05/02/22 12:27:53
>>57
>>33
0064デフォルトの名無しさん05/02/22 12:45:18
vectorをつかうのとnewで配列を確保するのとの違いは何?
0065デフォルトの名無しさん05/02/22 12:47:49
>>64
delete する必要があるかどうか。
0066デフォルトの名無しさん05/02/22 14:03:14
>>64
自動拡張してくれたり、独自のメモリアロケータ使えたり、
基本的なメソッドを提供してくれる
0067デフォルトの名無しさん05/02/22 21:46:31
そんな事はしってます。
0068デフォルトの名無しさん05/02/23 09:30:07
そうですよね。失礼しました。
0069デフォルトの名無しさん05/02/23 10:13:25
いえ私は知りませんでした。どうもありがとうございました。
0070デフォルトの名無しさん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++;
  }
}
0071デフォルトの名無しさん05/02/23 14:33:37
STLの仕様としては、リストの場合、消去された要素への反復子が無効になる。
if (i==1) test_erase(it++); else ++it;
なら大丈夫じゃないかな。
0072デフォルトの名無しさん05/02/23 17:03:30
test_list.remove(1);
実はこれだけで済む。

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

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

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

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

と使えるらしい。
0088デフォルトの名無しさん05/03/04 20:19:48
vectorとlistの違いを教えてください。
0089デフォルトの名無しさん05/03/04 21:46:29
>>88
共通点を探す方が難しいくらい、全然違います。
0090デフォルトの名無しさん05/03/04 22:45:00
>>88
vectorは動的配列、listは線形リスト。
0091デフォルトの名無しさん05/03/04 23:33:03
このスレって、重複なんでしょ(ウププ
0092デフォルトの名無しさん05/03/05 02:58:10
途中挿入がない場合は、vectorでいいの?
0093デフォルトの名無しさん05/03/05 03:07:48
boost::lexical_cast<std::string>(f);
0094デフォルトの名無しさん05/03/05 03:10:43
>92
先頭挿入が沢山ありえるならdeque
ないならvector
0095デフォルトの名無しさん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]. まで押しても何もでないんです
0096デフォルトの名無しさん05/03/05 07:47:20
VC.net使え。
0097デフォルトの名無しさん05/03/05 08:30:53
>>95
6.0を使わないでください
0098デフォルトの名無しさん05/03/05 08:34:47
VisualStudio.NET2003なら先頭(_Myfirst)だけ自動で見れるが
2個目からは無理
正直stdのコンテナクラスは使えないと思う
0099デフォルトの名無しさん05/03/05 08:40:29
>>98
エェー
0100デフォルトの名無しさん05/03/05 09:00:17
>>98
使えないんじゃなくて、使いこなせないんだろ。
0101デフォルトの名無しさん05/03/05 10:17:11
インテリセンスは出たらラッキーくらいに思っとけ
■ このスレッドは過去ログ倉庫に格納されています