※ 引述《DickG (龍龍)》之銘言:
: 一時手邊沒有相關書籍,所以上來問一下
: 1、 container 中的 data 如何存到 file 中呢?
: 舉 map 來說:
: 我想到
: fostream fout("aaa");
: for(itr = map.begin(); itr!=map.end(); itr++) {
: fout<<itr->first<<itr->second<<endl;
: }
: 可總覺得應有更好的方法才是
這應該就是最直接的方法了,stl並沒有定義object persistent,所以
要存檔的功能都必須要自己寫...應該建議stl的作者把persistent的功能
加上去才對阿...降子就方便許多了...
: 2、map 一般不是會自動在你作 insert 時作 sort 嗎?
: 可它是以 first 為 sort 的對象,
: 可以以 second 來 sort 嗎?
: 又 second 的 type 為 class ,那是不是要在 second 這 class 中寫個
: comparison function ?
: 龍龍
如果碰到這種狀況,那只好用兩個map了...因為map基本上是用紅黑樹實作的,
紅黑樹顯然不支援此種操作...不然下面這種方法也可以:
map<firstType,int> firstMap;
map<secondType,int> secondMap;
vector<recordType> records;
用firstMap的second當作recods的索引值...
不過這樣做蠻白爛的啦,除非你的一筆record很大...
或是用另一個class包起來:
template <class K1, class K2>
class TwoKeyMap
{
typedef pair<K1, K2> ValueType;
map<K1> map1;
map<K2> map2;
void insert(const ValueType &value)
{
map1[value.first] = value.second;
map2[value.second] = value.first;
}
... other mapped methods ...
}
--
Chaos is the best description of the constant state of human society.
Therefore, dynamic balance is required for us to to survive when vital fault
occurrs. So in the society, we don't chase for peace and order, but existence
and survival, instead.
--
※ 發信站: 批踢踢實業坊(ptt.twbbs.org)
◆ From: h25.s77.ts30.hi