C++如何通过比较set里的指针的内容来比较set
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++如何通过比较set里的指针的内容来比较set相关的知识,希望对你有一定的参考价值。
set里存放的是指向Item的指针,现在有一个vector<set<Item*>>,需要比较set,其中需要的是set里的Item 的比较(如果直接比较,则比较的是Item的指针,而不是Item),已经定义了比较Item指针的类,但是现在需要的是比较set,以求在vector里查找set成功。这样应该怎样定义set的比较函数呢?
ps:Item的比较如下:
class LRItemLess : public std::binary_function<LRItem, LRItem, bool>/
public:
bool operator () (LRItem* lhs, LRItem* rhs) const
return lhs->getLeft() < rhs->getLeft();
;
bool flag=false;
iterator v=vector.beign()
while(v!=vector.end())
iterator iv=v.bigen()iterator is=set.begin()
while(iv!=v.end())if(iv!=is),break;iv++;is++
if(iv==v.end())flag=true,break;
if(flag)
found;
else
notfound;
大概就是遍历一遍vector ;来查找
建议vector 里存放 set指针,这样就不需要比较set内部的值是否相同了
vector<*set<*item>>,写成这样就可以直接比较vector 的内容和set是否相等了
Set *set;
for(set*v:vector)
if(set==v)
flag=true,break;
if(flag==true)
found;
else
not found; 参考技术A 你这是想干嘛。。问题不清晰啊
set集合关于set与set进行比较
containsAll方法用来判断Set集合是否包含另一个集合中的全部内容。
语法 boolean containsAll(Collection<?> c)
返回值:如果Set集合包含参数c指定的集合对象中的所有内容,则返回true;否则返回false。
参数:c是要判断的另一个集合对象。
示例 本示例首先创建Set集合,并添加一些对象,然后创建和Set集合部分内容相同的List集合,调用containsAll方法判断Set集合是否包含List集合的内容。
public static void main(String[] args) {
Set set = new HashSet();
set.add(new Date()); //向列表中添加数据
set.add("apple"); //向列表中添加数据
set.add(new Socket()); //向列表中添加数据
set.add("TV"); //向列表中添加数据
List list=new ArrayList();
list.add("apple"); //向列表中添加数据
list.add("TV"); //向列表中添加数据
boolean contains = set.containsAll(list);
if (contains) {
System.out.println("Set集合包含List集合的内容");
} else {
System.out.println("Set集合不包含List集合的内容");
}
}
以上是关于C++如何通过比较set里的指针的内容来比较set的主要内容,如果未能解决你的问题,请参考以下文章
Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还 是 equals()?它们有何区别?
[转]Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还 是 equals()?它们有何区别?