STL中count方法总结

vector<>

在这里插入图片描述
没有count方法

map<,>

在这里插入图片描述
count(key)方法,但是由于map中元素是以键值对的形式存在,且键(key)是唯一的,所以count(key)最大返回1。

set<>

在这里插入图片描述
count(val)方法,但是由于set容器中各个元素的值是唯一的,因此该函数的返回值最大为1.

unordered_map<,>

在这里插入图片描述
count(key)方法,在容器中查找以key键的键值对的个数。与map相同,最大返回1。

unordered_set<>

在这里插入图片描述
conut(key)方法,与set类似,最大返回1。

总结

通过细看各个容器的count()方法,最终发现除了vector没有count方法外,其他容器都有,且都只能最大返回1。

所以这也揭开了我的一个疑惑,之前一直想着用容器.count()方法去计算容器内某个元素的个数,现在终于解惑了,容器中都是去重的(除了vector),并不需要计算个数。

而当我们用map或者unordered_map去存储某个元素出现多少次时,count方法只是一个先行的判断条件,判断是否存在,而不是判断有多少个。如果要判断个数,应该用下标描述,例如temp[num]。

例题

在这里插入图片描述

class Solution {
    
    
public:
    vector<int> intersect(vector<int>& nums1, vector<int>& nums2) 
    {
    
    
        if (nums1.size() > nums2.size()) 
        {
    
    
            return intersect(nums2, nums1);
        }
        vector<int> res;
        unordered_map<int,int> time;

        for(auto p : nums1)
        {
    
    
            time[p]++;
        }
        for(auto num : nums2)
        {
    
    
            if(time.count(num))  //这个是判断nums1中是否有num
            {
    
    
                cout<<time.count(num)<<endl;
                res.push_back(num);
                time[num]--;
                if(time[num]==0)
                {
    
    
                    time.erase(num);
                }
            }
        }
        return res;
    }
};

Supongo que te gusta

Origin blog.csdn.net/weixin_45847364/article/details/121657045
Recomendado
Clasificación