0

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

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

现在当我想改变元素的值时:

A[0]--;

编译器给了我这个错误:

'A[0]' 中的 'operator[]' 不匹配

如果您能帮我解决这个问题,我将不胜感激。

4

1 回答 1

0

集合是元素的集合,其中您“拥有”或“不”拥有一个元素(因此,如果您insert将数字6重复五次,它仍然只计为一次)。所以要删除你的元素erase吧。[]在集合上使用(或对返回的内容进行操作)没有多大意义--

也许您正在寻找使用另一种容器类型 - 可能是map<long long, int> B您使用的容器类型B[k]++;。然后你可以B[0]--;稍后再做 - 虽然如果0不使用,你最终会-1在那个元素中,所以你可能想要使用(*B.begin())--;- 真的取决于你想要实现的目标。

于 2013-05-26T06:00:03.460 回答