自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C++ algorithm.h 頭文件的常見算法的使用

開發(fā)
algorithm.h頭文件是C++標(biāo)準(zhǔn)庫的一部分,它提供了大量的算法模板,可以用于解決各種復(fù)雜的計算問題。

C++標(biāo)準(zhǔn)庫中的頭文件是一個功能強(qiáng)大且廣泛使用的工具包,提供了各種常見的算法函數(shù),幫助開發(fā)者高效地處理數(shù)據(jù)。

algorithm.h頭文件是C++標(biāo)準(zhǔn)庫的一部分,它提供了大量的算法模板,可以用于解決各種復(fù)雜的計算問題。這些算法包括排序、搜索、合并、轉(zhuǎn)換等,它們可以幫助我們更高效地處理數(shù)據(jù),提高程序的性能。

1. std::sort

std::sort 用于對范圍內(nèi)的元素進(jìn)行排序。

#include <algorithm>
#include <vector>
#include <iostream>

int main() {
    std::vector<int> vec = {4, 2, 5, 1, 3};
    std::sort(vec.begin(), vec.end());
    for (int n : vec) {
        std::cout << n << " ";
    }
    return 0;
}

2.std::reverse

std::reverse 用于反轉(zhuǎn)范圍內(nèi)的元素順序。


#include <algorithm>
#include <vector>
#include <iostream>

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};
    std::reverse(vec.begin(), vec.end());
    for (int n : vec) {
        std::cout << n << " ";
    }
    return 0;
}

3.std::find

std::find 在范圍內(nèi)查找第一個等于給定值的元素。

#include <algorithm>
#include <vector>
#include <iostream>

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};
    auto it = std::find(vec.begin(), vec.end(), 3);
    if (it != vec.end()) {
        std::cout << "Element found: " << *it << std::endl;
    } else {
        std::cout << "Element not found" << std::endl;
    }
    return 0;
}

4.std::accumulate

std::accumulate 用于計算范圍內(nèi)元素的累積和(需要頭文件)。

#include <numeric>
#include <vector>
#include <iostream>

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};
    int sum = std::accumulate(vec.begin(), vec.end(), 0);
    std::cout << "Sum: " << sum << std::endl;
    return 0;
}

5.std::count

std::count 用于計算范圍內(nèi)等于給定值的元素個數(shù)。

#include <algorithm>
#include <vector>
#include <iostream>

int main() {
    std::vector<int> vec = {1, 2, 3, 1, 1, 4, 5};
    int count = std::count(vec.begin(), vec.end(), 1);
    std::cout << "Count of 1s: " << count << std::endl;
    return 0;
}

6.std::copy

std::copy 將范圍內(nèi)的元素復(fù)制到另一范圍。

#include <algorithm>
#include <vector>
#include <iostream>

int main() {
    std::vector<int> vec1 = {1, 2, 3, 4, 5};
    std::vector<int> vec2(5);
    std::copy(vec1.begin(), vec1.end(), vec2.begin());
    for (int n : vec2) {
        std::cout << n << " ";
    }
    return 0;
}

7.std::remove

std::remove 移除范圍內(nèi)等于給定值的元素,但不改變?nèi)萜鞔笮 ?/p>

#include <algorithm>
#include <vector>
#include <iostream>

int main() {
    std::vector<int> vec = {1, 2, 3, 1, 4, 1, 5};
    auto new_end = std::remove(vec.begin(), vec.end(), 1);
    vec.erase(new_end, vec.end()); // 可選:刪除多余元素
    for (int n : vec) {
        std::cout << n << " ";
    }
    return 0;
}

8.std::unique

std::unique 用于移除連續(xù)的重復(fù)元素。

#include <algorithm>
#include <vector>
#include <iostream>

int main() {
    std::vector<int> vec = {1, 1, 2, 2, 3, 3, 4, 4, 5};
    auto new_end = std::unique(vec.begin(), vec.end());
    vec.erase(new_end, vec.end()); // 可選:刪除多余元素
    for (int n : vec) {
        std::cout << n << " ";
    }
    return 0;
}

9.std::lower_bound

std::lower_bound 在已排序范圍內(nèi)查找首個不小于給定值的元素。


#include <algorithm>
#include <vector>
#include <iostream>

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};
    auto it = std::lower_bound(vec.begin(), vec.end(), 3);
    if (it != vec.end()) {
        std::cout << "Lower bound: " << *it << std::endl;
    } else {
        std::cout << "Element not found" << std::endl;
    }
    return 0;
}

10.std::upper_bound

std::upper_bound 在已排序范圍內(nèi)查找首個大于給定值的元素。

#include <algorithm>
#include <vector>
#include <iostream>

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};
    auto it = std::upper_bound(vec.begin(), vec.end(), 3);
    if (it != vec.end()) {
        std::cout << "Upper bound: " << *it << std::endl;
    } else {
        std::cout << "Element not found" << std::endl;
    }
    return 0;
}

11.std::equal_range

std::equal_range 在已排序范圍內(nèi)查找等于給定值的子范圍。

#include <algorithm>
#include <vector>
#include <iostream>

int main() {
    std::vector<int> vec = {1, 2, 3, 3, 3, 4, 5};
    auto range = std::equal_range(vec.begin(), vec.end(), 3);
    std::cout << "Range of 3s: ";
    for (auto it = range.first; it != range.second; ++it) {
        std::cout << *it << " ";
    }
    return 0;
}

12.std::merge

std::merge 將兩個已排序范圍合并為一個有序范圍。

#include <algorithm>
#include <vector>
#include <iostream>

int main() {
    std::vector<int> vec1 = {1, 3, 5};
    std::vector<int> vec2 = {2, 4, 6};
    std::vector<int> result(6);
    std::merge(vec1.begin(), vec1.end(), vec2.begin(), vec2.end(), result.begin());
    for (int n : result) {
        std::cout << n << " ";
    }
    return 0;
}

13.std::transform

std::transform 對范圍內(nèi)的元素應(yīng)用給定的函數(shù),并將結(jié)果存儲到另一范圍。

#include <algorithm>
#include <vector>
#include <iostream>

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};
    std::vector<int> result(5);
    std::transform(vec.begin(), vec.end(), result.begin(), [](int x) { return x * x; });
    for (int n : result) {
        std::cout << n << " ";
    }
    return 0;
}

以上介紹了頭文件中的十三種常見算法,并通過代碼示例展示了它們的使用方法。這些算法極大地簡化了數(shù)據(jù)處理任務(wù),使代碼更簡潔、更高效。

責(zé)任編輯:趙寧寧 來源: AI讓生活更美好
相關(guān)推薦

2024-04-24 10:54:05

C++編程編譯器

2010-01-25 17:55:38

C++頭文件

2011-07-14 22:36:37

C++

2010-02-06 14:48:37

C++頭文件

2010-01-25 18:26:44

CC++頭文件

2010-02-02 13:04:03

C++頭文件

2024-02-21 14:55:19

C++語言編程

2010-01-26 15:51:06

C++變量

2011-07-14 17:45:06

CC++

2023-10-28 16:25:17

濾波C++

2011-06-17 16:09:04

freadfwrite

2011-04-11 17:08:16

階乘算法C++

2024-04-03 12:30:00

C++開發(fā)

2011-05-12 18:14:29

算法

2024-03-04 07:10:00

C++編程代碼

2024-05-27 16:27:22

2023-09-08 00:12:40

2024-10-24 08:04:00

2009-08-27 11:12:04

C# foreach

2024-03-04 00:15:00

C++STL算法
點贊
收藏

51CTO技術(shù)棧公眾號