如何在类中使用唯一函数
How to use the unique function inside a class?
在类内部使用,传递到唯一函数中的BinaryPredicate也应该是类成员函数。当我试图传递类内成员函数时,会发生编译错误:
cannot convert 'Solution::mycompare' from type 'bool (Solution::)(std::vector<int>, std::vector<int>)' to type 'bool (Solution::*)(std::vector<int>, std::vector<int>)'
以下是源代码:
class Solution {
public:
vector<vector<int> > threeSum(vector<int> &num) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<vector<int> > result;
...
unique(result.begin(), result.end(), mycompare);
return result;
}
bool mycompare(vector<int> v1, vector<int> v2) {
for (int i=0; i<v1.size(); ++i) {
if (v1[i] != v2[i])
return false;
}
return true;
}
};
如何解决这个问题?PS:我不能在类之外定义函数。
将其声明为static
。它不需要访问成员(无论是否为static
(,所以没有理由不能这样做。
此外,通过const
引用传递v1
和v2
,避免潜在的复制。
试试这个:
unique(result.begin(), result.end(), &mycompare);
您将向unique
提供mycompare
函数的地址,这正是它所需要的。
相关文章:
- 什么..(省略号)作为函数原型中唯一的函数参数,C++?
- 将唯一指针的指针传递给采用双指针的函数
- 对带有唯一指针的 std::thread 使用类成员函数时出现编译错误
- 函数从唯一代码调用正确的子类方法
- 以下代码如何工作以每次为唯一调用堆栈唯一实例化模板函数?
- 使用唯一指针调用函数会使我的程序崩溃
- 字数统计函数在将单词添加到一组唯一单词时遇到问题
- 常量引用函数参数的地址何时唯一?
- 在创建对象向量时,不为每个对象唯一调用默认对象构造函数
- 获取模板函数/泛型 lambda 的唯一返回类型
- 如何在将唯一的_ptr传递给函数后使用
- 实例化 std::vector 的唯一元素,而无需复制构造函数
- 空的唯一指针在离开作用域时调用析构函数
- C (函数)模板将其返回其唯一参数而无需复制某些类型
- 通过成员函数将唯一 ptr 的向量附加到另一个向量
- 重构,其中唯一函数具有不同的参数
- 在运行时创建一个具有唯一函数指针的函数
- 如何在类中使用唯一函数
- 传递唯一函数作为参数
- 从基类对象的指针向量调用派生类的唯一函数