C++nbsp;STLnbsp;nbsp;速成

2024-06-19 17:58
文章标签 c++ 速成 nbsp stlnbsp

本文主要是介绍C++nbsp;STLnbsp;nbsp;速成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

STL 之模板

可以将两个函数合并

定义函数模板:

程序一

C++ <wbr>STL <wbr> <wbr>速成

程序二

 

 C++ <wbr>STL <wbr> <wbr>速成

STL概述:

   容器:可容纳各种数据类型的数据结构

         vector  list  deque  set  map  stack  queue   

   共有的成员函数  empty(   size(  begin(  end( )

   rbegin(  最后一个元素的迭代器。

   rend(    第一个元素前面的位置的迭代器

   erase(   clear( )

   迭代器:可访问容器中的元素的特殊指针

   算法:用来操作容器中元素的函数模板

   函数对象:是一个类似函数的对象,可像函数一样调用  

STLvector

     

说明:实际上就是动态数组,但比数组灵活 ,能够自动增加以容纳新的元素。

初始化:vector v;

           Vector v2(n,i);

方法:访问  cout<<v[i];

            迭代器访问;

       插入:Push_back () 在尾部插入元素;

             Insert  在任意地方插入 insert(iterator it,T t);   insert(v.begin+10,10);

       删除: pop_back();   删除最后一个元素

               Erase()删除指定区域或位置的一段区间的元素

              Clear ()删除所有元素

      向量大小:size()

                 resize()

      排序  sort(v.begin( ),v.end( ));

程序:

C++ <wbr>STL <wbr> <wbr>速成



 

STLList

说明:是一个双向链表  双向访问链表中的结点

创建: list  table 

       List table(10)

   List table (10,1);

插入:push_back( )

      Push_front( )

      Insert( iterator it,T t)

删除:remove (T elem) 去重   pop_front(    pop_back(  erase( iterator it)  clear( )

遍历:  for(it=talbe.begin();it!=table.end();it++)  //前向遍历   

        For(it=table.rbegin();it!=table.rend();it++)  //后向遍历

  小心:table.end()里是不存元素的

排序: table.sort( )

剔除连续重复的元素: unique

重组链表:splice

链表的逆置:reverse( )

合并:table1.merge(table2);

查找:it=find(table.begin(),table.end(),100);

 

例题:约瑟夫环

     C++ <wbr>STL <wbr> <wbr>速成

STLSet

1, 介绍:

主要特性就是存放不相同元素的容器

一般用于查找大数据中的某一元素,或者是插入不相同的元素

将插入数据生成一棵平衡二叉树(AVL)。

查找一般用 set 容器。(尤其是大数据)比向量vector 快的多

红黑树  查找高效,统计性能好于平衡二叉树。

STL  set容器使用的是红黑树。

2, 使用:

申明:sets;     set s

自定义自己的比较规则

set 对象名

3, 方法:

(1) Insert (): 将元素插入到集合中。

Pair  insert(const value_type &x); 返回值为pair<</font>迭代器位置,是否成功>

Pair: 

pair a(10,A);  //表示a中有两个类型值

(2) Erase(): 删除元素

(3) 遍历:for(it=s.begin( );it!=s.end( );it++)

(4) Find()  :查找

(5) Swap 交换两个集合中的元素。

C++ <wbr>STL <wbr> <wbr>速成

 

STLmap

1, 介绍:映造容器中节点元素由key(键,排序)和value构成。效率 0(nlogn)

2, 使用: mapchar>m

        m.clear()  //清空容器

        m.find(xx)!=m.end();  //查找

3, 方法:(1) insert:与数组辅助类似  m[10]=a m[key]=value 

        Typedef pair mypair;

        m.insert(mypair(1,a));

        或者:m.insert(pair(1,a)); 

        (2) clear()  erase()  删除

例题:

题目描述

Julius Caesar 生活在充满危险和阴谋的年代。为了生存,他首次发明了密码,用于军队的消息传递。

假 设你是Caesar 军团中的一名军官,需要把Caesar 发送的消息破译出来、并提供给你的将军。消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第5个字母替换(例如:消息原文中的每个字母A都 分别替换成字母FV替换成A,W替换成B…),其他字符不 变,并且消息原文的所有字母都是大写的。

密码字母:

原文字母:U

输入

最多不超过100个数据集组成。每个数据集由3部分组成:

起始行:START

密码消息:由1200个字符组成一行,表示Caesar发出的一条消息

结束行:END

在最后一个数据集之后,是另一行:ENDOFINPUT

输出

每个数据集对应一行,是Caesar 的原始消息。 

 C++ <wbr>STL <wbr> <wbr>速成

STLstack queue 

不支持迭代器

STLstring 

t 将串st连接成一个新串

t t更新s

== t 判断st是否相等

!= t 判断st是否不等

t     判断s是否小于t(按字典顺序比较)

<= t 判断s是否小于或等于(按字典顺序比较)

t    判断s是否大于(按字典顺序比较)

>= t 判断s是否大于或等于(按字典顺序比较)

s[i] 访问串中下标为i的字符


这篇关于C++nbsp;STLnbsp;nbsp;速成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1075740

相关文章

C++中unordered_set哈希集合的实现

《C++中unordered_set哈希集合的实现》std::unordered_set是C++标准库中的无序关联容器,基于哈希表实现,具有元素唯一性和无序性特点,本文就来详细的介绍一下unorder... 目录一、概述二、头文件与命名空间三、常用方法与示例1. 构造与析构2. 迭代器与遍历3. 容量相关4

C++中悬垂引用(Dangling Reference) 的实现

《C++中悬垂引用(DanglingReference)的实现》C++中的悬垂引用指引用绑定的对象被销毁后引用仍存在的情况,会导致访问无效内存,下面就来详细的介绍一下产生的原因以及如何避免,感兴趣... 目录悬垂引用的产生原因1. 引用绑定到局部变量,变量超出作用域后销毁2. 引用绑定到动态分配的对象,对象

C++读写word文档(.docx)DuckX库的使用详解

《C++读写word文档(.docx)DuckX库的使用详解》DuckX是C++库,用于创建/编辑.docx文件,支持读取文档、添加段落/片段、编辑表格,解决中文乱码需更改编码方案,进阶功能含文本替换... 目录一、基本用法1. 读取文档3. 添加段落4. 添加片段3. 编辑表格二、进阶用法1. 文本替换2

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

C++右移运算符的一个小坑及解决

《C++右移运算符的一个小坑及解决》文章指出右移运算符处理负数时左侧补1导致死循环,与除法行为不同,强调需注意补码机制以正确统计二进制1的个数... 目录我遇到了这么一个www.chinasem.cn函数由此可以看到也很好理解总结我遇到了这么一个函数template<typename T>unsigned

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

C++ STL-string类底层实现过程

《C++STL-string类底层实现过程》本文实现了一个简易的string类,涵盖动态数组存储、深拷贝机制、迭代器支持、容量调整、字符串修改、运算符重载等功能,模拟标准string核心特性,重点强... 目录实现框架一、默认成员函数1.默认构造函数2.构造函数3.拷贝构造函数(重点)4.赋值运算符重载函数

C++ vector越界问题的完整解决方案

《C++vector越界问题的完整解决方案》在C++开发中,std::vector作为最常用的动态数组容器,其便捷性与性能优势使其成为处理可变长度数据的首选,然而,数组越界访问始终是威胁程序稳定性的... 目录引言一、vector越界的底层原理与危害1.1 越界访问的本质原因1.2 越界访问的实际危害二、基

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c