1.不修改序列的操作
2.修改序列的操作
3.划分操作
4.排序操作
5.二分搜索操作(在已排序范围上)
6.集合操作(在已排序范围上)
7.堆操作
8.最小/最大操作
9.比较操作
10.排列操作
11.数值运算
#include
#include
#include
using namespace std;
int main()
{
vector<int> ivec{ 1,2,2,4,5,6,7,8,9,10 };
vector<int> v{ 5,6 ,7,8,9,10 };
//判断容器内是否所有元素都满足条件
if (all_of(ivec.begin(), ivec.end(), [](int i) {return i < 20; }))
cout << "容器内所有元素都满足条件" << endl;
//判断容器内是否有元素满足条件
if(any_of(ivec.begin(),ivec.end(),[](int i){return i>9;}))
cout << "容器内有任意一个元素满足条件" << endl;
//判断容器内是否所有的元素都不满足条件
if (none_of(ivec.begin(), ivec.end(), [](int i) {return i > 10; }))
cout << "容器内所有元素都不满足条件" << endl;
//遍历容器内元素
for_each(ivec.begin(), ivec.end(), [](const int& n) { cout << n << " "; });
cout << endl << "返回满足条件的元素个数:" << endl;
cout << count(ivec.begin(), ivec.end(), 5) << endl;
cout << count_if(ivec.begin(), ivec.end(), [](int i) {return i < 4; }) << endl;
cout << "返回一个pair对象,first为第一个不匹配元素的迭代器,second为第一个匹配的元素的迭代器:" << endl;
cout << *mismatch(ivec.begin(), ivec.end(), v.begin(), v.end()).first << endl;
cout << *mismatch(ivec.begin(), ivec.end(), v.begin(), v.end()).second << endl;
cout << "返回满足条件的第一个元素的迭代器:" << endl;
cout << *find(ivec.begin(), ivec.end(), 5) << endl;
cout << *find_if(ivec.begin(), ivec.end(), [](int i) {return i > 5; })<cout << "返回不满足条件的第一个元素的迭代器" << endl;
cout << *find_if_not(ivec.begin(), ivec.end(), [](int i) {return i < 5; }) << endl;
cout << "如果后一个区间是前一个区间的子区间,则返回后一个区间的起始迭代器,否则返回第一个区间的末尾迭代器:" << endl;
cout << *find_end(ivec.begin(), ivec.end(), v.begin(),v.end())<cout << "返回两个区间首个相等元素的迭代器,如果没有则返回第一个区间的末端迭代器:" << endl;
cout << *find_first_of(ivec.begin(), ivec.end(), v.begin(), v.end()) << endl;
cout << "返回首个相邻元素相等的第一个元素的迭代器,如果没有则返回末端迭代器:" << endl;
cout << *adjacent_find(ivec.begin(), ivec.end()) << endl;
cout << "返回第一个相等的元素的迭代器,如果没有则返回第一个区间的末端迭代器:" << endl;
cout << *search(ivec.begin(), ivec.end(), v.begin(), v.end()) << endl;
cout << "返回满足条件(值为2,出现次数为2)的第一个元素的迭代器,如果没有则返回末端迭代器:" << endl;
cout << *search_n(ivec.begin(), ivec.end(), 2, 2) << endl;
}
这里写代码片
#include
#include
#include
using namespace std;
int main()
{
vector<int> ivec{ 3,2,2,4,5,6,7,8,9,10 };
vector<int> v{ 1,5,6,7,4,9 };
vector<int> v2{ 3,8,4,4,3,5,9 };
vector<int> v3{ 5, 6, 4, 3, 2, 6, 7, 9, 3 };
//默认升序
cout << "是否按升序排序:" << is_sorted(ivec.begin(), ivec.end()) << endl;
cout <<"输出最大的已排序子范围的第一个元素:"<< *is_sorted_until(v.begin(), v.end()) << endl;
cout << "将容器按降序排序:";
sort(v.begin(), v.end(), [](int x, int y) {return x > y; });
for (int& i : v)
cout << i << " ";
cout << endl;
cout << "将容器前五个元素按降序排序,后面的元素按默认升序排序:";
partial_sort(ivec.begin(), ivec.begin() + 5, ivec.end(), [](int x, int y) {return x > y; });
for (int& i : ivec)
cout << i << " ";
cout << endl;
cout << "将第一个区间按升序排序,然后复制给后一个区间:";
partial_sort_copy(ivec.begin(), ivec.end(), v.begin(), v.end());
for (int& i : v)
cout << i << " ";
cout << endl;
cout << "将容器按降序排序,同时保持相等元素之间的顺序:";
stable_sort(v2.begin(), v2.end());
for (int& i : v2)
cout << i << " ";
cout << endl;
nth_element(v3.begin(), v3.begin()+3, v3.end());
for (int& i : v3)
cout << i << " ";
cout << endl;
}
#include
#include
#include
using namespace std;
int main()
{
vector<int> ivec{ 3,2,2,4,5,6,7,8,9,10 };
sort(ivec.begin(), ivec.end());
cout << "返回指向第一个不小于给定值的元素的迭代器:";
cout<<*lower_bound(ivec.begin(), ivec.end(), 5)<cout << "返回指向第一个大于给定值的元素的迭代器:";
cout << *upper_bound(ivec.begin(), ivec.end(), 5) << endl;
cout << "判断一个给定值是否在区间内:";
cout << binary_search(ivec.begin(), ivec.end(), 5) << endl;
cout << "返回pair对象,first指向第一个不小于给定值的元素,second指向第一个大于给定值的元素,first相当于lower_bound(),second相当于upper_bound:";
cout << *equal_range(ivec.begin(), ivec.end(), 5).first << " ";
cout << *equal_range(ivec.begin(), ivec.end(), 5).second << endl;
}
#include
#include
#include
using namespace std;
int main()
{
vector<int> ivec{ 3,10,2,4,40,6,7,8,11,12 };
vector<int> v{ 1,5,6,7,4,9 };
vector<int> v2{ 3,8,4,4,3,5,9 };
vector<int> v3{ 5, 6, 4, 3, 2, 6, 7, 9, 3 };
make_heap(ivec.begin(), ivec.end());
for (int& i : ivec)
cout << i << ' ';
cout << endl;
//将堆中的最大元素删除,但元素还在容器中
pop_heap(ivec.begin(), ivec.end());
//将存在于容器中,不属于堆的元素添加到堆中去
push_heap(ivec.begin(), ivec.end());
cout << "检查给定的区间是否为一个堆:"<//返回堆中最后一个元素的后一个位置的迭代器
auto heap_end = is_heap_until(ivec.begin(), ivec.end());
for (auto i = ivec.begin(); i != heap_end; ++i)
cout << *i << ' ';
cout << endl;
//将堆进行排序
sort_heap(ivec.begin(), ivec.end());
for (int& i : ivec)
cout << i << ' ';
cout << endl;
}
#include
#include
#include
using namespace std;
int main()
{
vector<int> ivec{ 3,10,2,4,20,6,7,8,11,12 };
cout << "返回两个元素中的较大者:" << *max(ivec.begin(), ivec.end() - 1) << endl;
cout << "返回区间内的最大元素:" << *max_element(ivec.begin(), ivec.end()) << endl;
cout << "返回两个元素中的较小者:" << *min(ivec.begin(), ivec.end() - 1) << endl;
cout << "返回区间内的最小元素:" << *min_element(ivec.begin(), ivec.end()) << endl;
cout << "返回两个元素中的的较小者:" << *minmax(ivec.begin(), ivec.end() - 1).first << endl;
cout << "返回两个元素中的的较大者:" << *minmax(ivec.begin(), ivec.end() - 1).second << endl;
cout << "返回区间内的最小元素:" << *minmax_element(ivec.begin(), ivec.end()).first << endl;
cout << "返回区间内的最大元素:" << *minmax_element(ivec.begin(), ivec.end()).second << endl;
}
#include
#include
#include
using namespace std;
int main()
{
vector<int> ivec{ 3,2,2,4,5,6,7,8,9,10 };
vector<int> v{ 1,5,6,7,4,9 };
cout << "判断两个集合是否相等:" << equal(ivec.begin(), ivec.end(), v.begin(), v.end());
cout << endl << "判断第一个区间按字典顺序是否小于另一个区间:" << lexicographical_compare(ivec.begin(), ivec.end(), v.begin(), v.end());
}
#include
#include
#include
using namespace std;
int main()
{
vector<int> ivec{ 3,10,2,4,20,6,7,8,11,10 };
cout<<"判断一个序列是否为另一个序列的排列组合:"<cout << "按字典顺序产生区间内元素下一个较大的排列组合:" << next_permutation(ivec.begin(), ivec.end()) << endl;
for (int& i : ivec)
cout << i << " ";
cout << endl;
cout << "按字典顺序产生区间内元素下一个较小的排列组合:" << prev_permutation(ivec.begin(), ivec.end()) << endl;
for (int& i : ivec)
cout << i << " ";
cout << endl;
}