C++ STL标准库,rotate函数详解

server/2024/9/23 4:49:26/

rotate翻译

rotate

  • v.(使)旋转,(使)转动;(人员)轮换,轮值;轮种,轮作;定期调换地点(或位置)
  • adj.(植) 辐状的

在这里,C++STL中的rotate指“旋转”意义

rotate简介

rotate

为了理解如何旋转序列,可以将序列中的元素想象成手镯上的珠子。rotate() 操作会导致一个新元素成为开始迭代器所指向的第一个元素。在旋转之后,最后一个元素会在新的第一个元素之前。

rotate深度解析

1) 进行元素范围上的左旋转。

 具体而言, std::rotate 交换范围 [first, last) 中的元素,方式满足元素 n_first 成为新范围的首个元素,而 n_first - 1 成为最后元素。

 此函数的前提条件是 [first, n_first) 和 [n_first, last) 为合法范围。

参数

first-原范围的起始
n_first-应出现在旋转后范围起始的元素
last-原范围的结尾
policy-所用的执行策略。细节见执行策略。

复杂度

与 first 和 last 间的距离成线性。

示例

std::rotate 在许多算法中是常用的构建块。此示例演示插入排序:

#include <bits/stdc++.h>
using namespace std;int main()
{vector<int> v{2, 4, 2, 0, 5, 10, 7, 3, 7, 1}; cout << "before sort:      ";for (int n: v)cout << n << ' ';cout << '\n';// 插入排序for (auto i = v.begin(); i != v.end(); ++i) {rotate(upper_bound(v.begin(), i, *i), i, i+1);}cout << "after sort:       ";for (int n: v)cout << n << ' ';cout << '\n';// 简单地旋转到左侧rotate(v.begin(), v.begin() + 1, v.end());cout << "simple rotate left  : ";for (int n: v)cout << n << ' ';cout << '\n';// 简单地旋转到右侧rotate(v.rbegin(), v.rbegin() + 1, v.rend());cout << "simple rotate right : ";for (int n: v)cout << n << ' ';cout << '\n';}
输出:
before sort:      2 4 2 0 5 10 7 3 7 1 
after sort:       0 1 2 2 3 4 5 7 7 10 
simple rotate left : 1 2 2 3 4 5 7 7 10 0
simple rotate right: 0 1 2 2 3 4 5 7 7 10

http://www.ppmy.cn/server/14099.html

相关文章

Python实现将文件夹下的所有pdf文件合并成一个pdf文件,并用文件夹名字命名

Python实现将文件夹下的所有pdf文件合并成一个pdf文件&#xff0c;并用文件夹名字命名 # -*- coding: utf-8 -*-import os import PyPDF2def merge_pdfs(folder_path):# 获取文件夹名称folder_name os.path.basename(folder_path)# 搜索文件夹内的所有PDF文件pdf_files [f fo…

基于Spring Boot的家具销售电商平台设计与实现

基于Spring Boot的家具销售电商平台设计与实现 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 系统功能界面图&#xff0c;在系统首页可以查看首页…

服务器中毒怎么办?企业数据安全需重视

互联网企业&#xff1a; 广义的互联网企业是指以计算机网络技术为基础&#xff0c;利用网络平台提供服务并因此获得收入的企业。广义的互联网企业可以分为:基础层互联网企业、服务层互联网企业、终端层互联网企业。 狭义的互联网企业是指在互联网上注册域名&#xff0c;建立网…

01-服务与服务间的通信

这里是极简版&#xff0c;仅用作记录 概述 前端和后端可以使用axios等进行http请求 服务和服务之间也是可以进行http请求的spring封装的RestTemplate可以进行请求 用法 使用bean注解进行依赖注入 在需要的地方&#xff0c;自动注入RestTemplate进行服务和服务之间的通信 注…

Nacos和Eureka有什么区别!!!

一致性模型&#xff1a; Eureka&#xff1a;采用的是 AP&#xff08;Availability, Partition Tolerance&#xff09;模型&#xff0c;即在面临网络分区或部分节点故障时优先保证系统的可用性&#xff0c;牺牲一定的数据一致性。Eureka 通过自我保护机制&#xff0c;允许在节点…

《深入解析windows操作系统》第1章读书笔记

1、服务&#xff1a;指操作系统中可以被调用的例程&#xff08;即函数&#xff0c;等价于系统调用&#xff1f;&#xff09;、设备驱动程序或者服务器进程。一些特定术语如下&#xff1a; 1&#xff09;Windows API函数&#xff1a;指Windows API中已经被文档化、可被调用的子例…

allegro输出正反面bom

不是前面两条命令&#xff0c;而是component report

如何求候选码、属性集的闭包

目录 一、基础理论 二、属性集的闭包 三、四类 四、例题 基础理论部分是我的异想天开&#xff0c;可跳过。 一、基础理论 数据库注重于研究关系&#xff0c;谈起关系&#xff0c;那么不得不提起《离散数学》&#xff0c;起初我认为求候选码的过程一定暗合《离散数学》中的…