导航:首页 > 净水问答 > 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