如何订购一套&lt;对&LT; pair <int,int =“”>,double&gt; &GT;对于第二个值&#34; double&#34;?

时间:2016-09-07 13:13:44

标签: c++ sorting vector set compare

我是C ++的新手,我真的很挣扎:我想组织我的第二部分:

set< pair <pair<int, int>, double > > map
int N_t = 10, N_r = 10;
for (unsigned int i_t = 0; i_t < N_t; i_t++ )
 {
 for(unsigned int i_r = 0; i_r < N_r; i_r++ )
  {
   Double_t dR = i_t*i_r ;
   map.insert( make_pair(make_pair(i_r, i_t) ,dR));
   }
 }

我想组织第二部分。我试过这个,我不知道怎么做:

sort(map.begin(), map.end(), [](const pair<pair<int,int> &x, double>,const pair<pair<int,int>, double> &y)
{
  return x.second < y.second;
 });

谢谢!

2 个答案:

答案 0 :(得分:2)

如果您希望根据对中的.second元素进行排序,那么为什么不将double放在pair<int,int>前面呢?按顺序对第一个元素和第二个元素进行排序,而不是

set< pair <pair<int, int>, double > > map

您可以使用

set< pair <double, pair<int, int> > > map

另外我建议不要使用关键字作为变量名(map是C ++中的内置数据结构)

答案 1 :(得分:0)

谢谢Benson!我只是意识到我必须构建一个比较

的结构
try:
    webbrowser.open("file://" + os.path.realpath(path))
except webbrowser.Error:
    print "Something went wrong when opening webbrowser"

感谢您的建议!