3

我有一个存储、字符串和一组双打的地图,如下所示。

typedef std::map<std::string, std::set<double> > exprType;
typedef std::map<std::string, std::set<double> >::iterator exprIter;

exprType exPricesData;

std::vector<double> lastprice;
std::string exchange;

我需要一种为给定键插入价格的方法,并编写了以下代码。

  std::set<double> prices;
  double temp =  lastprice[0]; // An array of values comes as a parameter
  prices.insert(temp); // Creating a temp. set

  std::pair<exprIter,bool> locIter = exPricesData.insert(
            std::pair<std::string, std::set<double> >(exchange, prices));

   for ( int i = 1; i < lastprice.size() ; ++i )
   {
        locIter.first->second.insert(lastprice[i]);
   }

我想知道,有没有办法特别改进第一部分,它创建了一个临时集。

4

1 回答 1

4

你的意思是这样的吗?

std::set<double> &prices = exPricesData[exchange];  //returns existing value, or inserts a new one if key is not yet in map

prices.insert(lastprice.begin(), lastprice.end());

哦,使用std::set<double>. 如果数字是计算的结果,则数字不准确可能会导致您不期望它们出现在集合中的不同成员。

于 2013-04-17T17:25:39.620 回答