iterator:迭代器库

发布时间 2023-04-22 16:15:59作者: linux星

#include <iterator>
using namespace std;
// 输入迭代器,用于读取容器中的元素
istream_iterator<T> it(cin); // 从标准输入流(cin)中读取T类型的数据
// 输出迭代器,用于向容器中写入元素
ostream_iterator<T> it(cout, " "); // 将T类型的数据以空格分隔符输出到标准输出流(cout)中
// 正向迭代器,用于遍历容器中的元素,只支持++操作符
forward_iterator<T> it;
// 双向迭代器,支持++和--操作符
bidirectional_iterator<T> it;
// 随机访问迭代器,支持++、--、+、-、[]和<、<=、>、>=操作符
random_access_iterator<T> it;

#include <iterator>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> v = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};
// 使用迭代器遍历vector
for (auto it = v.begin(); it != v.end(); ++it) {
    cout << *it << " ";
}
// 使用输入迭代器从标准输入流中读取数据
istream_iterator<int> input_it(cin);
int n1 = *input_it;
++input_it;
int n2 = *input_it;
// 使用输出迭代器向标准输出流中输出数据
ostream_iterator<int> output_it(cout, " ");
*output_it = 123;
++output_it;
*output_it = 456;
// 使用迭代器进行排序
sort(v.begin(), v.end());
// 使用迭代器进行查找
auto it = find(v.begin(), v.end(), 5); // 查找元素5在vector中的位置
if (it != v.end()) {
    cout << "5 found in vector" << endl;
} else {
    cout << "5 not found in vector" << endl;
}

#include <iterator>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
vector<string> names = {"Alice", "Bob", "Charlie"};
// 使用迭代器进行转换
transform(names.begin(), names.end(), names.begin(), [](const string& name) {
    return "Hello, " + name + "!";
}); // 将names中的每个字符串转换为"Hello, name!"的格式
// 使用迭代器进行逆序遍历
for_each(names.rbegin(), names.rend(), [](const string& name) {
    cout << name << endl;
}); // 逆序输出names中的每个字符串