程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++溫習-標准庫-map

C++溫習-標准庫-map

編輯:C++入門知識

C++溫習-標准庫-map


關於map,也就是字典,kv鍵值對。

在C++中,它是一個類模板,它是屬於一個關聯容器類模板

template < class Key,                                     // map::key_type
           class T,                                       // map::mapped_type
           class Compare = less,                     // map::key_compare
           class Alloc = allocator >    // map::allocator_type
           > class map;

我們在新建map類型的時候,必須提供Key 和Value的類型,可選提供比較器和配置器,一般只是在使用自己的類型的時候,才需要提供。

map中,Key是唯一的,不能有多個相同的key,而且都是按照key的大小排序的,也就是說map都是自動排序的,

map裡面的數據存儲為pair

typedef pair value_type;

常用的成員變量:

value_type;//pair
iterator;//迭代器,指向value_type
const_iterator;//常量迭代器
reverse_iterator;//逆向迭代器
const_reverse_iterator;//常量,逆向

常用的成員函數:

//1. 迭代器
begin();
end();
rbegin();
rend();
cbegin();//以下C++11新加入
cend();
crbegin();
crend();
//以上都是返回迭代器,其中r開頭的表示返回的是逆向的迭代器,c開頭的表示返回的是const迭代器。


//2. 容量:
empty();//測試map是否為空
size();//返回容器的大小;

//3. 獲取元素
operator[];//可以像普通的數組一樣的方式使用。
at(const key_type& k);//C++11新加方法。

//4. 增刪改查
insert(const value_type& val);//增
erase(iterator position);//刪
size_type erase (const key_type& k);//刪
void erase (iterator first, iterator last);//刪
clear();//刪除所有的數據。
find (const key_type& k);//查
count (const key_type& k);//與find有點功能重復,因為map的key是唯一的,所以count只能返回兩個值,0或者1,分別表示存在這個key或者不存在。


字典應該是平時編程中很經常用到的一個數據結構。比如,有時候需要計算一篇文章中的每個單詞出現的次數,以形成文章的詞向量。

#include
#include
using namespace std;
int main()
{
    string temp;
    map word_count;
    cout<<"please input the word your want to count, and input the ctrl+D to end of the input"<>temp)
    {
    cout<<"input word:";
       // word_count[temp]++;
        // word_count.insert(pair(temp,1);
         if( word_count.find(temp)==word_count.end())
         {
         word_count.insert(pair(temp,1));
     }
     else
      {
         word_count[temp]++;
      }
    }
    int num_word=word_count.size();
    cout<<"The number of word is:"<::iterator itera;
    for(itera=word_count.begin();itera!=word_count.end();itera++)
    {
        cout<<"word: "<first<<" occur"<second<<" times"<

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved