1012: 数字
建议重做 这题用了hash,我已经基本忘掉了,
#include <bits/stdc++.h>
using namespace std;
const int N=1010;
char s[N];
int main(){
while(scanf("%s",s+1)!=EOF){
unordered_map<int,int> mp;
int l=strlen(s+1);
for(int i=1;i<=l;i++){
mp[s[i]-'0']++;
}
int m_id=0;
for(int i=1;i<10;i++)
{ //cout<<i<<"="<<mp[i]<<endl;
if(mp[m_id]<mp[i])
m_id=i;
}
printf("%d\n",m_id);
}
}
好的,这里为您详细介绍 std::map 和 std::unordered_map 的访问方式和常用函数。
首先,请确保在代码开头包含了对应的头文件:
std::map: #include
std::unordered_map: #include
共同的访问与常用函数
元素访问
operator[] (下标操作符):
功能: 访问指定键的值。如果该键不存在,会创建一个新的键值对,并将值初始化为其类型的默认值(例如 int 为 0,string 为空串等)。
示例:
#include
#include
#include
int main() {
std::map myMap;
std::unordered_map myUnorderedMap;
// 访问不存在的键,会创建并初始化为0
myMap['a']++; // myMap['a'] 现在是 1
myUnorderedMap['b'] += 10; // myUnorderedMap['b'] 现在是 10
// 访问已存在的键
std::cout second << std::endl;
} else {
std::cout << "Key 'a' not found." << std::endl;
}
.count(key):
功能: 计算指定键的元素数量。由于 map 和 unordered_map 不允许重复键,所以该函数返回 0(不存在)或 1(存在)。
示例:
if (myMap.count('e')) {
std::cout << "Key 'e' exists." << std::endl;
} else {
std::cout << "Key 'e' does not exist." << std::endl;
}
元素删除
.erase(key):
功能: 删除指定键的元素。返回被删除元素的数量(0 或 1)。
示例:
myMap.erase('a'); // 删除键为 'a' 的元素
.erase(iterator):
功能: 删除迭代器指向的元素。
示例:
auto it = myMap.find('b');
if (it != myMap.end()) {
myMap.erase(it); // 删除找到的元素
}
容量与状态
.size():
功能: 返回容器中的元素数量。
示例: std::cout << "Size: " << myMap.size() << std::endl;
.empty():
功能: 检查容器是否为空。若为空则返回 true。
示例: if (myMap.empty()) { /* ... */ }
容器操作
.clear():
功能: 清空容器,删除所有元素。
std::map 特有的函数
由于 std::map 是有序的,它提供了一些基于排序特性的额外函数:
.begin() / .end():
功能: 返回指向容器中第一个和最后一个元素之后位置的迭代器。对于 map,begin() 指向键最小的元素,end() 指向键最大的元素之后的位置。迭代器遍历时,元素按键的升序访问。
.lower_bound(key):
功能: 返回一个指向首个不小于(即大于或等于)key 的元素的迭代器。如果 key 不存在,它会指向下一个存在的更大键的元素;如果所有元素都小于 key,则返回 end()。
.upper_bound(key):
功能: 返回一个指向首个大于 key 的元素的迭代器。
.equal_range(key):
功能: 返回一个 std::pair,包含 lower_bound 和 upper_bound 的结果,可用于获取所有等于 key 的元素范围(在 map 中,这个范围最多只有一个元素)。

浙公网安备 33010602011771号