C++ 地图STL的第二个元素的默认值?

C++ 地图STL的第二个元素的默认值?,c++,dictionary,data-structures,stl,C++,Dictionary,Data Structures,Stl,如果使用数组初始化map STL中的第二个元素,那么它的默认值是多少? 例如: #include <bits/stdc++.h> using namespace std; void countFreq(int arr[], int n) { unordered_map<int, int> mp; // Traverse through array elements and // count frequencies

如果使用数组初始化map STL中的第二个元素,那么它的默认值是多少? 例如:

 #include <bits/stdc++.h> 
using namespace std; 
  
void countFreq(int arr[], int n) 
{ 
    unordered_map<int, int> mp; 
  
    // Traverse through array elements and 
    // count frequencies 
    for (int i = 0; i < n; i++) 
        mp[arr[i]]++; 
  
    // Traverse through map and print frequencies 
    for (auto x : mp) 
        cout << x.first << " " << x.second << endl; 
} 
  
int main() 
{ 
    int arr[] = { 10, 20, 20, 10, 10, 20, 5, 20 }; 
    int n = sizeof(arr) / sizeof(arr[0]); 
    countFreq(arr, n); 
    return 0; 
} 
#包括
使用名称空间std;
无效计数频率(整数arr[],整数n)
{ 
无序地图mp;
//遍历数组元素和
//计数频率
对于(int i=0;icout映射的第二个元素在至少尝试访问其密钥一次后,默认情况下初始化为0(如果其类型是代码中的int)。因此,当您第一次访问某个元素x时,mp[x]变为0,然后在代码中计数时增加1

如果使用数组初始化map STL中的第二个元素,那么它的默认值是什么

使用
运算符[]访问
std::map
中的键值对(kvp)时
,或者密钥已经存在,或者构造了新的kvp,并且映射的类型为。初始化的值
int
始终为0。这要求它必须是默认可构造的。请注意,您还可以使用成员函数访问映射中的条目,如果找不到密钥,该函数将抛出

该程序如何通过访问map mp的第二个元素来返回数组中元素的频率

您已经在代码段中正确地执行了此操作。您可以使用或,它们提供了一个成员函数,即键的频率

#include <set>
#include <iostream>

int main() 
{
    int arr[] = { 10, 20, 20, 10, 10, 20, 5, 20 }; 
    std::multiset<int> freq (std::begin(arr), std::end(arr));

    for(auto elem = freq.begin();
        elem != freq.end();
        elem=freq.upper_bound(*elem)) // Traverse the unique elements
    {
        std::cout << *elem << " count: " << freq.count(*elem) << "\n";
    }
}
#包括
#包括
int main()
{
int arr[]={10,20,20,10,10,20,5,20};
std::multiset freq(std::begin(arr)、std::end(arr));
对于(自动元素=频率开始();
元素!=频率结束();
elem=freq.upper_bound(*elem))//遍历唯一元素
{

std::cout映射中未包含的项的默认值为0。@drescherjm假设您使用运算符[]是的,新映射值为。对于
int
,这意味着。当
mp[arr[i]]++< /COD>执行它或增加现有值,或者如果需要,创建一个新的键值对,0在增量之前初始化值。对发生的描述是在。如果你对C++文档是新的,可能不清楚但是细节是存在的。