我刚开始使用c ++ stl,但是我无法找出错误...非常感谢您的帮助...
int count = 0 ;
while (!s.empty())
{
s.erase(--s.end());
set<int >::iterator it;
for (it = s.begin(); it != s.end(); it++)
{
if (*it > 0)
* it -= r; //*error : expression must be modifiable lvalue
//r is a constant
else
s.erase(it);
}
count++;
}
cout << count;
set的迭代器是常量,无法对其进行修改。
成员类型的迭代器和const_iterator可能是相同的类型。这意味着使用定义一对函数重载两种类型的参数类型可能违反“一个定义规则”。由于迭代器可转换为const_iterator,因此一个函数使用const_iterator作为参数类型将代替。
元素也是恒定的,您也无法修改它们。
您的问题的解决方案是删除您想要修改的元素,然后插入您想要的新元素。