1樓:
map也是可以遍歷的,你遍歷一遍就知道了
maptest;
for (map::iterator iter = test.begin(); iter != test.end(); ++iter)
2樓:匿名使用者
map和vector不同,如果使用下標符號訪問不存在的元素會將該元素新增進map
比如如下編寫程式時:
map word_count;
word_count["anna"]=1;
將發生以下事情:
1在word_count中查詢建為anna的元素,沒有找到2將一個新的鍵-值對插入word_count中。它的鍵是const string型別的物件,儲存anna,值採用值初始化
3將這個新的鍵-值對插入word_count中4讀取新插入的元素,並將它的值賦為1
所以一般訪問map中的元素採用其成員函式
m.find(k)
如果m容器中存在按k索引的元素,則返回指向該元素的迭代器。如果不存在,則返回超出末端迭代器!
3樓:匿名使用者
用map的迭代器:
typedef mapyourmap; /* 假設這是你定義的map型別 */
yourmap temp; /* 假設這是你的map */
yourmap iterator it = temp.begin();
while(it != temp.end())
4樓:
通過key,比如
mapmymap;
mymap['a'] = "an element";
cout << mymap['a'];
你真是這種用途何必用map,根本用不到key/value對
c++/stl/map中怎樣獲取map中第i個元素
5樓:匿名使用者
map將key和value組成的pair作為元素,根據key的排序準則自動將元素排序,map中的存取封裝了二叉樹,因此map按照自專己的演算法來進
屬行存取,跟你給元素賦值的順序無關,無論哪一個先賦值最終的map中資料排列屬性都是:m[3]=2;m[6]=7;m[9]=3;m[100]=9; 即按照key的大小進行了排序。m[3]=2;m[6]=7;m[9]=3;m[100]=9情況你說的第三個是m[9]=3,如果m[9]=3;m[100]=9;m[3]=2;m[6]=7;你所謂的第三個元素是不是就是:
m[3]=2? 這種情況插入到map後map第三個資料依然是m[3]=3.
map就是為了按照key來進行key-value的檢視,可以考慮使用list 將鍵值對做到一個list中,list是順序存取的,你取的順序根據有的存順序決定。
6樓:匿名使用者
map內部是用紅黑樹實現的,既然是樹,怎麼說是“第3個元素”呢?
7樓:du瓶邪
#include
#include
#include
int main()top
c++ 中map中是數怎麼經過for迴圈提取出來,
8樓:
定義一個迭代器(以int&int的map為例):map::iterator mapi;
然後遍歷map就可以寫成
for(mapi=map.begin;mapi!=map.end;mapi++)
9樓:索貝爾上尉
沒理解你取前幾個數是什麼意思,是取出前幾個pair還是取出每個pair的第一個元素還是每個pair的第二個元素?
10樓:丨鳳雛丨
cmapmymap;
int i;
mymap.inithashtable( 257 );
// add 10 elements to the map.
for (i=0;i < 200;i++)mymap[i] = cpoint(i, i);
// remove the elements with even key values.
cpoint pt;
for (i=0; mymap.lookup( i, pt ) ;i+=2)
#ifdef _debug
assert(mymap.getcount() == 100);
afxdump.setdepth( 1 );
afxdump << "mymap: " << &mymap << "\n";
#endif
11樓:
定義一個 int step = 0;
每次迴圈+1;
if (step >= k)
break;
c++ map問題:如何指向map中最後一個元素?
12樓:啊啦拉韓玫
end是map的尾部,沒有實際元素,可以 iter = map.end(); iter --;
總結了一些map基本簡單實用的操作:
map最基本的建構函式;
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的函式 推薦幾本書 如果你看過c方面的東西 第一本 thinking in c 轉變到c 的模式 然後 the c programming language c 之父的經典之作,無可替代 inside the c object model 需要一定的基礎,先過一遍,對程式有一定理解了需要再一點點的慢慢看。看... 念憶 如果是用陣列,陣列a,int index,可以用 push num 函式就是 a index num index pop 就是 index return a index 語言特點 在c 中,類是支援資料封裝的工具,物件則是資料封裝的實現。c 通過建立使用者定義類支援資料封裝和資料隱藏。在物件導... 聽時間流逝 我當初學c的時候有過和你一樣的想法,但是陣列的記憶體只能靜態分配,所以你必須指明陣列的大小。比如 int a 10 char ch i love china 一個顯式指定大小,一個是隱式指定。 逐夢兮樂 這個陣列不能是變數,只能是常量,沒法設定的。 浪尖上打禪 這其實就是動態開闢陣列,需...高分請問各位c大哥大姐c 怎麼學呀,入門的呢?謝謝
C怎麼輸出棧中的所有元素,C 怎麼輸出一個棧中的所有元素?
請問在C語言裡如何將陣列元素的個數設為輸入的值