我有set < long long > A
。插入500个元素后:
ll k;
for ( int i=0 ; i<500 ; i++ ) {
cin >> k ;
A.insert (k) ;
}
现在我想改变元素的值,如:
A[0]--;
编译器给出了这个错误:
与'A [0]'
中的'operator []'不匹配
如果你帮助我,我将不胜感激。
答案 0 :(得分:0)
集合是元素的集合,您可以“拥有”或“不”拥有元素(如果您insert
数字6
五次,它仍然只计算和一次一样)。所以要删除erase
元素。在集合上使用[]
(或在它返回的内容上--
)没有多大意义。
也许您正在寻找另一种容器类型 - 也许是map<long long, int> B
,您可以使用B[k]++;
。然后您可以稍后执行B[0]--;
- 虽然如果未使用0
,您最终会在该元素中使用-1
,因此您可能希望使用(*B.begin())--;
代替 - 真的取决于你想要达到的目标。