将第三个参数传递给C++(STL)的排序函数
Passing a third argument to sort function of C++(STL)
c++中sort
的正常比较函数有两个参数,例如:
sort(v.begin(),v.end(),compare);
bool compare(int a,int b)
.
.
.
但在向量中,我存储了一个数组,我想sort
基于特定索引的向量。即:
int arr[3];
vector<arr> v;
如果我想根据索引0、1或2(取决于用户的输入(对v进行排序,我如何使用排序函数?这里的问题是,当我写比较函数时:
bool compare(int *arr,int *arr1)
那么我如何告诉这个函数根据特定的索引进行排序呢?
只需使用函子对象:
struct coord { int *arr; };
struct Comparer : std::binary_function<coord,coord,bool> {
Comparer( int base ) : m_base( base ) {}
bool operator()( const coord &c1, const coord &c1 )
{
return c1.arr[m_base] < c2.arr[m_base];
}
private:
int m_base;
};
//...
std::sort( v.begin(), v.end(), Comparer( 1 ) );
相关文章:
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 在C应用程序中运行C++(带有STL)函数
- 使用2个键的cpp-stl::优先级队列排序不正确
- 在STL容器中使用模板类
- 用C++中的CPerson(类)类型的对象初始化STL矢量
- 将stl字符串缩小到小于15个字符的容量
- 在为LINUX创建共享库时,如何避免STL的私有/弱副本
- 检查函数返回类型是否与STL容器类型值相同
- STL算法函数在多个一维容器上的使用
- 在STL - C++中按成绩对学生列表进行排序?
- 为什么 STL 容器适配器堆栈中的 top 返回常量引用?
- λ可以适应STL吗?
- 为什么使用 NDK 不能存在不同的 stl 实现?
- 如果我真的真的想从 STL 容器继承,并且我继承构造函数并删除新运算符,会发生什么?
- 使用 char 分隔符解析C++中的字符串,但将可重复的字符保留为每个解析的子字符串 (C++ STL) 中的分隔符
- 在C++中迭代 STL 集时出现奇怪的问题<CStudent>
- 如何在 C++17 STL 并行算法中处理调度?
- 在学习数据结构之前对STL有一个了解是好的吗?
- C++ STL 排序会检查 NaN 吗?