STL组件容器

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 1.序列容器 STL序列容器有 vector  提供对变长序列的随机访问,插入和删除操作时间均为分摊常量 deque  提供对变长序列的随机访问,插入和删除操作时间均为分摊常量 list  提供对变长序列的线性访问(O(N)),但是对任意位置的插入和删除为常量时间 示例1:对cst...

1.序列容器

STL序列容器有

  • vector<T>  提供对变长序列的随机访问,插入和删除操作时间均为分摊常量
  • deque<T>  提供对变长序列的随机访问,插入和删除操作时间均为分摊常量
  • list<T>  提供对变长序列的线性访问(O(N)),但是对任意位置的插入和删除为常量时间

示例1:对cstring和数组使用STL类属算法reverse

 
 
1 #include < iostream >
2 #include < string .h >
3 #include < cassert >
4 #include < algorithm >
5   using namespace std;
6
7   int main()
8 {
9 cout << " Using reverse algorithm with a string " << endl;
10 string string1 = " mark twain " ;
11 reverse(string1.begin(),string1.end());
12 assert(string1 == " niawt kram " );
13 cout << " --- OK. " << endl;
14
15 cout << " Using reverse algorithm with an array " << endl;
16 char array1[] = " mark twain " ;
17 int N1 = strlen(array1);
18 reverse( & array1[ 0 ], & array1[N1]);
19 assert( string (array1) == " niawt kram " );
20 cout << " --- OK. " << endl;
21 return 0 ;
22 }

示例2:对向量使用STL类属算法reverse

 
 
1 dongjichao@dongjichao: ~/ c$ cat ex02 - 02 .cpp
2 #include < iostream >
3 #include < vector >
4 #include < cstring >
5 #include < cassert >
6 #include < algorithm >
7   using namespace std;
8
9 template < typename Container >
10 Container make( const char s[])
11 {
12 return Container( & s[ 0 ], & s[strlen(s)]);
13 }
14
15   int main()
16 {
17 cout << " Using reverse algorithm with a vector " << endl;
18 vector < char > vector1 = make < vector < char > > ( " mark twain " );
19 reverse(vector1.begin(),vector1.end());
20 assert(vector1 == make < vector < char > > ( " niawt kram " ));
21 cout << " --- OK. " << endl;
22 return 0 ;
23 }

示例3:对list使用STL类属算法reverse

 
 
1 #include < iostream >
2 #include < cassert >
3 #include < list >
4 #include < algorithm >
5 #include < cstring >
6   using namespace std;
7
8 template < typename Container >
9 Container make( const char s[])
10 {
11 return Container( & s[ 0 ], & s[strlen(s)]);
12 }
13
14   int main()
15 {
16 cout << " Demonstracting generic reverse algorithm on a list " << endl;
17 list < char > list1 = make < list < char > > ( " mark twain " );
18 reverse(list1.begin(),list1.end());
19 assert(list1 == make < list < char > > ( " niawt kram " ));
20 cout << " --- OK. " << endl;
21 return 0 ;
22 }

2.有序关联容器

有序关联容器有4类

  • set<Key>  支持唯一的键并提供对键本身的快速检索
  • multi<Key>  支持可重复的键,并提供对键本身的快速检索
  • map<Key,T>  支持唯一的键并提供对另一个基于键的类似T的快速检索
  • multimap<Key,T>  支持可重复的键并提供对另一个基于键的类似T的快速检索

示例4:演示STL映射

 
 
1 #include < iostream >
2 #include < map >
3 #include < string >
4   using namespace std;
5
6   int main()
7 {
8 map < string , long > directory;
9 directory[ " Bogart " ] = 1234567 ;
10 directory[ " Bacall " ] = 9876543 ;
11 directory[ " Cagney " ] = 3459876 ;
12 // And son on
13 // Read name;
14   string name;
15 while (cin >> name)
16 if (directory.find(name) != directory.end())
17 cout << " The phone number for " << name << " is " << directory[name] << " \n " ;
18 else
19 cout << " Sorry, no listing for " << name << " \n " ;
20 return 0 ;
21 }

编译,运行,输入一个名称如 Bogart,会给出对应的序号

$ ./ex02-04
Bogart
The phone number for Bogart is 1234567
^Z

相关文章
|
4月前
|
Web App开发 前端开发 JavaScript
前端新利器:CSS容器查询——让组件真正“自适应
前端新利器:CSS容器查询——让组件真正“自适应
332 83
|
8月前
|
前端开发 API 开发者
harmonyOS基础- 快速弄懂HarmonyOS ArkTs基础组件、布局容器(前端视角篇)
本文由黑臂麒麟(6年前端经验)撰写,介绍ArkTS开发中的常用基础组件与布局组件。基础组件包括Text、Image、Button等,支持样式设置如字体颜色、大小和加粗等,并可通过Resource资源引用统一管理样式。布局组件涵盖Column、Row、List、Grid和Tabs等,支持灵活的主轴与交叉轴对齐方式、分割线设置及滚动事件监听。同时,Tabs组件可实现自定义样式与页签切换功能。内容结合代码示例,适合初学者快速上手ArkTS开发。参考华为开发者联盟官网基础课程。
674 75
harmonyOS基础- 快速弄懂HarmonyOS ArkTs基础组件、布局容器(前端视角篇)
|
9月前
|
存储 缓存 C++
C++ 容器全面剖析:掌握 STL 的奥秘,从入门到高效编程
C++ 标准模板库(STL)提供了一组功能强大的容器类,用于存储和操作数据集合。不同的容器具有独特的特性和应用场景,因此选择合适的容器对于程序的性能和代码的可读性至关重要。对于刚接触 C++ 的开发者来说,了解这些容器的基础知识以及它们的特点是迈向高效编程的重要一步。本文将详细介绍 C++ 常用的容器,包括序列容器(`std::vector`、`std::array`、`std::list`、`std::deque`)、关联容器(`std::set`、`std::map`)和无序容器(`std::unordered_set`、`std::unordered_map`),全面解析它们的特点、用法
C++ 容器全面剖析:掌握 STL 的奥秘,从入门到高效编程
|
存储 搜索推荐 C++
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器2
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器
222 2
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器2
|
存储 C++ 容器
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器1
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器
226 5
|
存储 编译器 C++
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
222 2
|
缓存 开发者 Docker
Dockerfile是Docker容器化过程中的核心组件,它允许开发者以一种可重复、可移植的方式自动化地构建Docker镜像
【8月更文挑战第19天】Dockerfile是构建Docker镜像的脚本文件,含一系列指令定义镜像构建步骤。每条大写指令后跟至少一个参数,按序执行,每执行一条指令即生成新的镜像层。常用指令包括:FROM指定基础镜像;RUN执行构建命令;EXPOSE开放端口;CMD指定容器启动行为等。优化策略涉及减少镜像层数、选择轻量基础镜像、利用缓存及清理冗余文件。示例:基于Python应用的Dockerfile包括设置工作目录、复制文件、安装依赖等步骤。掌握Dockerfile有助于高效自动化构建镜像,加速应用部署。
151 1
|
前端开发 JavaScript 数据处理
React 中展示组件和容器组件
【8月更文挑战第31天】
355 0
|
域名解析 Kubernetes 负载均衡
在K8S中,外部访问容器服务,比如说提供了一个域名,链路怎么走?数据经过哪些组件?
在K8S中,外部访问容器服务,比如说提供了一个域名,链路怎么走?数据经过哪些组件?
|
安全 编译器 容器
C++STL容器和智能指针
C++STL容器和智能指针