在我的程序一个错误是通过直接比较引起size_t
与int
.
玩具示例代码如下:
string s = "AB";
cout << (-1 < 8888888+(int)s.size()) << endl;
cout << (-1 < 8888888+s.size()) << endl;
Run Code Online (Sandbox Code Playgroud)
输出是:
1
0
那么为什么size_t不能直接与负int进行比较呢?
在Effective Java中,在“使用有界通配符增加API灵活性”一文中,在谈到PECS(producer-extends,consumer-super)的使用时,作者提到:
Comparable 始终是消费者,因此您通常应该使用 Comparable<? super T> 优先于 Comparable。比较器也是如此;因此,您通常应该使用 Comparator<? super T> 优先于比较器。
我不清楚为什么 Comparables 和 Comparator 被认为是消费者。
在讨论 PECS 的主题之一中,什么是 PECS(生产者扩展消费者超级)?,消费者通常将 Collection 称为某个泛型方法的参数。
而这里 Comparable 只是一个接口。
任何人都可以分享一些见解吗?谢谢!