【发布时间】:2011-11-24 04:14:15
【问题描述】:
我有一个有一个私有成员的类:
std::set<unsigned long> Sset;
我对这个函数有问题:
原型:
Set& Union (Set&, Set&);
代码:
Set& Set::Union (Set& s1, Set& s2)
{
set<unsigned long>::iterator a;
set<unsigned long>::iterator j;
for (a = s1.Sset.begin(); a!=s1.Sset.end(); ++a)
for (j = s2.Sset.begin(); j!=s2.Sset.end(); ++j)
if (*a = *j)
{
Sset.insert(*a);
break;
}
return *this;
}
我得到编译器错误表达式必须是*a=*j处的可修改左值
迭代器 j 一切正常,但它不会接受 *a
任何帮助或解释? 谢谢
【问题讨论】:
-
您的命名约定令人困惑。
-
你试过
if((*a) == (*j))吗? -
我暂时换掉了它,因为我想:也许这会起作用......
-
这个函数给出的是交集,而不是并集。
-
您确实知道标准库中有一个
std::set_union()和朋友,对吧?
标签: c++ stl iterator set constants