struct Instrument
{
std::string make;
std::string brand;
double age;
Instrument(std::string const& f, std::string const& s, double l) { BLABLA }
bool operator<(Instrumentconst& rhs) { return BLABLABLA;}
};
std::map<int,Instrument> instMap;
Instrument myObj();
instMap.insert(pair<int,Instrument>(10,myObj));
如果我需要分别在此映射中为单个属性更新值。
每次从 map 中检索Instrument进行更新时,我们都会创建Instrument的副本吗?
it = instMap.lower_bound(10);
if (it != m.end())
*(it->second).brand = "Jonas";<= will there be a copy of Instrument object created here?
如果必须对一百万个条目执行此操作,这是否是最有效的内存(和时间)更新值方法?
我们正在使用C++ 98。
最佳答案
简单的答案是“否”,将不会复制Instrument对象。
至少在c++ 98中,将复制std::string
。