#44992: C++ map用法 (我也是剛學會 其實不難 不像其他人教的那麼難或暴力)


1121228@stu.wghs.tp.edu.tw (你知道我是誰嗎!!??)

學校 : 臺北市私立薇閣高級中學
編號 : 266561
來源 : [60.248.154.139]
最後登入時間 :
2025-08-21 12:45:57

#include <bits/stdc++.h>

using namespace std;

int main() {
    string S, key;
    int t = 1;
    map<string, string> country{    // 先建一個6個國家的對照表
        {"HELLO", "ENGLISH"},
        {"HOLA", "SPANISH"},
        {"HALLO", "GERMAN"},
        {"BONJOUR", "FRENCH"},
        {"CIAO", "ITALIAN"},
        {"ZDRAVSTVUJTE", "RUSSIAN"}
    };
    while(cin >> S && S != "#"){
        cout << "Case " << t << ": ";
        // 利用 map 中的 find 查看是否有對應的 key (country.end() 是沒有對應 key)
        cout << ((country.find(S) != country.end()) ? country[S] : "UNKNOWN") << endl;
        t++;    // 紀錄是 case 幾
    }
    return 0;
}
#52799: Re: C++ map用法 (我也是剛學會 其實不難 不像其他人教的那麼難或暴力)


kenny980721.tu@gmail.com (有事直接私)

學校 : 國立中興大學附屬高級中學
編號 : 290039
來源 : [220.134.29.87]
最後登入時間 :
2025-09-13 17:26:11

補充一下,如果map已經會了,也可以來練unordered_map喔

 

特性map unordered_map
底層實作平衡二元搜尋樹(通常是紅黑樹)Hash Table(雜湊表)
元素順序key 有序(從小到大)key 無序(插入順序不保證)
查找/插入/刪除時間複雜度O(log n)平均 O(1),最壞 O(n)
記憶體使用較低較高
迭代順序遞增順序任意順序(不保證)
支援 .count(key) / .find(key)
#include<iostream>
#include<unordered_map>
using namespace std;
int main() {
    ios::sync_with_stdio(0);cin.tie(0);
	
	unordered_map<string,string> umap{
	    {"HELLO" , "ENGLISH"},
	    {"HOLA" , "SPANISH"},
	    {"HALLO" , "GERMAN"},
	    {"BONJOUR" , "FRENCH"},
	    {"CIAO" , "ITALIAN"},
	    {"ZDRAVSTVUJTE" , "RUSSIAN"}
	};
	
	string s;
	int t=1;
	while(cin >> s and s!="#"){
	    cout << "Case " << t << ": ";
//.count()可用來查找kay是否存在,若存在傳回1,反之傳回0 if(umap.count(s))cout << umap[s] << "\n"; else cout << "UNKNOWN\n"; t++; } }

btw 版主好像寫了一個string key;但沒有用到耶

 

有錯歡迎指教