#include <unordered_map>
#include <vector>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @return int整型vector
     */
    vector<int> FindNumsAppearOnce(vector<int>& nums) {
        // write code here
        int l = nums.size();
        
        unordered_map<int, int> freqmap;
        for(int n:nums){
            freqmap[n]++;
        }
        vector<int> res;

        for(auto itor:freqmap){
            if(itor.second==1){
                res.push_back(itor.first);
            }
        }
        sort(res.begin(),res.end());
        return res;
    }
};

使用hashmap遍历数组,这个和前一道题差不多,拿到后遍历一下,然后符合条件的值插入,对结果数组排序就行

这里的问题是:

对for的范围循环了解不深刻,gpt总结

## 根本原因

1. **迭代器模式**:

for(auto itor = map.begin(); itor != map.end(); ++itor)

- `itor` 是一个迭代器对象(`std::unordered_map<...>::iterator`)

- 迭代器需要解引用才能访问元素,因此使用 `->` 运算符

- 等价于 `(*itor).first`

2. **范围for循环模式**:

for(auto itor : map)

- `itor` 是map中的元素(`std::pair<const Key, Value>`)

- 直接是元素本身,不是指针/迭代器,因此使用 `.` 运算符

还是对范围循环的理解不够深刻