1樓:匿名使用者
1、map,顧名思義就是地圖。其實就是key,value的對應的對映。
當需要快速的獲取對應key的value的時候,就可以使用map了。例如一個人是有名字,但是這個人還有其他的屬性,例如年齡,性別等等。這個人就會被封裝為一個物件。
如果有很多個人,我們需要快速的根據一個人的名字獲取對應名字的物件,這個時候map就有用了。如果採用陣列,我們需要遍歷整個陣列,才可以根據名字找到這個人。如果是map(以名字為key,以人的物件為value),就可以直接根據名字得到這個物件,就不需要遍歷操作了。
c++的map是採用紅黑樹實現的,因此獲取value的效率為lgn級別。
2、例子:
map> mymap;
mapchildmap1;
childmap1.insert("childmap1item1","item1");
childmap1["chilemap1item2"]="item2";//若沒找到key為chilemap1item2的元素就則新增一個
mapchildmap2;
childmap2.insert(map::value_type("childmap2item1","item1"));
mymap.insert("childmap1",childmap1);
mymap.insert("childmap2",childmap2);
//若想從mymap中找到childmap1的key為"chilemap1item2"的元素,可以這麼做
map>::iterator it = mymap.find("childmap1");
map::iterator childiterator = it->second.find("chilemap1item2");
string value=childiterator->second;//value即為所求值
2樓:匿名使用者
#include
#include
#include
#include
using namespace std;
typedef mapmy_map;
void main()
3樓:匿名使用者
方法有三種,
1.通過pair鍵值對插入。mapobj.insert(pair("a","1"));
2.通過value_type插入。mapobj.insert(map::value_type(1,"a"));
3.通過陣列的方式插入。
mapobj[1] = "a";
mapobj[2] = "b";
任何時候都不要忘記求助msdn,最後祝你好運。
4樓:義昀欣
給你一個例子,你參照一下。
cmapmymap;
// add 10 elements to the map.
for (int i=0;i < 10;i++)mymap.setat( i, cpoint(i, i) );
// remove the elements with even key values.
position pos = mymap.getstartposition();
int nkey;
cpoint pt;
while (pos != null)
c++中,將map中的value存放在vector中進行排序之後,那麼怎樣取到相應的key值並順序輸出呢?
5樓:搗蒜大師
你只存放了value,用它找key只能遍歷map了。
為什麼不把key-value存放在vector裡面呢。
push_back一個pair就行了。
c++ map問題:如何指向map中最後一個元素?
6樓:啊啦拉韓玫
end是map的尾部,沒有實際元素,可以 iter = map.end(); iter --;
總結了一些map基本簡單實用的操作:
map最基本的建構函式;62616964757a686964616fe58685e5aeb931333365633930
mapmapstring; mapmapint;
mapmapstring; map< char ,string>mapchar;
mapmapchar; mapmapint;
2. map新增資料;
mapmaplive;
1.maplive.insert(pair(102,"aclive"));
2.maplive.insert(map::value_type(321,"hai"));
3, maplive[112]="april";//map中最簡單最常用的插入新增!
3.map中元素的查詢:
find()函式返回一個迭代器指向鍵值為key的元素,如果沒找到就返回指向map尾部的迭代器。
map::iterator l_it;;
l_it=maplive.find(112);
if(l_it==maplive.end())
cout<<"we do not find 112"<4,map中元素的刪除:
如果刪除112;
map::iterator l_it;;
l_it=maplive.find(112);
if(l_it==maplive.end())
cout<<"we do not find 112"<5,map中 swap的用法:
map中的swap不是一個容器中的元素交換,而是兩個容器交換;
for example:
#include
#include
using namespace std;
int main( )
{map m1, m2, m3;
map ::iterator m1_iter;
m1.insert ( pair ( 1, 10 ) );
m1.insert ( pair ( 2, 20 ) );
m1.insert ( pair ( 3, 30 ) );
m2.insert ( pair ( 10, 100 ) );
m2.insert ( pair ( 20, 200 ) );
m3.insert ( pair ( 30, 300 ) );
cout << "the original map m1 is:";
for ( m1_iter = m1.begin( ); m1_iter != m1.end( ); m1_iter++ )
cout << " " << m1_iter->second;
cout << "." << endl;
// this is the member function version of swap
//m2 is said to be the argument map; m1 the target map
m1.swap( m2 );
6.map的sort問題:
map中的元素是自動按key升序排序,所以不能對map用sort函式:
for example:
#include
#include
using namespace std;
int main( )
{map m1;
map ::iterator m1_iter;
m1.insert ( pair ( 1, 20 ) );
m1.insert ( pair ( 4, 40 ) );
m1.insert ( pair ( 3, 60 ) );
m1.insert ( pair ( 2, 50 ) );
m1.insert ( pair ( 6, 40 ) );
m1.insert ( pair ( 7, 30 ) );
cout << "the original map m1 is:" c++ maps是一種關聯式容器,包含“關鍵字/值”對 begin() 返回指向map頭部的迭代器 clear() 刪除所有元素 count() 返回指定元素出現的次數 empty() 如果map為空則返回true end() 返回指向map末尾的迭代器 equal_range() 返回特殊條目的迭代器對 erase() 刪除一個元素 find() 查詢一個元素 get_allocator() 返回map的配置器 insert() 插入元素 key_comp() 返回比較元素key的函式 lower_bound() 返回鍵值》=給定元素的第一個位置 max_size() 返回可以容納的最大元素個數 rbegin() 返回一個指向map尾部的逆向迭代器 rend() 返回一個指向map頭部的逆向迭代器 size() 返回map中元素的個數 swap() 交換兩個map upper_bound() 返回鍵值》給定元素的第一個位置 value_comp() 返回比較元素value的函式 map也是可以遍歷的,你遍歷一遍就知道了 maptest for map iterator iter test.begin iter test.end iter map和vector不同,如果使用下標符號訪問不存在的元素會將該元素新增進map 比如如下編寫程式時 map word count wor... 錄音棚裡錄歌時,耳機裡放的是伴奏的 錄音棚裡戴的耳機又稱之為監聽耳機,言外之意就是歌手在錄音的時候也可以同時監聽到自己的聲音,錄音的時候是否出錯就可以通過耳機聽得到!另外也是歌手與錄音師溝通的一個工具之一。錄音棚室一個完全隔絕聲音的聲學環境,因此在錄音棚裡的歌手要聽到監控室裡錄音師的說話,是要通過耳... 一棵無所不知的小白菜 1 首先,定義一個實型變數n,儲存取整的數值。2 用ceil函式對實數5.78取整,取整後的數值儲存在變數n中。3 輸出取整後的數值n。4 執行程式,輸出的值為6,這是因為ceil是對實數向上取整。5 ceil函式是否是四捨五入向上取整呢?接著,將ceil內的數更改為5.18。...C請問怎麼獲取map的元素呢
在錄音棚裡錄歌,耳機裡面放的是什麼啊
C 裡面,取整的函式是什麼,在 C語言中 取整 , 求餘的符號各是什麼?