| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 第九周知识总结 -> 正文阅读 |
|
[C++知识库]第九周知识总结 |
一、双指针 严格的来说,双指针只能说是是算法中的一种技巧。 双指针指的是在遍历的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针)的指针进行扫描,从而达到题目的要求。 1.对撞指针就是将数组最左侧的元素定义为左指针(L),将数组最右侧的元素定义为右指针(R),然后两头向中间遍历数组。一般指针每次移动一个位置,结束条件为左指针与右指针逆向(L>R); 大致框架:
2.快慢指针一般将慢指针初始值定为数组第一个元素每次向后移动一个位置,快指针一般初始值为第二个元素每次向后移动两个位置;结束条件:快慢指针重合或快指针到达数组最后一个位置。 注意:要判断快指针是否达到最后位置,否则可能会陷入死循环; 大致框架:
二、STL容器中常见函数的用法 1.vector(使用时添加#<vector>头文件) 简单来说vector是一个可以根据需要自动变长的数组 ? (1)定义:vector<typename> name; ? ? ? ? vector<typename> arrayname[arraysize]; ? ? ? ? //arrayname[0]~arrayname[arraysize-1]都有一个vector容器 ? ? ? ? vector<vector<typename>> name;? ? ? ? ? //相当于行和列都可自动变长的二维数组 ? (2)vector容器内的访问可以直接用name[0]等下表访问 ? ? ? ? ? 也可用迭代器访问: ? ? ? ? ? ?vector<typename>::iterator it; //此时可以通过*it访问vector中的元素 ? (3)vector中的常用函数 ? ? ? ?begin()? ? ? ? ? //取vector容器首地址 ? ? ? ?end()? ? ? ? ? ? ?//取vector容器中的尾元素后一个地址 ? ? ? ?push_back()? //在vector末尾添加一个元素? ? ? ? 用法:vectorName.push_back(); ? ? ? ?pop_back()? ?//删除vector末尾元素? ? ? ? ? ? ? ? ? ? 用法:vectorName.pop_back(); ? ? ? ?size()? ? ? ? ? ? //获取vector的长度? ? ? ? ? ? ? ? ? ? ? ? 用法:vectorName.size(); ? ? ? ?insert? ? ? ? ? ? //在vector容器任意位置添加元素? 用法:vectorName.insert(begin()+x,add); ? ? ? ?clear()? ? ? ? ? //清空vector容器中的元素? ? ? ? ? ? ? 用法:vectorName.clear() ? ? ? ?erase()? ? ? ? ?//删除vector容器中某个位置或区间的元素 2.set(使用时添加#include<set>头文件) 翻译为集合,有自动去重并且按升序排列的功能 (1).set容器的定义使用方法即常见函数使用与vector基本相同,但是不同的是set容器只能通过迭代? ? ? ? ?器访问不能通过下标访问 (2).set中find函数的用法: ? ? ?vectorName.find(value)返回的是set中对应value位置的迭代器即地址 例:set<int>::iterator? ? it =??vectorName.find(value); ? ? printf("%d",*it); 3.map(使用时添加#include<map>头文件) ? ?翻译为映射,例:a[0]=29,a[4]=22;即该数组就是0>29,4>22的映射,但是数组只能用于int>int型的映? ? ?射,而map可以用于任意两种类型的映射,而且map也会基于键的值升序排列 ?(1).定义:map<typename1,typename2> mapname; ?(2)? map可以通过下标访问,但map中的键是唯一的,当输入已存在的键时会将原来的值覆盖; 例:map<char,int> name0; ? ? map['c']=20; ? ? map['c']=30; ? ? printf("%d",map['c']); 输出结果为30 map也可用迭代器访问,map可以使用it->first来访问键,it->second来访问值; 三.结构体 大致语法结构 int ID; string name; ? ? ? struct teacher{? ? ? ? ? //可以在结构体中添加结构体 ? ? ? ? ? ? ? ? string?name; ? ? ? ? ? ? ? ? int age; ? ? ? ? ? ? ? }name1 }name2; 赋值: name2.ID = 19; name2.name1.age = 18; 结构体数组,就是在数组中每一项都是一个结构体. 定义: struct name{ ? ? ? ? ? ? ? ? ? ? ?int age; ? ? ? ? ? ? ? ? ? ? ?int size; }name2[length]; sort比较排序函数,有三个参数前两个为需要排序的区间,最后一个为排序所用的函数,可以不给 例: struct stu{?? ? ? ? ? ? ? ? ? int age; ? ? ? ? ? ? ? }name1[10]; bool cmp(stu a,stu,b) { return a.age?>b.age};//从大到小排序 sort(stu,stu+10,cmp); floor(),ceil(),round()分别对应向下取整,向上取整,四舍五入所用的函数 注意:floor()与ceil()返回的是double型数据, 例题: 洛谷T211372
|
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/23 22:32:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |