检查迭代器的类型是否reverse_iterator
Check if iterator's type is reverse_iterator
有没有办法检查迭代器作为参数传递给fnc是否reverse_iterator?我可以使用任何迭代器特征函数吗?
用部分专业化编写是微不足道的:
#include <iterator>
#include <type_traits>
template<typename Iter>
struct is_reverse_iterator
: std::false_type { };
template<typename Iter>
struct is_reverse_iterator<std::reverse_iterator<Iter>>
: std::true_type { };
尽管如下所述,但这并不能处理(恕我直言不太可能("反向-反向"迭代器的情况。拔示巴的回答中稍微不那么琐碎的版本正确地处理了这种情况。
我在
生产中使用的一些代码:
#include <iterator>
#include <type_traits>
template<typename I>
struct is_reverse_iterator : std::false_type
{
};
template<typename I>
struct is_reverse_iterator<std::reverse_iterator<I>>
: std::integral_constant<bool, !is_reverse_iterator<I>::value>
{
};
相关文章:
- 错误:未在此范围内声明'reverse'
- 在调试模式下引发C++ "deque iterator not dereferencable"异常
- std::iterator::reference 必须是引用吗?
- 为什么unordered_set<string::iterator>不起作用?
- 造成致命错误:boost/fusion/iterator/equal_to.hpp 没有这样的文件或目录
- Visual accept std::string from std::byte iterator
- 使用to_string、reverse、stoi组合的C++反转编号给出运行时错误实例超出范围
- 什么是"std::set<int,int>::iterator"?
- 从 std::vector 中删除项目时"Iterator not incrementable"
- 如何从 boost::container::vector<std::string>::iterator 访问索引和对象?
- 空集"Out of bound iterator"
- 如何使用set<pair<int,int> >::iterator itrator it迭代set<pair<int,int> >st中的值?
- "How to make a recursive call for palindrom numbers without reverse function in c++?"
- 给定一个类型为 Container:<T>:Iterator 的函数参数,如何为某些类型的 T 实现特定的重载?
- 带升压async_read_some "String iterator not dereferncable"
- C++为什么"deque iterator not dereferencable "
- 错误:与'operator='不匹配(操作数类型为"std::map<int、double>::iterator
- 自动,错误:MAP ITERATOR没有名为“ First”的成员
- set<shared_ptr<T>>::iterator to set<shared_ptr<t const>>::const_iterator
- 标准::复制失败,"cannot seek vector iterator after end"