标签:cond assign char print 适配器 less 换算 指针 名称
使用迭代器
```cpp
vector
自定义一个count算法
```cpp
int MyCount(int start, int end, int v) {
int count = 0;
while (start != end) {
if (*start == v) {
++count;
}
++start;
}
return count;
}
```
deque
set(基于树)
cpp // greater函数对象在funcional(预定义函数对象)文件中 set<int, greater<int>> s; s.insert() // 是有这个操作 s.find() s.erase() s.lower_bound(5) // >= 5的迭代器 s.upper_bound(5) // <= 5的迭代器 s.equal_range(5) // 返回pair
pair创建的方式
pair<string, string>("", "");
make_pairt("", "");
string
erase(pos1, pos2)
class Print {
public:
// 重载()
void operator()(const int &v) {
cout << v << " ";
}
};
fill
代码
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class MyPrint {
public:
void operator()(const int &v) {
cout << v << " ";
}
};
void TestForEach() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8};
vector<int> v(arr, arr + sizeof(arr) / sizeof(int));
for_each(v.begin(), v.end(), MyPrint()); // 匿名一元函数对象
}
class MyComp {
public:
bool operator()(const int &a) {
return a > 7;
}
};
void TestFindIf() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8};
vector<int> v(arr, arr + sizeof(arr) / sizeof(int));
vector<int>::iterator pos = find_if(v.begin(), v.end(), MyComp()); // 匿名一元谓语函数对象
if (pos == v.end()) {
cout << "没有找到符合条件的元素" << endl;
return;
}
cout << *pos << endl;
}
class MyTransform {
public:
int operator()(const int &v1, const int &v2) {
return v1 + v2;
}
};
void TestTransform() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8};
vector<int> v1(arr, arr + sizeof(arr) / sizeof(int));
vector<int> v2(v1);
vector<int> v3(5);
transform(v1.begin(), v1.end(), v2.begin(), v3.begin(), MyTransform());
for_each(v3.begin(), v3.end(), MyPrint());
}
class MySort {
public:
bool operator()(const int &a, const int &b) {
return a < b;
}
};
void TestSort() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8};
vector<int> v1(arr, arr + sizeof(arr) / sizeof(int));
cout << v1.size() << endl;
cout << "==============" << endl;
sort(v1.begin(), v1.end(), MySort());
for_each(v1.begin(), v1.end(), MyPrint());
}
int main() {
//TestForEach();
//TestFindIf();
//TestTransform();
TestSort();
return 0;
}
// 注意binary_function的泛型好像不能够传入引用
class MyPrint : public binary_function<int, int, void> {
public:
void operator()(int a, int b) const{
if (a > b) {
cout << a << " ";
}
}
};
使用
for_each(begin, end, bind1st(MyPrint(), 1))
标签:cond assign char print 适配器 less 换算 指针 名称
原文地址:https://www.cnblogs.com/megachen/p/10161159.html