提问者:小点点

如何访问向量<int>到int的映射?


我有一段代码,在这里我创建了一个从vector到int的映射。

我用auto迭代地图,但即使我可以访问向量的大小,我也不能按到键。

那是不允许的吗?

    int numberOfArithmeticSlices(vector<int>& A) {
        map<vector<int>, int> m;
        for(int i=0; i<A.size(); i++){
            m[{A[i]}] = 0;
            for(auto it: m){
                if(it.first.size() == 1){
                    it.first.push_back(A[i]);
                    it.second = A[i]-it.first[0];
                }
                else{
                    if(A[i]-it.first.back() == it.second){
                        it.first.push_back(A[i]);
                    }
                }
            }
        }
        int ans=0;
        for(auto it:m){
            if(it.first.size()>2)
                ans++;
        }
        return ans;
    }

我得到的错误是:调用PUSH_BACK没有匹配的成员函数


共1个答案

匿名用户

std::map中将键添加到映射后,您不能更改该键的值。 唯一的出路是擦除密钥,并在进行更改后重新插入它。

查看下面的内容,了解如何从std::map中擦除密钥。

顺便说一下,为什么不使用指向std::vector的指针作为键,而不使用std::vector本身呢? 这比重新构造向量来添加它更有效。

如果您使用指向向量的指针作为键,那么您将不需要为了对向量进行更改而更改键。 确保动态声明向量。