Deque push_back () вставка по неверному индексу - PullRequest
0 голосов
/ 29 апреля 2020

Я создал двойную очередь с 6 элементами. Когда я пытаюсь добавить еще один элемент с помощью функции add (). Это удаляет последние 3 элемента, а затем вставляет на 4-й позиции. Не уверен, что мне не хватает.

    class FirstUnique {
    public:
        map<int,int> m;
        deque<int> d;
        FirstUnique(vector<int>& nums) {
            for(auto i: nums){
                d.push_back(i);
                m[i]++;
            }   
        }
        int showFirstUnique() {
            int i;
            for(i=0;i<d.size();i++){
                if(m[d.front()] == 1){
                    return d.front();
                }
                d.pop_front();
            }
            return -1;
        }

        void add(int value) {
            for(auto i: d)
                cout<<i<<" ";
            cout<<endl;
            d.push_back(value);
            m[value]++;
            for(auto i: d)
                cout<<i<<" ";
            cout<<endl;
            // cout<<value<<" "<<m[value]<<endl;

        }
    };
    int main(){
     vector<int> nums={7,7,7,7,7,7}
     FirstUnique* obj = new FirstUnique(nums);
     obj->add(7);
    }

obj-> add () делает deque как {7,7,7,7} вместо {7,7,7,7 , 7,7,7}

...