這裏是我的代碼處理兩個標準::對(X,Y)相同的std ::對(Y,X)
typedef std::pair<unsigned long, unsigned long> link;
std::map<link, double> container;
我所試圖做的是計算從X到Y的距離並作爲container.insert(std :: make_pair(link,distance))存儲在容器中; 並說現在我必須計算從Y到X的距離,而不是重做整個計算,從容器中獲取存儲值,即..,鏈接和距離。
我目前的實現是隻爲(X,Y)
std::map<link, double>::iterator It = container.begin();
std::pair<unsigned long, unsigned long> k = link(X,Y);
It = container.find(K);
if(It != container.end()) { distance = It->second; }
else { /* distance = /* complex calc */ container.insert(std::make_pair(k,distance)); }
如何我一定能成功推廣,使鏈路(X,Y)和鏈路(Y,X)被視爲相同?
非常感謝!它幫助,而不是返回'std :: make_pair(x,y),我返回鏈接(x,y)'。 – user2175966 2013-03-18 18:56:31