这里是我的代码处理两个标准::对(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