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;
}
};