STL toán pháp
STL đề cung liễu đại ước 100 cá thật hiện toán pháp đích mô bản hàm sổ, cơ bổn đô bao hàm tại<algorithm>
Chi trung, hoàn hữu nhất bộ phân bao hàm tại<numeric>
Hòa<functional>
.Hoàn bị đích hàm sổ liệt biểu thỉnhTham kiến tham khảo thủ sách,Bài tự tương quan đích khả dĩ tham khảoBài tự nội dung đích đối ứng hiệt diện.
find
:Thuận tự tra trảo.find(v.begin(), v.end(), value)
,Kỳ trungvalue
Vi nhu yếu tra trảo đích trị.reverse
:Phiên chuyển sổ tổ, tự phù xuyến.reverse(v.begin(), v.end())
Hoặcreverse(a + begin, a + end)
.unique
:Khứ trừ dung khí trung tương lân đích trọng phục nguyên tố.unique(ForwardIterator first, ForwardIterator last)
,Phản hồi trị vi chỉ hướngKhứ trọng hậuDung khí kết vĩ đích điệt đại khí, nguyên dung khí đại tiểu bất biến. Dữsort
Kết hợp sử dụng khả dĩ thật hiện hoàn chỉnh dung khí khứ trọng.random_shuffle
:Tùy cơ địa đả loạn sổ tổ.random_shuffle(v.begin(), v.end())
Hoặcrandom_shuffle(v + begin, v + end)
.random_shuffle
Hàm sổ tại tối tân C++ tiêu chuẩn trung dĩ bị di trừrandom_shuffle
Tự C++14 khởi bị khí dụng, C++17 khởi bị di trừ.Tại C++11 dĩ cập canh tân đích tiêu chuẩn trung, nâm khả dĩ sử dụng
shuffle
Hàm sổ đại thế nguyên lai đíchrandom_shuffle
.Sử dụng phương pháp vishuffle(v.begin(), v.end(), rng)
( tối hậu nhất cá tham sổ truyện nhập đích thị sử dụng đích tùy cơ sổ sinh thành khí, nhất bàn tình huống sử dụng dĩ chân tùy cơ sổ sinh thành khírandom_device
Bá chủng đích mai sâm toàn chuyển ngụy tùy cơ sổ sinh thành khímt19937
).1 2 3
// #include <random> std::mt19937rng(std::random_device{}()); std::shuffle(v.begin(),v.end(),rng);
sort
:Bài tự.sort(v.begin(), v.end(), cmp)
Hoặcsort(a + begin, a + end, cmp)
,Kỳ trungend
Thị bài tự đích sổ tổ tối hậu nhất cá nguyên tố đích hậu nhất vị,cmp
Vi tự định nghĩa đích bỉ giác hàm sổ.stable_sort
:Ổn định bài tự, dụng pháp đồngsort()
.nth_element
:Án chỉ định phạm vi tiến hành phân loại, tức trảo xuất tự liệt trung đệ Đại đích nguyên tố, sử kỳ tả biên quân vi tiểu vu tha đích sổ, hữu biên quân vi đại vu tha đích sổ.nth_element(v.begin(), v.begin() + mid, v.end(), cmp)
Hoặcnth_element(a + begin, a + begin + mid, a + end, cmp)
.binary_search
:Nhị phân tra trảo.binary_search(v.begin(), v.end(), value)
,Kỳ trungvalue
Vi nhu yếu tra trảo đích trị.merge
:Tương lưỡng cá ( dĩ bài tự đích ) tự liệtHữu tự hợp tịnhĐáo đệ tam cá tự liệt đíchSáp nhập điệt đại khíThượng.merge(v1.begin(), v1.end(), v2.begin(), v2.end(),back_inserter(v3))
.inplace_merge
:Tương lưỡng cá ( dĩ án tiểu vu vận toán phù bài tự đích ):[first,middle), [middle,last)
Phạm viNguyên địa hợp tịnh vi nhất cá hữu tự tự liệt.inplace_merge(v.begin(), v.begin() + middle, v.end())
.lower_bound
:Tại nhất cá hữu tự tự liệt trung tiến hành nhị phân tra trảo, phản hồi chỉ hướng đệ nhất cáĐại vu đẳng vu Đích nguyên tố đích vị trí đích điệt đại khí. Như quả bất tồn tại giá dạng đích nguyên tố, tắc phản hồi vĩ điệt đại khí.lower_bound(v.begin(),v.end(),x)
.upper_bound
:Tại nhất cá hữu tự tự liệt trung tiến hành nhị phân tra trảo, phản hồi chỉ hướng đệ nhất cáĐại vu Đích nguyên tố đích vị trí đích điệt đại khí. Như quả bất tồn tại giá dạng đích nguyên tố, tắc phản hồi vĩ điệt đại khí.upper_bound(v.begin(),v.end(),x)
.lower_bound
Hòaupper_bound
Đích thời gian phục tạp độTại nhất bàn đích sổ tổ lí, giá lưỡng cá hàm sổ đích thời gian phục tạp độ quân vi
,Đãn tạiset
Đẳng quan liên thức dung khí trung, trực tiếp điều dụnglower_bound(s.begin(),s.end(),val)
Đích thời gian phục tạp độ thị Đích.set
Đẳng quan liên thức dung khí trung dĩ kinh phong trang liễulower_bound
Đẳng hàm sổ ( tượngs.lower_bound(val)
Giá dạng ), giá dạng điều dụng đích thời gian phục tạp độ thị Đích.next_permutation
:Tương đương tiền bài liệt canh cải viToàn bài liệt trung đích hạ nhất cá bài liệt.Như quả đương tiền bài liệt dĩ kinh thịToàn bài liệt trung đích tối hậu nhất cá bài liệt( nguyên tố hoàn toàn tòng đại đáo tiểu bài liệt ), hàm sổ phản hồifalse
Tịnh tương bài liệt canh cải viToàn bài liệt trung đích đệ nhất cá bài liệt( nguyên tố hoàn toàn tòng tiểu đáo đại bài liệt ); phủ tắc, hàm sổ phản hồitrue
.next_permutation(v.begin(), v.end())
Hoặcnext_permutation(v + begin, v + end)
.prev_permutation
:Tương đương tiền bài liệt canh cải viToàn bài liệt trung đích thượng nhất cá bài liệt.Dụng pháp đồngnext_permutation
.partial_sum
:Cầu tiền chuế hòa. Thiết nguyên dung khí vi ,Mục tiêu dung khí vi ,Tắc lệnh .partial_sum(src.begin(), src.end(), back_inserter(dst))
.
Sử dụng dạng lệ
Sử dụng
next_permutation
Sinh thành Đáo Đích toàn bài liệt. Lệ đề:Luogu P1706 toàn bài liệt vấn đềThật hiện
1 2 3 4 5
intN=9,a[]={1,2,3,4,5,6,7,8,9}; do{ for(inti=0;iN;i++)couta[i]""; coutendl; }while(next_permutation(a,a+N));
- Sử dụng
lower_bound
Dữupper_bound
Tra trảo hữu tự sổ tổ Trung tiểu vu ,Đẳng vu ,Đại vu Nguyên tố đích phân giới tuyến.
Thật hiện
1 2 3 4 5
intN=10,a[]={1,1,2,4,5,5,7,7,9,9},x=5; inti=lower_bound(a,a+N,x)-a,j=upper_bound(a,a+N,x)-a; // a[0] ~ a[i - 1] vi tiểu vu x đích nguyên tố, a[i] ~ a[j - 1] vi đẳng vu x đích nguyên tố, // a[j] ~ a[N - 1] vi đại vu x đích nguyên tố couti""jendl;
- Sử dụng
partial_sum
Cầu giải Trung nguyên tố đích tiền chuế hòa, tịnh tồn trữ vu Trung.
Thật hiện
1 2 3 4 5
vectorint>src={1,2,3,4,5},dst; // cầu giải src trung nguyên tố đích tiền chuế hòa, dst[i] = src[0] +... + src[i] // back_inserter hàm sổ tác dụng tại dst dung khí thượng, đề cung nhất cá điệt đại khí partial_sum(src.begin(),src.end(),back_inserter(dst)); for(unsignedinti=0;idst.size();i++)coutdst[i]"";
- Sử dụng
lower_bound
Tra trảo hữu tự sổ tổ Trung tối tiếp cận Đích nguyên tố. Lệ đề:UVa10487 Closest Sums
Thật hiện
1 2 3 4 5 6 7 8 9 10 11 12
intN=10,a[]={1,1,2,4,5,5,8,8,9,9},x=6; // lower_bound tương phản hồi a trung đệ nhất cá đại vu đẳng vu x đích nguyên tố đích địa chỉ, kế toán xuất đích i vi kỳ hạ tiêu inti=lower_bound(a,a+N,x)-a; // tại dĩ hạ lưỡng chủng tình huống hạ, a[i] (a trung đệ nhất cá đại vu đẳng vu x đích nguyên tố ) tức vi đáp án: // 1. a trung tối tiểu đích nguyên tố đô đại vu đẳng vu x; // 2. a trung tồn tại đại vu đẳng vu x đích nguyên tố, thả đệ nhất cá đại vu đẳng vu x đích nguyên tố (a[i]) // tương bỉ vu đệ nhất cá tiểu vu x đích nguyên tố (a[i - 1]) canh tiếp cận x; // phủ tắc, a[i - 1] (a trung đệ nhất cá tiểu vu x đích nguyên tố ) tức vi đáp án if(i==0||(iN&&a[i]-xx-a[i-1])) couta[i]; else couta[i-1];
- Sử dụng
sort
Dữunique
Tra trảo sổ tổ TrungĐệ Tiểu đích trị( chú ý: Trọng phục xuất hiện đích trị cận toán nhất thứ, nhân thử bổn đề bất thị cầu giải đệ Tiểu đích nguyên tố ). Lệ đề:Luogu P1138 đệ k tiểu chỉnh sổ
Thật hiện
1 2 3 4 5
intN=10,a[]={1,3,3,7,2,5,1,2,4,6},k=3; sort(a,a+N); // unique tương phản hồi khứ trọng chi hậu sổ tổ tối hậu nhất cá nguyên tố chi hậu đích địa chỉ, kế toán xuất đích cnt vi khứ trọng hậu sổ tổ đích trường độ intcnt=unique(a,a+N)-a; couta[k-1];
- Sử dụng
Bổn hiệt diện tối cận canh tân:2024/3/27 06:46:12,Canh tân lịch sử
Phát hiện thác ngộ? Tưởng nhất khởi hoàn thiện?Tại GitHub thượng biên tập thử hiệt!
Bổn hiệt diện cống hiến giả:cmpute,StudyingFather,chentingyu.20,Enter-tainer,gi-b716,GoodCoder666,HeRaNO,ImpleLee,Ir1d,Menci,opsiff,ouuan,sbofgayschool,Tiphereth-A,Xeonacid
Bổn hiệt diện đích toàn bộ nội dung tạiCC BY-SA 4.0HòaSATAHiệp nghị chi điều khoản hạ đề cung, phụ gia điều khoản diệc khả năng ứng dụng