我需要将数据添加到地图中。我做了这个功能:
CSupermarket CSupermarket::Store( string name, CDate x, int count ) {
pair <CDate, int> p;
p = make_pair ( x, count );
vector<pair<CDate, int >>::iterator it;
vector<pair<CDate, int > > v;
if ( items[name].size() ) {
v = items[name];
}
it = lower_bound (v.begin(), v.end(), p );
v.insert( it, p );
items[name] = v;
return * this;
}
我必须这样称呼它:
CSupermarket s;
s . Store ( "bread", CDate ( 2016, 4, 30 ), 100 ) .
Store ( "butter", CDate ( 2016, 5, 10 ), 10 ) .
Store ( "beer", CDate ( 2016, 8, 10 ), 50 ) .
Store ( "bread", CDate ( 2016, 4, 25 ), 100 ) .
Store ( "okey", CDate ( 2016, 7, 18 ), 5 );
s . Store ( "Coke", CDate ( 2016, 12, 31 ), 10 );
但是当我打电话给它时,它只会添加物品&#34;面包&#34;和#34;可乐&#34;。请问,我必须如何修理它,它会添加所有物品(面包,黄油,啤酒,okey,可乐)?
由于
答案 0 :(得分:5)
该函数返回*this
的副本,每个链接的调用都会创建一个新副本
只有“面包”和“可口可乐”正在修改s
。
您需要返回*this
的引用:
CSupermarket & CSupermarket::Store( string name, CDate x, int count )
^
reference