Я создал двойную очередь с 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}