2013-03-29 59 views
0

我有一個無序的地圖,應該檢查筆是否存在給定的顏色和筆的寬度。我目前正在嘗試通過字符串進行查找。如果它已經在地圖上,那意味着我已經創建了這種類型的筆。如果它不在地圖中,我想創建一個新的筆並設置顏色和重量,並將其添加到unordered_map。將一個對象的屬性作爲字符串傳遞

std::unordered_map<std::string, std::shared_ptr<Gdiplus::Pen>> mymap; 

,我想筆的屬性是顏色和寬度......正如你所看到的顏色來自格式(0,0,0)和寬度僅僅是一個浮點數。我在考慮做一個字符串:「(R,G,B); W」其中R,G,B對應於顏色,W對應於筆的寬度,但這似乎太複雜。

Gdiplus::Pen pen(Color(0, 0, 0)); 
pen.getWidth(); 

我在想,如果有通過這些屬性作爲一個字符串的簡單方式或是否有更好的辦法去解決我的問題。

我的字符串應該看看筆是否存在。它會檢查筆的顏色和寬度。

+0

你問的問題對我而言並不明顯。 「將這些屬性作爲單個字符串傳遞給你,是什麼意思?」 –

+0

std :: unordered_map > mymap; 這樣的事情,但不允許 –

回答

0

我的假設是您正在檢查是否存在筆。

不是將東西放入一個字符串中,而是將它們放入一個結構中並在容器中使用該結構。

struct Pen_Properties 
{ 
    unsigned int r,g, b; 
    unsigned int width; 

    bool operator<(const Pen_Properties& p) 
    { 
    bool result = true; 
    if (r != p.r) 
    { 
     result = r < p.r; 
    } 
    else 
    { 
     if (g != p.g) 
     { 
      result = g < p.g; 
     } 
     else 
     { 
      // And so on. 
     } 
    } 
}; 
+0

std :: unordered_map > mymap; 這樣的事情......但這是不允許的 –

相關問題