【发布时间】:2018-05-19 23:35:15
【问题描述】:
我试图创建一个需要两个比较两个对象的函数,但我希望它可以与 std::sort 的任何可比对象一起使用。
换句话说,我希望这些代码在 C++ 中编译
bool mycomp(int a, int b) {return a<b;}
int main () {
deque<int> qu;
special_push(qu, 3);
special_push(qu, 5, less<int>());
special_push(qu, 5, mycomp);
}
到目前为止我已经尝试过:
template< typename _Compare > void push (deque<int> & qu,int val, _Compare comp = less<int>()) {
while(qu.empty()==false && comp(val, qu.back())) {
qu.pop_back();
}
qu.push_back(val);
}
【问题讨论】:
-
双下划线开头的名称和下划线加大写字母开头的名称保留给编译器
-
是的,我是从编译器复制过来的
-
编译器实现者可以这样做——你不可以。
-
谢谢,但该代码不适用于正式项目,所以没关系,但我更新了它。
-
这很重要 - 使用保留名称是将几乎不可能找到的错误引入代码的好方法。