最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++?標(biāo)準(zhǔn)庫(kù)中的reverse?函數(shù)使用示例

 更新時(shí)間:2026年01月12日 09:49:27   作者:白落提fy  
本文介紹了C++標(biāo)準(zhǔn)庫(kù)中的reverse函數(shù),包括其原型、參數(shù)、使用示例、復(fù)雜度分析、注意事項(xiàng)及相關(guān)函數(shù),本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧

一.函數(shù)原型

template <class BidirectionalIterator>
void reverse(BidirectionalIterator first, BidirectionalIterator last);

二.函數(shù)參數(shù)

first:指向要反轉(zhuǎn)序列起始位置的迭代器
last:指向要反轉(zhuǎn)序列結(jié)束位置的下一個(gè)位置的迭代器(左閉右開區(qū)間 [first, last))

三.使用示例

1.反轉(zhuǎn)數(shù)組

#include <iostream>
#include <algorithm>
int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int n = sizeof(arr) / sizeof(arr[0]);
    std::reverse(arr, arr + n);
    for (int i = 0; i < n; i++) {
        std::cout << arr[i] << " ";  // 輸出: 5 4 3 2 1
    }
    return 0;
}

2.反轉(zhuǎn)vector

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
    vector<int> vec = {1, 2, 3, 4, 5};
    reverse(vec.begin(), vec.end());
    for (int num : vec) {
        cout << num << " ";  // 輸出: 5 4 3 2 1
    }
    return 0;
}

3.反轉(zhuǎn)string

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main() {
    string str = "Hello, World!";
    reverse(str.begin(), str.end());
    cout << str << endl;  // 輸出: !dlroW ,olleH
    return 0;
}

4,反轉(zhuǎn)部分元素

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
    vector<int> vec = {1, 2, 3, 4, 5, 6, 7, 8};
    // 只反轉(zhuǎn)中間部分元素 [2, 3, 4, 5, 6] -> [6, 5, 4, 3, 2]
    reverse(vec.begin() + 1, vec.end() - 1);
    for (int num : vec) {
        cout << num << " ";  // 輸出: 1 7 6 5 4 3 2 8
    }
    return 0;
}

四.復(fù)雜度分析

時(shí)間復(fù)雜度:O(n),其中 n 是 last - first,執(zhí)行大約 n/2 次交換
空間復(fù)雜度:O(1),原地操作,不需要額外空間

五.注意事項(xiàng)

  1. reverse 函數(shù)要求迭代器是雙向迭代器(BidirectionalIterator)。
  2. 可以用于所有支持雙向迭代器的容器:vector、deque、list、string、數(shù)組
  3. reverse 會(huì)修改原容器,如果不希望修改原容器,可以使用 reverse_copy

六.相關(guān)函數(shù)

1.reverse_copy

reverse函數(shù)不保證穩(wěn)定性(因?yàn)榻粨Q元素可能會(huì)改變相等元素的相對(duì)順序,但通常我們使用reverse時(shí)并不關(guān)心這個(gè),因?yàn)樵刂挡煌?,且即使相同,反轉(zhuǎn)后順序也變了)。
C++標(biāo)準(zhǔn)庫(kù)還提供了reverse_copy函數(shù),它可以將反轉(zhuǎn)的結(jié)果復(fù)制到另一個(gè)序列中,而不改變?cè)蛄小?/p>

  • reverse_copy的函數(shù)原型:
template <class BidirectionalIterator, class OutputIterator>
OutputIterator reverse_copy(BidirectionalIterator first,
BidirectionalIterator last,
OutputIterator result);
  • 使用示例
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
    vector<int> src = {1, 2, 3, 4, 5};
    vector<int> dst(src.size());
    reverse_copy(src.begin(), src.end(), dst.begin());
    cout << "原序列: ";
    for (int num : src) {
        cout << num << " ";  // 輸出: 1 2 3 4 5
    }
    cout << "\n反轉(zhuǎn)后的副本: ";
    for (int num : dst) {
        cout << num << " ";  // 輸出: 5 4 3 2 1
    }
    return 0;
}

2.自定義反轉(zhuǎn)算法實(shí)現(xiàn)

#include <iostream>
#include <vector>
using namespace std;
// 手動(dòng)實(shí)現(xiàn) reverse 功能
template<typename T>
void my_reverse(T begin, T end) {
    while (begin != end && begin != --end) {
        swap(*begin, *end);
        ++begin;
    }
}
int main() {
    vector<int> vec = {1, 2, 3, 4, 5};
    my_reverse(vec.begin(), vec.end());
    for (int num : vec) {
        cout << num << " ";  // 輸出: 5 4 3 2 1
    }
    return 0;
}

3.與反向迭代器的區(qū)別

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
    vector<int> vec = {1, 2, 3, 4, 5};
    // 使用 reverse 函數(shù)修改原容器
    reverse(vec.begin(), vec.end());
    cout << "使用 reverse 后: ";
    for (int num : vec) {
        cout << num << " ";  // 輸出: 5 4 3 2 1
    }
    cout << endl;
    // 重置 vector
    vec = {1, 2, 3, 4, 5};
    // 使用反向迭代器(不修改原容器,只是反向遍歷)
    cout << "使用反向迭代器遍歷: ";
    for (auto it = vec.rbegin(); it != vec.rend(); ++it) {
        cout << *it << " ";  // 輸出: 5 4 3 2 1
    }
    cout << endl;
    cout << "原容器未被修改: ";
    for (int num : vec) {
        cout << num << " ";  // 輸出: 1 2 3 4 5
    }
    return 0;
}

到此這篇關(guān)于C++ 標(biāo)準(zhǔn)庫(kù)中的reverse 函數(shù)的文章就介紹到這了,更多相關(guān)C++ 標(biāo)準(zhǔn)庫(kù)reverse 函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c++中函數(shù)調(diào)用運(yùn)算符重載的實(shí)現(xiàn)

    c++中函數(shù)調(diào)用運(yùn)算符重載的實(shí)現(xiàn)

    在 C++ 中,函數(shù)調(diào)用運(yùn)算符的重載是一種特殊的運(yùn)算符重載方式,允許自定義類的對(duì)象像函數(shù)一樣被調(diào)用,本文就來(lái)詳細(xì)的介紹一下c++中函數(shù)調(diào)用運(yùn)算符重載的實(shí)現(xiàn),感興趣的可以了解一下
    2026-02-02
  • C++快速排序及優(yōu)化方案詳解

    C++快速排序及優(yōu)化方案詳解

    這篇文章主要介紹了C++快速排序及優(yōu)化方案詳解,快速排序是一種常用的排序算法,它通過選擇一個(gè)基準(zhǔn)元素,將數(shù)組分成兩個(gè)子數(shù)組,其中一個(gè)子數(shù)組的所有元素都小于基準(zhǔn)元素,另一個(gè)子數(shù)組的所有元素都大于基準(zhǔn)元素,需要的朋友可以參考下
    2023-10-10
  • 詳解C++異常處理機(jī)制示例介紹

    詳解C++異常處理機(jī)制示例介紹

    任何東西都可以認(rèn)為是異常,錯(cuò)誤只是異常的一種。本文將帶大家了解C++中異常是什么,是如何捕獲和處理的等相關(guān)知識(shí)。文中示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以了解一下
    2022-08-08
  • C++實(shí)現(xiàn)迷宮小游戲

    C++實(shí)現(xiàn)迷宮小游戲

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)迷宮小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 5分鐘內(nèi)了解C語(yǔ)言的指針

    5分鐘內(nèi)了解C語(yǔ)言的指針

    這篇文章主要介紹了5分鐘內(nèi)了解C語(yǔ)言的指針,本文講解了指針、引用和取值、void指針、NULL指針和未初始化指針、指針和數(shù)組等內(nèi)容,需要的朋友可以參考下
    2015-01-01
  • C/C++ 中實(shí)現(xiàn)讓控制臺(tái)暫停的方法

    C/C++ 中實(shí)現(xiàn)讓控制臺(tái)暫停的方法

    這篇文章主要介紹了C/C++ 中實(shí)現(xiàn)讓控制臺(tái)暫停的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • C++二叉搜索樹圖片及代碼詳解

    C++二叉搜索樹圖片及代碼詳解

    在C++編程中二叉堆和二叉搜索樹是兩種常用的數(shù)據(jù)結(jié)構(gòu),它們具有相似之處,但是也有著不同點(diǎn),這篇文章主要介紹了C++二叉搜索樹圖片及代碼詳解的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-11-11
  • QT中幾種常用的排序函數(shù)用法總結(jié)

    QT中幾種常用的排序函數(shù)用法總結(jié)

    Qt是目前最先進(jìn)、最完整的跨平臺(tái)C++開發(fā)工具,下面這篇文章主要給大家介紹了關(guān)于QT中幾種常用的排序函數(shù)用法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • C++ OpenCV實(shí)現(xiàn)圖像去水印功能

    C++ OpenCV實(shí)現(xiàn)圖像去水印功能

    本文將介紹如何使用OpenCV C++ 進(jìn)行簡(jiǎn)單圖像水印去除。我們?cè)诰W(wǎng)上download圖片時(shí),經(jīng)常因?yàn)榘鏅?quán)問題有水印。本案例通過編寫算法進(jìn)行簡(jiǎn)單水印去除。需要的可以參考一下
    2022-01-01
  • 基于C++內(nèi)存分配、函數(shù)調(diào)用與返回值的深入分析

    基于C++內(nèi)存分配、函數(shù)調(diào)用與返回值的深入分析

    本篇文章是對(duì)C++中的內(nèi)存分配、函數(shù)調(diào)用與返回值進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05

最新評(píng)論

军事| 石棉县| 鸡泽县| 永春县| 大同市| 嘉黎县| 苏州市| 平果县| 甘孜县| 咸阳市| 台南市| 哈巴河县| 淮阳县| 淮南市| 碌曲县| 榆林市| 富源县| 凌海市| 南丹县| 蓬安县| 昭通市| 涿州市| 昌宁县| 柘城县| 高雄市| 屏东县| 满洲里市| 尼木县| 阳城县| 和平县| 棋牌| 鹤庆县| 桃江县| 彭阳县| 黑山县| 邛崃市| 麦盖提县| 鄢陵县| 通化县| 栾川县| 惠东县|