使用std :: sort和boost :: bind

时间:2010-11-05 02:21:41

标签: c++ sorting boost bind

我正在尝试将boost::bindstd::sort函数一起使用。我想将sort绑定到不带参数的函数中,并指定要排序的int数组。

我遇到了在绑定排序时指定什么作为模板参数的问题,如果我使用的是标准容器,我只会使用std::container<int>::iterator但是因为我使用的是数组,所以无法计算用什么。

以下是一些说明我的编译问题的代码:

  const int NUM_VALUES = 100;
  int nums[NUM_VALUES];
  for (int i=0; i<NUM_VALUES; ++i)
  {
    nums[i] = NUM_VALUES - i;
  }
  boost::function<void()> sortHolder = boost::bind(&std::sort<type?>, nums, nums+NUM_VALUES);

任何人都知道在这里使用哪些模板参数?任何其他讨论也欢迎。

1 个答案:

答案 0 :(得分:2)

当您希望将“迭代器”放入数组时,可以使用指向数组中元素的指针。这样的指针可以用作随机访问迭代器:

boost::function<void()> sortHolder = 
    boost::bind(&std::sort<int*>, nums, nums + NUM_VALUES);