C++ map

來源:互聯網
上載者:User

標籤:algorithm   運算子   處理   移除   begin   參數   max   問題:   技術   

map就是從鍵(key)到值(value)的映射

問題:

輸入一些單詞,找出所有滿足如下條件的單詞:該單詞不能通過字母重排得到輸入文本中的另外一個單詞

在判斷是否滿足條件時,字母不區分大小寫,但在輸出時應保留輸入中的大小寫,按照字典序進行排序(所有大小字母在小寫字母的前面)

思路:

標準化字串 ,利用map映射儲存單詞以及在輸入的單詞中與該單詞匹配的次數,根據次數判斷滿足條件的單詞並輸出

代碼:

 1 #include<iostream> 2 #include<string> 3 #include<map> 4 #include<vector> 5 #include<algorithm> 6 using namespace std; 7 map<string,int>tem;//建立以字串為鍵 int型資料為值的映射關係 ,即為建立了以string為下標的int型數組                    8 vector<string>txt; 9 10 string stdr(const string& c)11 {12     string ans=c;13     for(int i=0;i<c.length();i++)14     ans[i]=tolower(ans[i]);15     sort(ans.begin(),ans.end());16     return ans;17 } 18 int main()19 {20     string test;21     while(cin>>test)//邊輸入邊處理 22     {23         txt.push_back(test);//壓入vector txt 24         string s=stdr(test);//標準化字串25         if(tem.count(s)==1) tem[s]++;//有匹配++ 26         else tem[s]=1;    //沒有匹配則置1 27     }28     vector<string>ans;//儲存結果29     for(int i=0;i<txt.size();i++)30     {31         if(tem[stdr(txt[i])]==1)ans.push_back(txt[i]);32     } 33     sort(ans.begin(),ans.end());34     for(int i=0;i<ans.size();i++)35     cout<<ans[i]<<endl;36     37     38 } 
View Code

map常用函數:

  

at 尋找具有指定索引值的元素。
begin 返回一個迭代器,此迭代器指向映射中的第一個元素。
cbegin 返回一個常量迭代器,此迭代器指向映射中的第一個元素。
cend 返回一個超過末尾常量迭代器。
clear 清除映射的所有元素。
count 返回映射中其鍵與參數中指定的鍵匹配的元素數量。
crbegin 返回一個常量迭代器,此迭代器指向反向映射中的第一個元素。
crend 返回一個常量迭代器,此迭代器指向反向映射中最後一個元素之後的位置。
emplace 將就地構造的元素插入到映射。
emplace_hint 將就地構造的元素插入到映射,附帶位置提示。
empty 如果映射為空白,則返回 true。
end 返回超過末尾迭代器。
equal_range 返回一對迭代器。 此迭代器對中的第一個迭代器指向 map 中其鍵大於指定鍵的第一個元素。 此迭代器對中的第二個迭代器指向 map 中其鍵等於或大於指定鍵的第一個元素。
erase 從指定位置移除映射中的元素或元素範圍。
find 返回一個迭代器,此迭代器指向映射中其鍵與指定鍵相等的元素的位置。
get_allocator 返回用於構造映射的 allocator 對象的副本。
insert 將元素或元素範圍插入到映射中的指定位置。
key_comp 返回用於對映射中的鍵進行排序的比較對象副本。
lower_bound 返回一個迭代器,此迭代器指向映射中其索引值等於或大於指定鍵的索引值的第一個元素。
max_size 返回映射的最大長度。
rbegin 返回一個迭代器,此迭代器指向反向映射中的第一個元素。
rend 返回一個迭代器,此迭代器指向反向映射中最後一個元素之後的位置。
size 返回映射中的元素數量。
swap 交換兩個映射的元素。
upper_bound 返回一個迭代器,此迭代器指向映射中其索引值大於指定鍵的索引值的第一個元素。
value_comp 檢索用於對映射中的元素值進行排序的比較對象副本。
shrink_to_fit 放棄額外容量。

map插入

1.用insert

對於map<string, int>map_str,有以下幾種插入方式:

map_str.insert(make_pair("key", 23));             // 將索引值對{"key", 23}插入到映射中

map_str.insert({"key", 23});                          // 將索引值對{"key", 23}插入到映射中

map_str.insert(map_str.begin()+2, make_pair("key", 23));   // 在第二個位置插入{"key", 23}索引值對

2.用數組 因為重載了[]運算子

 

C++ map

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.