STL中的常见算法:
-
搜索算法 -
std::find
:#include <algorithm> #include <vector> 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 << "Found 3 at position: " << std::distance(vec.begin(), it); } return 0; }
-
排序算法 -
std::sort
:#include <algorithm> #include <vector> int main() { std::vector<int> vec = {5, 3, 1, 4, 2}; std::sort(vec.begin(), vec.end()); return 0; }
-
归并算法 -
std::merge
:#include <algorithm> #include <vector> int main() { std::vector<int> vec1 = {1, 3, 5}; std::vector<int> vec2 = {2, 4, 6}; std::vector<int> merged(vec1.size() + vec2.size()); std::merge(vec1.begin(), vec1.end(), vec2.begin(), vec2.end(), merged.begin()); return 0; }
-
集合算法 -
std::set_union
:#include <algorithm> #include <vector> int main() { std::vector<int> vec1 = {1, 2, 3}; std::vector<int> vec2 = {3, 4, 5}; std::vector<int> unionVec; std::set_union(vec1.begin(), vec1.end(), vec2.begin(), vec2.end(), std::back_inserter(unionVec)); return 0; }
-
数值算法 -
std::accumulate
:#include <numeric> #include <vector> int main() { std::vector<int> vec = {1, 2, 3, 4, 5}; int sum = std::accumulate(vec.begin(), vec.end(), 0); std::cout << "Sum: " << sum; return 0; }
-
变换算法 -
std::transform
:#include <algorithm> #include <vector> int main() { std::vector<int> vec = {1, 2, 3, 4, 5}; std::vector<int> transformedVec(vec.size()); std::transform(vec.begin(), vec.end(), transformedVec.begin(), [](int x) { return x * x; }); return 0; }
-
排列算法 -
std::next_permutation
:#include <algorithm> #include <vector> int main() { std::vector<int> vec = {1, 2, 3}; if (std::next_permutation(vec.begin(), vec.end())) { for (int i : vec) { std::cout << i << " "; } } return 0; }
-
堆算法 -
std::make_heap
和std::pop_heap
:#include <algorithm> #include <vector> int main() { std::vector<int> vec = {5, 1, 3}; std::make_heap(vec.begin(), vec.end()); // Pop the largest element off the heap std::pop_heap(vec.begin(), vec.end()); vec.pop_back(); return 0; }
-
最小/最大算法 -
std::min_element
:#include <algorithm> #include <vector> int main() { std::vector<int> vec = {5, 1, 3, 4, 2}; auto minIt = std::min_element(vec.begin(), vec.end()); std::cout << "Minimum element: " << *minIt; return 0; }
-
复制和移动算法 -
std::copy
:#include <algorithm> #include <vector> #include <iostream> int main() { std::vector<int> source = {1, 2, 3, 4, 5}; std::vector<int> destination(source.size()); std::copy(source.begin(), source.end(), destination.begin()); return 0; }
-
填充和生成算法 -
std::fill
:#include <algorithm> #include <vector> int main() { std::vector<int> vec(5); std::fill(vec.begin(), vec.end(), 10); return 0; }