C++中STL库函数的基本运用】的更多相关文章

学了这么长时间的STL库,现在我觉得是有必要对过去的题目和所遇到的问题做一下整理了,以便于之后更好的展开练习: 一. 为什么要用STL库? 1.简单粗暴(省事). 2.便于解决复杂的问题(在贪心题目中显而易见). 3.使其思路更加广泛,解决问题的角度更多. 二. 怎么用STL库? 1.设身处地的利用某个函数的特点进行解决问题.(下面会进行介绍各个函数的特点) 2.做好第一点就足够了. 三. 各个函数的特点以及适合解决哪些问题? 1. vector: vector的强大之处就在于可以通过它完成建立…
作为C++标准不可缺少的一部分,STL应该是渗透在C++程序的角角落落里的.STL不是实验室里的宠儿,也不是程序员桌上的摆设,她的激动人心并非昙花一现.本教程旨在传播和普及STL的基础知识,若能借此机会为STL的推广做些力所能及的事情,到也是件让人愉快的事情. 初识STL:解答一些疑问 1.1 一个最关心的问题:什么是STL "什么是STL?",假如你对STL还知之甚少,那么我想,你一定很想知道这个问题的答案,坦率地讲,要指望用短短数言将这个问题阐述清楚,也决非易事.因此,如果你在看完…
我们常用到的STL容器有vector.list.deque.map.multimap.set和multiset,它们究竟有何区别,各自的优缺点是什么,为了更好的扬长避短,提高程序性能,在使用之前需要我们了解清楚. verctor vector类似于C语言中的数组,它维护一段连续的内存空间,具有固定的起始地址,因而能非常方便地进行随机存取,即 [] 操作符,但因为它的内存区域是连续的,所以在它中间插入或删除某个元素,需要复制并移动现有的元素.此外,当被插入的内存空间不够时,需要重新申请一块足够大的…
1.c++STL中只有list自带了排序函数: (1).若list中存放的是int类型或者string类型,直接利用sort即可: list <int> list1;           list1.sort();          此时默认为升序,若要使用降序,直接自定义cmp函数即可. (2).若存放的是结构体或其他指针类型,需要自己定义比较结构体:           struct student { int num;};           struct node { bool ope…
总结: 在map中插入数据有三种方法: 1.用insert插入pair数据: mapstudent.insert(pair<int,string>(1,"studentone")); 2.用insert插入value_type数据:mapstudent.insert(map<int,string>::value_type(1,"student_one")); 3.用类似数组的方式插入数据:mapstudent[1]="student…
虽然面试的时候,都会叫你不使用c库函数,自己完成某某函数的编写,但是库函数毕竟更让人信赖,我们没有任何理由怀疑库函数而使用自己的版本.不过当做练习,自己还是可以实现一下的.这里记录一下5th c primer附录中的可能用到的库函数. size_t strlen (const char *s)返回字符串中字符的个数,不包括结束空字符(\0). eg: #include <stdio.h> #include <stdlib.h> #include <stdint.h> #…
零.STL目录 1.容器之map 2.容器之vector 3.容器之set 一.前言 关于STL和STL容器的概念参见STL系列第一篇——map(见上).今天介绍第二个成员——vector. 二.用途 vector的本质是数组,但更为灵活,高级.数组在定义时需要确定范围,可能存在浪费内存或者越界两大问题,而可以动态拓展的vector完美解决了这两个问题,它相当于是可以分配拓展的数组.vector支持各种数据类型. 三.构造与功能 1.构造 struct node { int x; char y;…
UPDATE(20190416):写完vector和set之后,发现不少内容全部引导到map上了……于是进行了一定的描述补充与更正. 零.STL目录 1.容器之map 2.容器之vector 3.容器之set 一.前言 鉴于最近不少次都要用到map我却总是出各种bug,于是决定写一篇总结来巩固一下. 这篇文章虽名为STL容器之map,但其实包含了整个STL及其容器的概念与用途,以及诸如vector, set等基本容器的许多常规操作,可以作为一篇STL容器的总领性文章. 二.什么是STL 全称St…
基本参考 https://blog.csdn.net/qq_14898543/article/details/51381642 容器特性: vector:典型的序列容器,C++标准严格要求次容器的实现内存必须是连续的,唯一可以和标准C兼容的stl容器,任意元素的读取.修改具有常数时间复杂度,在序列尾部进行插入.删除是常数时间复杂度,但在序列的头部插入.删除的时间复杂度是O(n),可以在任何位置插入新元素,有随机访问功能,插入删除操作需要考虑. deque(双端队列):序列容器,内存也是连续的,和…
对于next_permutation函数是针对于排列组合问题的库函数,它的排序方式是按照字典的方式排列的·: 如以下代码对于next_permutation函数的初步解释: #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> using namespace std; int main() { //next_permutation()函数是基于algorithm头文…
在编写需要命令行参数的C程序的时候,往往我们需要先解析命令行参数,然后根据这些参数来启动我们的程序. C的库函数中提供了两个函数可以用来帮助我们解析命令行参数:getopt.getopt_long. getopt可以解析短参数,所谓短参数就是指选项前只有一个“-”(如-t),而getopt_long则支持短参数跟长参数(如"--prefix"). getopt函数 #include<unistd.h> int getopt(int argc,char * const arg…
我们常用到的STL容器有vector.list.deque.map.multimap.set和multiset,它们究竟有何区别,各自的优缺点是什么,为了更好的扬长避短,提高程序性能,在使用之前需要我们了解清楚. verctor vector类似于C语言中的数组,它维护一段连续的内存空间,具有固定的起始地址,因而能非常方便地进行随机存取,即 [] 操作符,但因为它的内存区域是连续的,所以在它中间插入或删除某个元素,需要复制并移动现有的元素.此外,当被插入的内存空间不够时,需要重新申请一块足够大的…
目录 目录 1 1. 库函数fflush原型 1 2. FILE结构体 1 3. fflush函数实现 2 4. fclose函数实现 4 附1:强弱函数名 5 附2:属性__visibility__ 6 1. 库函数fflush原型 先瞧瞧fflush的原型: #include <stdio.h> int fflush(FILE *stream); 可看到fflush操作的是FILE,这里的FILE又长什么样?如果参数传入NULL,则对所有已打开的有效. 2. FILE结构体 直接查看源码,…
#include <assert.h> //设定插入点 #include <ctype.h> //字符处理 #include <errno.h> //定义错误码 #include <float.h> //浮点数处理 #include <fstream.h> //文件输入/输出 #include <iomanip.h> //参数化输入/输出 #include <iostream.h> //数据流输入/输出 #include…
1. set(集合)——包含了经过排序了的数据,这些数据的值(value)必须是唯一的. 也就是说输入set容器后得到数据,会去重并排序.    s.insert()插入一个元素    s.begin() s.end()分别返回首尾指针    s.clear() 清空集合   遍历需要利用迭代器set<类型>::iterator 变量名 : 2.stringstream(容器)—— 可以将放入其中的string串按空格分隔成单词(感觉就是一个过滤的) 3.vector(不定长数组)——不需要定…
*容器 (1)顺序容器 vector[顺序表直接访问] depue[前后直接访问] list[双向链表] vector 检索(用operator[ ])速度快 .push_back 在数组的最后添加一个数据 .pop_back 去掉数组的最后一个数据 .at 得到编号位置的数据 .begin 得到数组头的指针 .end 得到数组的最后一个单元+1的指针 .front 得到数组头的引用 .back 得到数组的最后一个单元的引用 .max_size 得到vector最大可以是多大 .capacity…
零.STL目录 1.容器之map 2.容器之vector 3.容器之set 一.前言 继上期的vector之后,我们又迎来了另一个类数组的STL容器——set. 二.用途与特性 set,顾名思义,集合,由数学知识可知,其内部每个元素最多出现一次.同时,系统能够根据元素的值自动进行排序.和set一样,multiset.map和multimap等关联容器均通过红黑树实现.他们均有一个特性——插入删除效率比其他序列容器高,因为所有元素以节点的形式存储,结构和链表类似,大幅提高了效率. 三.功能 构造与…
该vector只能容纳标准库中string类, 直接上代码了,StrVec.h文件内容为: #ifndef STRVEC_H #define STRVEC_H #include<iostream> #include<string> #include<memory> using namespace std; class StrVec{ public: // 默认构造函数 StrVec():elements(nullptr),first_free(nullptr),cap(…
Vector:和c++的vector使用方法类似. Vector<Integer> vec=new Vector<> (); ArrayList:Java.util.ArrayList类是一个动态数组类型,也就是说,ArrayList对象既有数组的特征,也有链表的特征. import java.util.*; public class Main { public static void main(String[] args) { ArrayList<Integer> a…
简单介绍C++ sort函数 这个函数需要STL算法头文件 #include <algorithm> using namespace std; 这个sort( , , )可以带两个参数也可以三个参数 第一个参数是数组的首地址,一般写上数组名就可以,因为数组名是一个指针常量. 第二个参数,首地址加上数组的长度n(代表尾地址的下一地址) 最后一个参数是比较函数的名称(自定义函数cmp),这个比较函数可以不写,即第三个参数可以缺省,这样sort会默认按数组小到大排序. 带两个参数的代码 #inclu…
1.GPIO初始化函数 用法: voidGPIO_Configuration(void) { GPIO_InitTypeDefGPIO_InitStructure;//GPIO状态恢复默认参数 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_标号|GPIO_Pin_标号; //管脚位置定义,标号可以是NONE.ALL.0至15. GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//最高输出速度为50MHz GPIO_Init…
1.GPIO初始化函数 用法: voidGPIO_Configuration(void) { GPIO_InitTypeDefGPIO_InitStructure;//GPIO状态恢复默认参数 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_标号|GPIO_Pin_标号; //管脚位置定义,标号可以是NONE.ALL.0至15. GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//最高输出速度为50MHz GPIO_Init…
画椭圆弧 imagearc($image,$cx,$cy,$width,$height,$angel1,$angel2,$color) 注释:$image 图像资源   $cx  椭圆中心点的水平位置    $cy    椭圆中心点的垂直位置    $width    椭圆狐水平宽度(直径)     $height   椭圆弧垂直高度(直径)   $angel1   起始角度,以x轴正方向为0°. $angel2 为截止角度    $color   弧线的颜色 水平的画单个字符 imagecha…
转载:http://blog.csdn.net/morewindows/article/details/6950881 栈(statck)这种数据结构在计算机中是相当出名的.栈中的数据是先进后出的(First In Last Out, FILO).栈只有一个出口,允许新增元素(只能在栈顶上增加).移出元素(只能移出栈顶元素).取得栈顶元素等操作.在STL中,栈是以别的容器作为底部结构,再将接口改变,使之符合栈的特性就可以了.因此实现非常的方便.下面就给出栈的函数列表和VS2008中栈的源代码,在…
前言 一段程序最容易出错的就是在判断或者是情况分类的边界地方,所以,应该对于许多判断或者是情况分类的边界要格外的注意.下面,就分析下STL中红黑树的迭代器的各种边界情况.(注意:分析中STL使用的版本是SGI STL,由于不同的版本的STL具体实现细节不一样,所以可能会有出入). 一.begin()获取第一个迭代器的自减 begin()函数获取的是一个容器的首迭代器,指向容器中的第一个元素(这里的第一个不一定是指储存顺序(物理)上的第一个,一般是指逻辑上的第一个,在红黑树中是指树中的最左节点).…
转自http://net.pku.edu.cn/~yhf/UsingSTL.htm 三十分钟掌握STL 这是本小人书.原名是<using stl>,不知道是谁写的.不过我倒觉得很有趣,所以化了两个晚上把它翻译出来.我没有对翻译出来的内容校验过.如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它.文中我省略了很多东西.心疼那,浪费我两个晚上. 译者:kary contact:karymay@163.net STL概述 STL的一个重要特点是数据结构和算法的分离.尽管这是个简单的概念,但这种分离确…
这是本小人书.原名是<using stl>,不知道是谁写的.不过我倒觉得很有趣,所以化了两个晚上把它翻译出来.我没有对翻译出来的内容校验过.如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它.文中我省略了很多东西.心疼那,浪费我两个晚上. 译者:kary contact:karymay@163.net STL概述 STL的一个重要特点是数据结构和算法的分离.尽管这是个简单的概念,但这种分离确实使得STL变得非常通用.例如,由于STL的sort()函数是完全通用的,你可以用它来操作几乎任何数据集…
转载自: http://net.pku.edu.cn/~yhf/UsingSTL.htm 这是本小人书.原名是<using stl>,不知道是谁写的.不过我倒觉得很有趣,所以化了两个晚上把它翻译出来.我没有对翻译出来的内容校验过.如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它.文中我省略了很多东西.心疼那,浪费我两个晚上. 译者:kary contact:karymay@163.net STL概述 STL的一个重要特点是数据结构和算法的分离.尽管这是个简单的概念,但这种分离确实使得STL变…
三十分钟掌握STL 这是本小人书.原名是<using stl>,不知道是谁写的.不过我倒觉得很有趣,所以化了两个晚上把它翻译出来.我没有对翻译出来的内容校验过.如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它.文中我省略了很多东西.心疼那,浪费我两个晚上. 译者:kary contact:karymay@163.net STL概述 STL的一个重要特点是数据结构和算法的分离.尽管这是个简单的概念,但这种分离确实使得STL变得非常通用.例如,由于STL的sort()函数是完全通用的,你可以用它…
layout: post title: 侯捷STL学习(十一) date: 2017-07-24 tag: 侯捷STL --- 第三讲 标准库内核分析-算法 标准库算法形式 iterator分类 不同容器iterator类型不同 测试iterator类型 #include <iostream> // std::cout #include <iterator> // std::iterator_traits #include <typeinfo> // typeid na…