2021-08-17

vector用值查找元素,map通过key查找元素。
vector用pushback插入内容,map用insert插入内容。
(1)vector
封装数组,使用连续内存存储,对随机访问的速度很快。
vector.size(); //返回容器中元素的个数
vecor.empty(); //判断容器是否为空
vector.resize(num); //重新定义容器的元素个数

QVctor res; //定义vector对象
res.pushback(“内容”) ; //在尾部插入内容
res.popback(“内容”); //移除尾部最后一个元素
QVctor::iterator iter;
for (iter=res.begin();it!=res.end();++iter){
qDebug()<<*iter;
}

(2)map
map是基于节点的容器,元素有序。使用下标操作,第一步是查找key是否存在,map的内部实现是二叉树(AVL树或者红黑树),采用二分查找。不管是否存在key,查找key 的时候,也已经确定了key的位置。因此,如果不存在key,干脆添加一个,反正已经知道添加位置,对于基于节点的容器,在知道插入位置的情况下,插入效率为常数时间.

在key值相同的时候value值会覆盖。

QMap<bool,QString> res; //定义一个map对象
res.insert(0,“内容”); //插入内容
QMap<bool,QString>::iterator it; //遍历map
iter=res.find(“内容”);
res.erase(iter); //删除特定内容
res.erase(res.begin(),res.end()); //全部删除
for ( it = res.begin(); it != res.end(); ++it ) {
qDebug()<<“获得键—值:”<<it.key()<<it.value();
}
(3)map和vector嵌套使用
1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std;
7 typedef map<string,string> STRING2STRING;
8 typedef map<string,vector> STRING2VECTOR;
9
10 int main()
11 {
12 map<string,string> map_test;
13 map_test.insert(STRING2STRING::value_type(“2001”,“test1”));
14 map_test.insert(STRING2STRING::value_type(“2002”,“test2”));
15 map_test.insert(STRING2STRING::value_type(“2003”,“test3”));
16 map_test.insert(STRING2STRING::value_type(“2004”,“test4”));
17 map_test.insert(STRING2STRING::value_type(“2005”,“test5”));
18
19 map<string,string>::const_iterator map_conitor=map_test.begin();
20 while(map_conitor!=map_test.end())
21 {
22 cout<<map_conitor->first<<" “<<map_conitor-second<<endl;
23 map_conitor++;
24 }
25 vector vec1;
26 vec1.push_back(“test1_vector1”);
27 vec1.push_back(“test1_vector2”);
28 vec1.push_back(“test1_vector3”);
29 vec1.push_back(“test1_vector4”);
30 vector vec2;
31 vec2.push_back(“test2_vector1”);
32 vec2.push_back(“test2_vector2”);
33 vec2.push_back(“test2_vector3”);
34 vec2.push_back(“test2_vector4”);
35
36 map<string,vector> testMap;
37 testMap.insert(STRING2VECTOR::value_type(“10001”,vec1));
38 testMap.insert(STRING2VECTOR::value_type(“10002”,vec2));
39
40 map<string,vector>::iterator map_it=testMap.begin();
41 while(map_it!=testMap.end())
42 {
43 cout<<map_it->first<<”/t";
44 vector::iterator mapvec_itor=map_it-second.begin();
45 for ( ; mapvec_itor != map_it->second.end(); mapvec_itor++)
46 {
47 cout<<(*mapvec_itor)<<" ";
48 }
49 cout<<endl;
50 }
51 map<string,vector >::iterator iter=testMap.find( “10002” );
52 if(iter!=testMap.end())
53 {
54 vector::iterator it = iter->second.begin();
55 while(it != iter->second.end())
56 {
57 cout<<(*it++)<<endl;
58 }
59 }
60 return 0;
61 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值