更改集数据结构元素的值?

时间:2013-05-26 05:53:11

标签: c++ set

我有set < long long > A。插入500个元素后:

ll k;
for ( int i=0 ; i<500 ; i++ ) {
    cin >> k ;
    A.insert (k) ;
}

现在我想改变元素的值,如:

A[0]--;

编译器给出了这个错误:

  

与'A [0]'

中的'operator []'不匹配

如果你帮助我,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

集合是元素的集合,您可以“拥有”或“不”拥有元素(如果您insert数字6五次,它仍然只计算和一次一样)。所以要删除erase元素。在集合上使用[](或在它返回的内容上--)没有多大意义。

也许您正在寻找另一种容器类型 - 也许是map<long long, int> B,您可以使用B[k]++;。然后您可以稍后执行B[0]--; - 虽然如果未使用0,您最终会在该元素中使用-1,因此您可能希望使用(*B.begin())--;代替 - 真的取决于你想要达到的目标。