在C++中,DRY原则(Don't Repeat Yourself)意味着避免重复代码。要将DRY原则应用于迭代器,可以使用模板和函数重载来实现。以下是一个示例:
#include<iostream>
#include<vector>
#include<algorithm>
template<typename Iterator>
void print_elements(Iterator begin, Iterator end) {
for (Iterator it = begin; it != end; ++it) {
std::cout << *it << " ";
}
std::cout<< std::endl;
}
template<typename Iterator>
void transform_elements(Iterator begin, Iterator end, int value) {
for (Iterator it = begin; it != end; ++it) {
*it = *it * value;
}
}
int main() {
std::vector<int> v = {1, 2, 3, 4, 5};
// 使用普通迭代器
print_elements(v.begin(), v.end());
transform_elements(v.begin(), v.end(), 2);
print_elements(v.begin(), v.end());
// 使用const迭代器
print_elements(v.cbegin(), v.cend());
// 使用反向迭代器
print_elements(v.rbegin(), v.rend());
transform_elements(v.rbegin(), v.rend(), 2);
print_elements(v.rbegin(), v.rend());
// 使用const反向迭代器
print_elements(v.crbegin(), v.crend());
return 0;
}
在这个示例中,我们定义了两个模板函数:print_elements
和transform_elements
。这两个函数可以接受不同类型的迭代器,包括普通迭代器、const迭代器、反向迭代器和const反向迭代器。这样,我们就可以在不重复代码的情况下处理不同类型的迭代器。
注意:这个示例使用了std::vector
作为容器,但是这种方法可以应用于其他容器,如std::list
、std::set
等。
领取专属 10元无门槛券
手把手带您无忧上云