2024.03.12蓝桥云课笔记

本文介绍了C++标准库中用于查找和排序的几个关键函数,如min和max函数,min_element,max_element,nth_element以及二分查找的binary_search,lower_bound和upper_bound。同时提及了如何检查字符的大小写。通过实例展示了这些函数在实际问题中的应用。

最值查找

min和max函数

min(a,b)

max(a,b)

min({a,b,c,d})

max({a,b,c,d})

时间复杂度为O(n)

min_element与max_element

min_element(st,ed):返回地址[st,ed)中最小的那个值的地址(迭代器),传入参数为两个地址或迭代器

max_element(st,ed):返回地址[st,ed)中最大的那个值的地址(迭代器),传入参数为两个地址或迭代器

例:

vector<int> v= {24,9,1,5};

cout<<*min_element(v.begin(),v.end())<<endl;
nth_element

进行部分排序,返回值为void

传入参数为三个地址或者迭代器,第二个参数位置的元素将处于正确位置,其他元素随意,但左小右大。

例:

vector<int> v ={5,8,2,89,1,90,29};

nth_element(v.begin(),v.begin()+3,v.end());

for(auto &i :v)cout<<i<<' ';

例题:1.成绩分析 - 蓝桥云课 (lanqiao.cn)

题解:

#include <bits/stdc++.h>
using namespace std;
const int N=1e4+9;
int a[N];
int main()
{
  int n;
  
  cin>>n;
  for(int i=1;i<=n;++i)
  {
    cin>>a[i];
  }
  int max=*max_element(a+1,a+1+n);
  int min=*min_element(a+1,a+1+n);
  cout<<max<<endl;
  cout<<min<<endl;
  long long sum=0;
  for(int j=1;j<=n;j++){
    sum+=a[j];
  }
  cout<< fixed <<setprecision(2)<<1.0*sum/n<<endl;
  return 0;
}

二分查找

二分查找的前提

只能对单调递增获单调递减的数组进行操作

binary_search函数

通过二分查找算法来确定是否存在目标元素,返回值为bool

#include<bits/stdc++.h>
using namespace std;
int main()
{
    
    vector<int>v={2,6,1,8,10};
    int target = 5;
    bool found = binary_search(v.begin(),v.end(),target);
    if(found)
    {
        cout<<“存在”<<target;
    }
    else{
        cout<<"不存在"<<target;
    }
    return 0;
}
lower_bound和upper_bound

前提:数组必须为非降序,如果在非升序的数组中使用,可以通过修改比较函数实现(和sort类似)

lower_bound(st,ed,x):返回地址[st,ed)中第一个大于等于x的元素的地址

upper_bound(st,ed,x):返回地址[st,ed)中第一个大于x的元素的地址

#include<bits/stdc++.h>
using namespace std;
int main(){
    ios:sync_with_stdio(0),cin.tie(0),cout.tie(0);
    vector<int>v={5,8,1,5,13,89};
    sort(v.begin(),v.end());
    for(auto &i:v)
        cout<<i<<' ';
    cout<<endl;
    //找到数组中第一个大于等于8的元素的位置
    cout<<(lower_bound(v.begin(),v.end(),8)-v.begin())<<'\n';
    return 0;
}

例题:1.二分查找数组元素 - 蓝桥云课 (lanqiao.cn)

题解:

#include <bits/stdc++.h>
using namespace std;
int main()
{
  ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
      int target=0;
    cin>>target;
  int data[200];
  for(int i = 0 ; i < 200 ; i++)
  {
    data[i] = 4 * i + 6;
  }
  cout<<(lower_bound(data,data+200,target)-data)<<'\n';
  return 0;
}

大小写转换

islower/issupper函数

#include<cctype>

用于检查一个char字符是否为小写或者是大写字母,函数的返回值为bool类型。

tolower/toupper函数

tolower(A)->a

tolower(char ch)可以将ch转换成小写字母,如果不是大写字母不操作

toupper(char ch)可以将ch转换成大写字母,如果不是小写字母不操作

<think>首先,用户的问题是关于“在蓝桥云课中使用vi编辑器的方法”。他引用了几个引用:[1]、[2]、[3],这些引用提供了相关信息。 回顾引用内容: - 引用[1]:讨论Vim(从vi衍生出来的编辑器),强调其模式切换和键盘操作优势。[^1] - 引用[2]:提到sed编辑器是非交互式的编辑器,与vi/vim不同。[^2] - 引用[3]:在Linux入门课程中,提到more和less命令,并提及vi编辑器。[^3] 用户明确说:“上述引用仅供参考,并不是用户真正的需求”,所以他可能只是想获取蓝桥云课中vi编辑器的使用方法。 用户上一次的问题是在系统级指令要求下生成的,但这次是直接问题:"我想查找在蓝桥云课中使用vi编辑器的方法 请问蓝桥云课中vi编辑器的使用方法"。所以,我需要根据引用内容来回答。 关键点:用户提到了“蓝桥云课”,所以我应该聚焦在蓝桥云课平台上如何使用vi编辑器。引用[1]和[3]都来自蓝桥云课内容,具体是关于Vim和vi的介绍。 从引用[1]:它描述了Vim的基本概念——模式切换和键盘操作优势。这对初学者很重要。 从引用[3]:它提到vi编辑器在less命令中的使用,但更强调more和less命令本身。 用户需求是“蓝桥云课中vi编辑器的使用方法”。蓝桥云课可能是一个在线学习平台,提供课程如“Vim快速入门”(引用[1]线索)。 因此,我的回答应该: 1. 基于引用内容,总结vi编辑器在蓝桥云课中的使用方法。 2. 结构清晰,逐步解释。 3. 使用中文回答。 4. 遵守系统级指令:行内数学表达式用$...$,独立公式用$$...$$如果适用(但这里可能不涉及数学,所以可能不需要)。 5. 生成相关问题。 6. 引用的段落末尾添加引用标识。 回答结构: - 引言:简要概述vi编辑器在蓝桥云课中的位置。 - 核心解释:解释vi编辑器的基础用法,基于引用[1],包括模式切换(命令模式、插入模式等)、基本命令(如进入插入模式、保存退出)。 - 参考具体课程:提到蓝桥云课的课程名称,如“Vim快速入门”。 - 生成相关问题。 最终回答应以用户可见层格式呈现:结构清晰,可靠。 提炼关键信息: - vi编辑器是文本编辑器,常用于Linux。 - 引用[1]:Vim有模式切换(命令模式、插入模式等)。初学者容易混淆。 - 基本用法:在命令模式下按'i'进入插入模式编辑文本;按'Esc'返回命令模式;在命令模式下输入':wq'保存并退出。 - 相关课程:蓝桥云课的“Vim快速入门”课程。 生成相关问题: 1. 如何在蓝桥云课中访问Vim课程? 2. Vim的常用命令有哪些? 3. 如何在蓝桥云课环境中练习vi编辑器? 确保回答真实可靠:基于提供的引用,不要虚构。 </think>### 蓝桥云课中vi编辑器的使用方法 vi编辑器(或其增强版Vim)在蓝桥云课中是Linux/UNIX环境下的核心文本编辑工具,常用于命令行操作。根据引用内容,蓝桥云课提供了专门的课程(如“Vim快速入门”)来帮助用户掌握vi编辑器。下面我将逐步解释其基本使用方法,重点基于蓝桥云课的资源。 #### 1. **理解vi编辑器的模式切换** - vi编辑器采用独特的键盘驱动模式,避免了鼠标操作,从而提高效率。初学者常混淆的模式包括: - **命令模式(默认模式)**:启动vi后自动进入,用于执行编辑器命令(如移动光标、删除行)。 - **插入模式**:用于输入或修改文本内容。从命令模式按 `i` 键进入。 - **末行模式**:在命令模式下按 `:` 键进入,用于执行保存、退出等高级命令。 - 例如,在蓝桥云课的环境中,打开一个文件后,你可以通过键盘快速切换模式,无需菜单或组合键[^1]。 #### 2. **基本操作步骤(基于蓝桥云课实践)** - **步骤1: 启动vi编辑器** 在蓝桥云课的Linux终端中,输入命令打开或创建文件: ```bash vi 文件名 # 例如:vi example.txt ``` 系统进入命令模式。 - **步骤2: 切换到插入模式编辑内容** 在命令模式下,按 `i` 键进入插入模式。此时,屏幕底部显示 `-- INSERT --`,你就可以输入或修改文本了[^1]。 - 常用插入命令:`i`(光标前插入)、`a`(光标后插入)、`o`(新行插入)。 - **步骤3: 返回命令模式并执行操作** 按 `Esc` 键退出插入模式,返回到命令模式。在此模式下: - 移动光标:使用 `h`(左)、`j`(下)、`k`(上)、`l`(右)键。 - 删除内容:`dd`(删除整行)、`x`(删除单个字符)。 - 复制粘贴:`yy`(复制行)、`p`(粘贴)。 - **步骤4: 保存并退出文件** 在命令模式下,按 `:` 进入末行模式,然后输入: - `:w` 保存文件。 - `:q` 退出编辑器(如果未修改)。 - `:wq` 保存并退出。 - 强制操作:如遇到问题,使用 `:q!` 强制退出不保存[^1][^3]。 #### 3. **蓝桥云课的学习资源** - 蓝桥云课的“Vim快速入门”课程(引用[1])专门针对初学者,解释了模式切换的优势和实践练习。 - 在“Linux入门”课程中(引用[3]),vi编辑器被集成到文件操作教程中,例如使用 `less` 命令时提及vi的兼容性,适合边学边练。 - 提示:在蓝桥云课环境中,你可以直接在终端模拟器实操这些命令,无需额外安装。 #### 4. **常见问题解决** - **初学者困惑**:模式切换容易出错。建议先练习基本命令(如 `i` 和 `Esc`),逐步进阶到复杂操作[^1]。 - **环境问题**:确保在蓝桥云课的Linux实验环境中操作,避免权限错误(如使用 `sudo` 编辑系统文件)。 通过蓝桥云课的课程,你可以系统学习vi编辑器,提升命令行效率。实践中如有疑问,参考课程文档或社区支持[^1][^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值