首页 > 编程语言 >C++好用的特性以及STL

C++好用的特性以及STL

时间:2024-08-22 19:48:48浏览次数:10  
标签:返回 map cout STL 元素 C++ 好用

C++中基于范围的for循环

程序的基本结构包括三种:顺序结构,选择结构(也称分支结构)和循环结构(也称 程序的基本控制结构包括三种:顺序结构、选择结 重复结构)。循环结构的实现方法比较多,除了使用 while()、 do while()和for()循环之外,C++11还提供了一种称为基于范围(Rane- based)的for循环。其基本格式如下:

 for(变量声明:表达式) {
   语句序列;
 }

一些例子:

int a[]={1, 2, 3, 4, 5};
for (int x : a)
  cout << x << " "; //输出1 2 3 4 5
string s="xueruhao";
for (char &x: s) {
  x -= 32;
}
cout << s << endl;//输出XUERUHAO

STL map

map是STL的一个关联容器,以键值对存储的数据,其类型可以自己定义,每个关键字在map中只能出现一次,关键字不能修改,值可以修改。map内部有序(自动排序,单词时按照字母序排序),查找时间复杂度为O(logn)。

定义:

map<数据类型,数据类型> mp;
函数名 功能
map.insert()或按照数组直接赋值 插入
map.find() 查找一个元素
map.clear() 清空
map.erase() 删除一个元素
map.size() map的长度大小
map.begin() 返回指向map头部的迭代器
map.end() 返回指向map末尾的迭代器
map.rbegin() 返回一个指向map尾部的逆向迭代器
map.rend() 返回一个指向map头部的逆向迭代器
map.empty() map为空时返回true
swap() 交换两个map,两个map中所有元素都交换

STL set

set就是集合的意思,集合的特点就是不会出现重复的内容。一般用来作查重或去重操作。

定义

set<数据类型> s;

用法和map类似,多的竞赛也用不到

STL优先队列

priority_queue<int>Q;//默认最大堆
Q.top();//返回最大堆的堆顶元素(不删除)。
Q.pop();//删除堆顶元素
Q.size();//返回队列中的元素的个数。
Q.empty();//队列为空时 返回 true

STL二分

//对非递减 A 序列 输出元素数组下标
cout<<upper_bound(A,A+n,3)-A<<endl;
//查找>x 的最小数组下标
cout<<lower_bound(A,A+n,3)-A<<endl;
//查找>=x 的最小数组下标
//upper_bound-lower_bound 就是 x 元素的个数
cout<<find(A,A+n,3)-A<<endl;
//查找=x 的元素的数组下标
cout<<upper_bound(B, B+n,7,greater<int>())-B<<endl;
//查找<x 的最小数组下标
cout<<lower_bound(B, B+n,7,greater<int>())-B<<endl;
//查找<=x 的最小数组下标
cout<<find(B,B+n,7)-B<<endl;
//查找=x 的元素的数组下标

标签:返回,map,cout,STL,元素,C++,好用
From: https://www.cnblogs.com/xueruhao/p/18373899

相关文章

  • 从零开始学习C++之变量
    变量没啥好讲的,讲下类型和格式得了。变量类型:int:整数类型;范围大约为\(-2147000000\sim2147000000\)。longlong:长整型;范围大约是\(-2^{63}\sim2^{63}-1\)。unsignedint/longlong:不包括负数,整数范围扩大一倍。double:小数类型(比float进度高),大约能包含\(1......
  • C++异常处理详解
    目录一、异常处理的基本概念1.1例外类型1.2异常处理流程二、C++异常处理的语法2.1抛出异常2.2捕获异常三、示例代码示例:简单的除法操作3.1代码解析四、注意事项五、小结        异常处理是程序的一种控制结构,用于处理在程序执行期间可能出现的错误......
  • 从零开始学习C++之循环
    本文讲解C++中循环的使用。C++中较常用的两种循环为for循环和while循环。for循环for循环主要用于实现两个区间中间的枚举。例如:从\(1\sim100\)中输出所有数就能使用for循环解决。这是for循环标准格式:/*for(变量类型变量名=左区间;循环退出条件(如:i<=......
  • C++ const的用法详解
    前言const在C/C++中是十分重要的,如果单纯理解为"常量"那么你的格局就小了,今天在这里给大家介绍一下const在C++中具体详细的用法。一const的基本概念const名叫常量限定符,用来限定特定变量,以通知编译器该变量是不可修改的。习惯性的使用const,可以避免在函数中对某些不应修改的......
  • [小白入门]一文掌握C/C++中数组和循环结合(堵车问题、红绿灯问题)
    1.堵车问题假如现在给定从出发地到目的地的道路条数和每条路上的车辆情况为:第一条路第二条路第三条路第四条路第五条路第六条路90705278108120且车辆数大于50为轻度拥堵;大于70为中度拥堵;大于90为重度拥堵。那么如何存储这些数据?---很显然要用数......
  • C++常用容器
    目录一、引言二、顺序容器概览  1.vector——动态数组  2.deque——双端队列  3.list——双向链表三、关联容器探秘  1.set——集合  2.map——映射四、总结        在探讨C++容器的丰富世界时,我们将深入分析几种核心容器,并探讨它......
  • 南京理工大学C++程序设计基础期末考试上机测试题组3答案详细解析
    角谷步数(100分)任意的正整数,比如5,我们从它开始,如下规则计算:如果是偶数,则除以2,如果是奇数,则乘以3再加1。如此循环,最终必会得到“1”!比如5的处理过程是:5168421一个正整数经过多少步才能变成1,称为角谷步数。对于5而言,步数也是5;对于1,步数为0。输入一个整数n(1<n<300)......
  • C++小程序:1.0 混合运算小程序(原创)
    自编小程序,还有一些困惑,不太稳定,欢迎私信或评论,提供建议、bug和不足之处。代码:#include<bits/stdc++.h>#include<windows.h>#include<ctime>usingnamespacestd;voidclean();stringnandu();voidxunhuan();voidshuju();longlonga,b,c,cishu,xuanze,cf_a,cf_......
  • Visual C++ 下载安装教程(微软常用运行库合集|dll报错必装)
    前言MicrosoftVisualC++Redistributable(简称MSVC,VB/VC,系统运行库)是Windows操作系统应用程序的基础类型库组件。此版VisualC++运行库组件合集(微软常用运行库合集)由国内封装爱好者@Dreamcast打包而成,整合VisualC++组件安装包运行库所有版本,提供图形安装界面,可自选更新VC++版......
  • [C++]括号使用小技巧
    1.前言  对于一般的赋值语法,例如inta=0;  但你知道吗?使用括号可以同时写很多类型,编译器一般默认括号内最后一个类型为赋值类型,例如//编译器会选择最后一位进行赋值inta=(100,200,300,0);  此时,a的值就是0。2.改变函数返回值  有如下三个函数,返回值类型分别......