2011-03-09 49 views
0

我怎麼能填充圖的矢量與一個rowid一起,或爲valuepair設置地圖的C++矢量使用迭代器如何

例如像

typedef std::map<string, string> mapDB; 
mapDB mapDB_colVal; 
typedef mapDB::iterator mapDB_iter ; 
vector<pair<int,mapDB> > mapDB_vec; 

//populate mapDB_colVal 1st row 
mapDB_colVal["X"]="APPLE"; 
mapDB_colVal["Y"]="RED"; 

How can I assign/populate 1st row mapDB_vec with mapDB_colVal 

//populate mapDB_colVal 2nd row 
mapDB_colVal["X"]="PEAR"; 
mapDB_colval["Y"]="RED"; 

任何的每一行的迭代器想法將非常感激。

感謝

利奧

回答

0
mapDB_vec db; 

//populate mapDB_colVal 1st row 
mapDB_colVal["X"]="APPLE"; 
mapDB_colVal["Y"]="RED"; 
db.push_back(make_pair(some_row_id, mapDB_colVal)); 

//populate mapDB_colVal 2nd row 
mapDB_colVal["X"]="PEAR"; 
mapDB_colval["Y"]="RED"; 
db.push_back(make_pair(some_other_row_id, mapDB_colVal)); 

我不知道你想要什麼行ID。如果它們只是連續的數字,那麼它們看起來是多餘的,因爲向量允許你通過它們的位置來識別元素。

+0

感謝馬塞洛,即似乎工作。我怎樣才能打印什麼,我推入「數據庫」,這一個不適合我cout << mapDB_vec [i] .first <<「:」<< mapDB_vec [i] .second << endl; – user652600 2011-03-10 00:01:13

+0

'mapDB_vec'是類型。你應該使用變量'db'。另外,你需要定義'ostream&operator <<(ostream&,const map &)'來輸出每個地圖的內容。如果你把它作爲一個單獨的問題提出,有人可以提供更詳細的答案。 – 2011-03-10 00:52:32

2
總之

mapDB_vec.push_back(std::make_pair(0, mapDB_colVal)); 

長:

你不需要那麼ROWID,矢量指數是不夠好

更多更長:

struct Row { 
    std::string x; 
    std::string y; 

    Row(std::string const& x_, std::string const& y_): x(x_), y(y_) 
    {} 
}; 

vector<Row> mapDB_vec; 
mapDB_vec.push_back(Row("Apple", "Red")); 
mapDB_vec.push_back(Row("Pear", "Red"));