Logo
Section 1 / 5

简介

本章将介绍C++17所支持的各种计算算法。

导入

简介

本章将介绍C++17所支持的各种计算算法。

标准模板库(STL)包含大量可与容器及其元素一起使用的算法。由于这些算法是函数模板,因此它们独立于容器中元素的类型。容器与算法之间的连接桥梁是迭代器。只要我们的自定义容器支持 STL 容器的接口,就可以将这些算法应用于我们的容器。

1// algorithm.cpp 2#include <iostream> 3#include <algorithm> 4#include <deque> 5#include <list> 6#include <string> 7#include <vector> 8 9template <typename Cont, typename T> 10void doTheSame(Cont cont, T t){ 11 for (const auto c: cont) std::cout << c << " "; 12 std::cout << std::endl; 13 std::cout << cont.size() << std::endl; 14 std::reverse(cont.begin(), cont.end()); 15 for (const auto c: cont) std::cout << c << " "; 16 std::cout << std::endl; 17 std::reverse(cont.begin(), cont.end()); 18 for (const auto c: cont) std::cout << c << " "; 19 std::cout << std::endl; 20 auto It = std::find(cont.begin(), cont.end(), t); 21 std::reverse(It, cont.end()); 22 for (const auto c: cont) std::cout << c << " "; 23} 24 25int main(){ 26 std::vector<int> myVec{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 27 std::deque<std::string> myDeq({"A", "B", "C", "D", "E", "F", "G", "H", "I"}); 28 std::list<char> myList({'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'}); 29 30 doTheSame(myVec, 5); 31 std::cout << "\n\n"; 32 // 1 2 3 4 5 6 7 8 9 10 33 // 10 34 // 10 9 8 7 6 5 4 3 2 1 35 // 1 2 3 4 5 6 7 8 9 10 36 // 1 2 3 4 10 9 8 7 6 5 37 38 doTheSame(myDeq, "D"); 39 std::cout << "\n\n"; 40 // A B C D E F G H I 41 // 9 42 // I H G F E D C B A 43 // A B C D E F G H I 44 // A B C I H G F E D 45 46 doTheSame(myList, 'd'); 47 std::cout << "\n\n"; 48 // a b c d e f g h 49 // 8 50 // h g f e d c b a 51 // a b c d e f g h 52 // a b c h g f e d 53 54 return 0; 55}

更多信息


在下一课中,我们将讨论运行算法所遵循的规则和约定。

1.2.2 无序关联容器

约定