IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 2021-08-17 -> 正文阅读

[数据结构与算法]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 }

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-08-18 12:56:50  更:2021-08-18 12:59:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:37:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码