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

10-08 00:20