2013-04-17 4 views
3

다음과 같이 저장, 문자열 및 복식 집합이있는지도가 있습니다.임시 값을 만들지 않고 std :: map을 삽입하십시오.

주어진 키에 가격을 삽입하는 방법이 필요하며 다음 코드를 작성해야합니다.

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]); 
    } 

저는 임시 변통을 만드는 첫 번째 부분을 개선하기위한 방법이 있는지 궁금합니다.

+1

C++ 11을 사용하고 계십니까? –

+1

코드를 잘못 읽었 기 때문에 답을 삭제했습니다. 빈 세트를 삽입 할 수 있습니다. std :: pair locIter = exPricesData.insert (std :: pair > (exchange, std :: set ())) ; ' – stefaanv

답변

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>을 사용할 때주의하십시오. 숫자가 계산의 결과 인 경우, 수치 부정확성으로 인해 예상치 못한 곳에 집합의 고유 한 구성원이 생길 수 있습니다.

+0

분명히 내 질문에 대답을 추가 할 때 질문에 답이 나오지 않았다. 내 것을 제거하고 +1을 선생님 께 드릴 것입니다. – pstrjds

+0

@pstrjds 감사합니다. 때로는 "새로운 답변"팝업이 실제로 지각합니다. – Angew

+0

Angew, 너 너무 좋다. 감사 – user373215