導航:首頁 > 凈水問答 > multimap數據過濾

multimap數據過濾

發布時間:2022-07-03 16:32:06

『壹』 c++里 為什麼multimap比 vector插入時用的時間少

vector的底層數據結構是順序表,而multimap是紅黑樹。
順序表本質上是數組,假設某一時刻順序表中有n個元素,向其中插入一個元素x,大於x的元素有m個,那麼需要最少logn的時間找到插入的位置(二分查找),以及m的時間將該位置之後的m個元素全部後移一個單位,因此總共所需的時間復雜度是O(n)。
紅黑樹是一種自平衡二叉查找樹,假設某一時刻樹中有n個結點,則高度為logn,向其中插入一個元素x,需要logn的時間找到插入的位置,以及平均logn的時間用於旋轉調整樹結構(這個時間的推導比較復雜,需要考慮各種旋轉情況),因此總共所需的時間復雜度是O(logn)。

『貳』 set,multiset,map,multimap是什麼STL裡面的,怎麼理解怎麼用

都是C++標准庫(STL)裡面的容器,用於存放程序要處理的數據,用於統計或者查找等作用

我只能做個簡述,因為網上已經有很多解析了
http://ke..com/subview/332356/10428592.htm?fr=aladdin

『叄』 在C++中,multimap中如果有一個key對應了幾個value,那麼怎樣才能將它對應的value一一輸出

1、定義一個數組,其中value有重復部分。

『肆』 請問STL容器類multimap<CString[10],config> DataMap怎麼插入數據

問題可能在於CString[10],編譯警告cannot specify explicit initializer for arrays。
如果不是數組,則可以用Data.insert(multimap<CString,config>::value_type(strArray,configData))。

另外,資料上說,在multimap中,不支持operator[],也就是說不支持map中允許的下標操作。

『伍』 如何列出multimap中某個key的所有value

對於key - value這種情況的數據,不允許重復的可以選擇map存儲 如果key有重復的情況,可以選擇使用multimap。使用方法跟map一樣 問題解決,請採納!

『陸』 c++ map、multimap基本用法是啥,下面這個代碼看不懂

map就是哈希表,用來儲存成對的數據key和val
map<char,int> m;
m.insert(make_pair('0',10));//插入數據,make_pair這個東西就要看自己體會了,實在不知道怎麼解釋
m.insert(make_pair('1',11));
m.insert(make_pair('2',12));
下面從map中讀取數據,直接把key當做下標就可以得到val,只有哈希表能做這樣的事情,其他如vector,list等都不行,這是哈希表最明顯的特徵
cout<<m['1']<<endl;輸出11
cout<<m['4']<<endl;輸出0

map還有兩個特點
默認情況下插入數據的時候會自動按key排序
key不能重復,重復插入無效

map和multimap唯一的區別就在於2,multimap可以插入key相同的數據,用一個例子解釋
#include "stdafx.h"

#include <map>

using namespace std;

void showmap(map<int,char> mp)
{
printf("\n");
for(map<int,char>::iterator iter=mp.begin();iter!=mp.end();++iter)
{
printf("%d-%c\n",iter->first,iter->second);
}
printf("\n");
}
void showmultimap(multimap<int,char> mmp)
{
printf("\n");
for(multimap<int,char>::iterator iter=mmp.begin();iter!=mmp.end();++iter)
{
printf("%d-%c\n",iter->first,iter->second);
}
printf("\n");
}

int _tmain(int argc, _TCHAR* argv[])
{

map<int,char> mp;
mp.insert(make_pair<int,char>(0,48));
mp.insert(make_pair<int,char>(1,49));
mp.insert(make_pair<int,char>(2,50));
mp.insert(make_pair<int,char>(3,51));
mp.insert(make_pair<int,char>(1,52));

showmap(mp);

multimap<int,char> mmp;
mmp.insert(make_pair<int,char>(0,48));
mmp.insert(make_pair<int,char>(1,49));
mmp.insert(make_pair<int,char>(2,50));
mmp.insert(make_pair<int,char>(3,51));
mmp.insert(make_pair<int,char>(1,52));

showmultimap(mmp);

getchar();
return 0;
}

運行結果:

0-0
1-1
2-2
3-3

0-0
1-1
1-4
2-2
3-3

對於map,key是唯一的,如果已經存在key了,再次插入想同key無效
multimap的key可以有多個

『柒』 C++ stl multimap裡面的pair是什麼作用,功能

map就是哈希表,用來儲存成對的數據key和val
map<char,int> m;
m.insert(make_pair('0',10));//插入數據,make_pair這個東西就要看自己體會了,實在不知道怎麼解釋
m.insert(make_pair('1',11));
m.insert(make_pair('2',12));
下面從map中讀取數據,直接把key當做下標就可以得到val,只有哈希表能做這樣的事情,其他如vector,list等都不行,這是哈希表最明顯的特徵
cout<<m['1']<<endl;輸出11
cout<<m['4']<<endl;輸出0
map還有兩個特點
默認情況下插入數據的時候會自動按key排序
key不能重復,重復插入無效
map和multimap唯一的區別就在於2,multimap可以插入key相同的數據,用一個例子解釋
#include "stdafx.h"
#include <map>
using namespace std;
void showmap(map<int,char> mp)
{
printf("\n");
for(map<int,char>::iterator iter=mp.begin();iter!=mp.end();++iter)
{
printf("%d-%c\n",iter->first,iter->second);
}
printf("\n");
}
void showmultimap(multimap<int,char> mmp)
{
printf("\n");
for(multimap<int,char>::iterator iter=mmp.begin();iter!=mmp.end();++iter)
{
printf("%d-%c\n",iter->first,iter->second);
}
printf("\n");
}
int _tmain(int argc, _TCHAR* argv[])
{
map<int,char> mp;
mp.insert(make_pair<int,char>(0,48));
mp.insert(make_pair<int,char>(1,49));
mp.insert(make_pair<int,char>(2,50));
mp.insert(make_pair<int,char>(3,51));
mp.insert(make_pair<int,char>(1,52));
showmap(mp);
multimap<int,char> mmp;
mmp.insert(make_pair<int,char>(0,48));
mmp.insert(make_pair<int,char>(1,49));
mmp.insert(make_pair<int,char>(2,50));
mmp.insert(make_pair<int,char>(3,51));
mmp.insert(make_pair<int,char>(1,52));
showmultimap(mmp);
getchar();
return 0;
}
運行結果:
0-0
1-1
2-2
3-3
0-0
1-1
1-4
2-2
3-3
對於map,key是唯一的,如果已經存在key了,再次插入想同key無效
multimap的key可以有多個

『捌』 C++中multimap容器中的內容進行文件讀寫 100分,100分,答得好還加

你如果不是很了解的話,就先從簡單數據類型組成的multimap想起。
下面是MSDN上的一段代碼,希望能幫助你理解它的查找和讀寫。
#include <map>
#include <iostream>

int main( )
{
using namespace std;
typedef pair <int, int> Int_Pair;
multimap <int, int>::iterator m1_Iter, m3_Iter, m4_Iter, m5_Iter, m6_Iter;
multimap <int, int, greater<int> >::iterator m2_Iter;

// Create an empty multimap m0 of key type integer
multimap <int, int> m0;

// Create an empty multimap m1 with the key comparison
// function of less than, then insert 4 elements
multimap <int, int, less<int> > m1;
m1.insert( Int_Pair( 1, 10 ) );
m1.insert( Int_Pair( 2, 20 ) );
m1.insert( Int_Pair( 3, 30 ) );
m1.insert( Int_Pair( 4, 40 ) );

// Create an empty multimap m2 with the key comparison
// function of geater than, then insert 2 elements
multimap <int, int, greater<int> > m2;
m2.insert( Int_Pair( 1, 10 ) );
m2.insert( Int_Pair( 2, 20 ) );

// Create a multimap m3 with the
// allocator of multimap m1
multimap <int, int>::allocator_type m1_Alloc;
m1_Alloc = m1.get_allocator( );
multimap <int, int> m3( less<int>( ), m1_Alloc );
m3.insert( Int_Pair( 3, 30 ) );

// Create a , multimap m4, of multimap m1
multimap <int, int> m4( m1 );

// Create a multimap m5 by ing the range m1[_First, _Last)
multimap <int, int>::const_iterator m1_bcIter, m1_ecIter;
m1_bcIter = m1.begin( );
m1_ecIter = m1.begin( );
m1_ecIter++;
m1_ecIter++;
multimap <int, int> m5( m1_bcIter, m1_ecIter );

// Create a multimap m6 by ing the range m4[_First, _Last)
// and with the allocator of multimap m2
multimap <int, int>::allocator_type m2_Alloc;
m2_Alloc = m2.get_allocator( );
multimap <int, int> m6(m4.begin( ), ++m4.begin( ), less<int>( ), m2_Alloc);

cout << "m1 =";
for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )
cout << " " << m1_Iter -> second;
cout << endl;

cout << "m2 =";
for ( m2_Iter = m2.begin( ); m2_Iter != m2.end( ); m2_Iter++ )
cout << " " << m2_Iter -> second;
cout << endl;

cout << "m3 =";
for ( m3_Iter = m3.begin( ); m3_Iter != m3.end( ); m3_Iter++ )
cout << " " << m3_Iter -> second;
cout << endl;

cout << "m4 =";
for ( m4_Iter = m4.begin( ); m4_Iter != m4.end( ); m4_Iter++ )
cout << " " << m4_Iter -> second;
cout << endl;

cout << "m5 =";
for ( m5_Iter = m5.begin( ); m5_Iter != m5.end( ); m5_Iter++ )
cout << " " << m5_Iter -> second;
cout << endl;

cout << "m6 =";
for ( m6_Iter = m6.begin( ); m6_Iter != m6.end( ); m6_Iter++ )
cout << " " << m6_Iter -> second;
cout << endl;
}

閱讀全文

與multimap數據過濾相關的資料

熱點內容
液相用溶劑過濾器 瀏覽:674
納濾水導電率 瀏覽:128
反滲透每小時2噸 瀏覽:162
做一個純凈水工廠需要多少錢 瀏覽:381
最終幻想4回憶技能有什麼用 瀏覽:487
污水提升器采通 瀏覽:397
反滲透和不發滲透凈水器有什麼區別 瀏覽:757
提升泵的揚程 瀏覽:294
澤德提升泵合肥經銷商 瀏覽:929
飲水機後蓋漏水了怎麼辦 瀏覽:953
小型電動提升器 瀏覽:246
半透膜和細胞膜區別 瀏覽:187
廢水拖把池 瀏覽:859
十四五期間城鎮污水處理如何提質增效 瀏覽:915
怎麼測試空氣凈化器的好壞 瀏覽:519
提升泵是幹嘛的 瀏覽:744
布油做蒸餾起沫咋辦 瀏覽:252
廣州工業油煙凈化器一般多少錢 瀏覽:204
喜哆哆空氣凈化器效果怎麼樣 瀏覽:424
油煙凈化器油盒在什麼位置 瀏覽:582