[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 11/25 00:30 / Filesize : 208 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:858 [2007/12/24(月) 03:41:59 ]
C++標準ライブラリの一つ、STLについて。

前スレ
【C++】STL(Standard Template Library)相談室 7
pc11.2ch.net/test/read.cgi/tech/1185986999/

過去ログ・リンク・書籍紹介は >>2 以降

952 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 14:54:32 ]
最新ドラフト(これ、最終ドラフトだっけ?)にも載ってないな。

953 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 14:55:44 ]
今公開されてる最新は n2521.pdf のはず。無いな。

954 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 14:57:21 ]
禿が10年越しの天丼ねらってる、とか?

955 名前:デフォルトの名無しさん [2008/02/24(日) 14:59:55 ]
質問失礼します。。
struct ST{
  int n;
};
vector<ST> v;
set<ST> s;

int main(){
  ST x={0};

  v.push_back(x);
  vector<ST>::iterator itv=v.begin();
  itv->n++;

  s.insert(x);
  set<ST>::iterator its=s.begin();
  its->n++;
}
のようにすると、its->n++;の行で
error: increment of data-member ‘ST::n’ in read-only structure
と出るのですがvectorで出来てsetで出来ないのはなぜでしょうか?

956 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:03:57 ]
今すぐsetのイテレータタグを調べるんだ


957 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:04:24 ]
ごめんnの方だったのね

958 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:04:44 ]
>>955
set は常にソートされた並びを保っている必要があるから。

959 名前:955 mailto:sage [2008/02/24(日) 15:17:04 ]
>>956-958さん
iterator経由で勝手に中身を変えられたら困るということは、
setとmapだけの例外扱いなのですか?
イテレータタグというのは初見なのでちょっと調べてみます。

960 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:28:50 ]
map は second の方は変えれる。



961 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:28:54 ]
>>959
map の場合は value_type である pair の first がソートキーなので、これは
書き換えられないように const が付いてる。 second は順序に関係ないので
書き換えてもいい。

962 名前:955 mailto:sage [2008/02/24(日) 15:31:13 ]
>>960,961さん
なるほど、そうなっているのですね。
よく分かりました、どうもありがとうございました。

963 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:43:02 ]
compareが感知しないメンバなら、mutable付けていじることはできるけどね。

964 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:01:24 ]
まぁそれは奥の手ということでw

965 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 14:04:12 ]
ファイルに簡単に新規作成、追記ができる方法ありますか?

ofstreamって、bad()とかfail()とか使いにくい。

966 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 14:18:47 ]
ofstream.exceptions(badbit | failbit);
ってやっとけばいちいちチェックしなくても例外吐いてくれると思う
それが使いやすいかどうかはわからんが…

967 名前:965 mailto:sage [2008/02/25(月) 14:25:43 ]
サンクス>>966

968 名前:デフォルトの名無しさん [2008/02/25(月) 16:54:00 ]
そんな機能があったとは

969 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 17:08:09 ]
そういえばostreamのfail()が真になる事ってあるの?

970 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 17:24:02 ]
>>920
>file_range

ずっと見てても分からないんですが、file_rangeって何ですか?



971 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 17:29:12 ]
ファイルの先頭から末尾の一つ後ろまでを指すイテレータのペアみたいなもん

972 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 17:30:41 ]
使い方キボン

973 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 18:12:11 ]
複数のファイルがあって、それがローデータだったり、テーブルデータだったりします。

複数のファイルを混在させずに簡単にロードしてしまうクラスが欲しいのですが、どんな実装になりますか?

974 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 18:13:10 ]
>>972
コンストラクタで開いたら後はただのRange。
p-stade.svn.sourceforge.net/viewvc/p-stade/trunk/pstade/libs/oven/test/file_range.cpp?revision=1481&view=markup
p-stade.sourceforge.net/oven/doc/html/oven/ranges.html#oven.ranges.file_range

Range自体はここでも見て。
www.kmonos.net/alang/boost/classes/range.html

975 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 18:16:01 ]
さんks>>974

boostなんですね。STLに昇格するまで待ってようかなぁ。
ちょっと気後れしてしまうorz


976 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 08:54:04 ]
973もヨロ!

977 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 08:59:15 ]
>>973
ローデータ、テーブルデータ、ファイルを混在、簡単に、ロード
これだけ曖昧な言葉を並んでるとさすがに意味がわからん。

978 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 11:28:42 ]
いや、だからメモリにロードしたいけど、
ファイルの種類が増えるたび書き換えするのは面倒なので、
ポケットみたいにどんどんファイル(ファイル名)を入れていくとその中でメモリになってる、みたいな。

979 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 12:01:54 ]
>>978
// ちょっとエスパーにチャレンジしてみたい気分になった
// こうですか?
#include <vector>
#include <map>
#include <string>
#include <istream>
#include <iterator>
#include <fstream>
#include <cstddef>
#include <exception>
#include <iostream>
typedef std::vector<char> memory_type;
class pocket {
std::map<std::string, memory_type> naka;
public:
void ireru(std::string const& filename) {
std::ifstream file(filename.c_str());
file.exceptions(std::ios::badbit | std::ios::failbit);
naka[filename].assign(std::istreambuf_iterator<char>(file)
, std::istreambuf_iterator<char>());
}
};
int main(int argc, char* argv[]) {
try {
pocket pocket;
for (int i = 1; i < argc; ++i) { pocket.ireru(argv[i]); }
return EXIT_SUCCESS;
}
catch (std::exception const& e) { std::cerr << e.what() << std::endl; return EXIT_FAILURE; }
}

980 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 12:18:03 ]
乞食は消えろ



981 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 12:25:50 ]
さて埋めるか。

982 名前:978 mailto:sage [2008/02/26(火) 12:58:13 ]
サンks>>979

そのまま使ってみます。
でも、ireruメソッドはメソッド名変えるけど。

class pocketもclass memoryPocketの方が良いかなぁ?


983 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 14:12:22 ]
978がアホすぎて吹いた

984 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 14:15:27 ]
吹いても良いから、自分はどーゆーふーに作ってるか書けお。

985 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 14:24:08 ]
スレタイに「初心者」か「宿題」が付いてるスレへ行ってくれ。
マジで邪魔。

986 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 14:29:55 ]
>985
おま、ふよー

987 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 15:16:46 ]
>>985
おまえだって大したことはないだろ

988 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 16:42:30 ]
次スレマダー?

989 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 18:44:25 ]
邪魔っていうか、ゴミだよね。
なんでこのスレ見てるんだろう。

990 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 19:03:06 ]
リアルで同じ事言われてここに辿り着いたんだろう



991 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 20:47:50 ]
ジエンオツ

992 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 21:41:38 ]
ということにしておこうか:-)

993 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:55:52 ]
次スレ
pc11.2ch.net/test/read.cgi/tech/1200044614/

994 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 01:16:16 ]
あれ?あ、そういうこと・・・

995 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 01:17:38 ]
STLスレはいらんという事?

996 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 01:25:47 ]
まぁ毎度のことだな。
こっちが二ヶ月で 1000 。
あっちが一月半で 800 。
あわせると、だいたい一月でちょうど 1000 か。

997 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 02:03:52 ]
【C++】STL(Standard Template Library)相談室 9
pc11.2ch.net/test/read.cgi/tech/1204045410/

998 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 02:04:35 ]
【C++】STL(Standard Template Library)相談室 7
pc11.2ch.net/test/read.cgi/tech/1185986999/
【C++】STL(Standard Template Library)相談室 6
pc11.2ch.net/test/read.cgi/tech/1160821240/
【C++】STL(Standard Template Library)相談室 5
pc8.2ch.net/test/read.cgi/tech/1143608073/
【C++】STL(Standard Template Library)相談室 ;4
pc8.2ch.net/test/read.cgi/tech/1130680264/
【C++】STL(Standard Template Library)相談室 3
pc8.2ch.net/test/read.cgi/tech/1116559700/
【C++】STL(Standard Template Library)相談室 2
pc8.2ch.net/test/read.cgi/tech/1104898734/
【C++】STL(Standard Template Library)相談室
pc5.2ch.net/test/read.cgi/tech/1095583235/

999 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 02:07:03 ]
新スレからの誤爆とは珍しい。

1000 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 02:08:40 ]
次すれ
pc11.2ch.net/test/read.cgi/tech/1204045410/



1001 名前:1001 [Over 1000 Thread]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<208KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef