boost::next and std::next equivalent?
boost::next and std::next equivalent?
我有一个要求,我想窥探下一个迭代器的位置,看看它是否是容器的末尾。我不能使用std::next
,因为C++11还没有被采用。我可以使用boost::next
作为确切的替代方案吗?感谢
如果它不能按预期工作,我会感到惊讶。如果有疑问,您可以始终使用std::advance
some_container c;
some_container::iterator it;
std::advance(it, 1);
bool b = it == c.end();
一般情况下为否。如果您将它用于迭代器,可能是的(无论如何,这都是假定的用途)。
我之所以说不,通常是因为,如果参数类不是迭代器,那么第二个(默认)参数中的std::next
(iterator_traits<...>
)中会出现替换错误。因此,以前使用boost::next
的东西可能不再使用std::next
了。
例如,我曾经对不是迭代器但定义了operator++
(但没有定义二进制+运算符)的类使用boost::next
。我经常想生成下一个元素,而boost::next
非常适合。
struct myint{
int impl;
myint& operator++(){impl++; return *this;}
}
boost::next
可以使用这个类,但std::next
不能。因此,我必须坚持复制并递增或回退到boost::next
(或者最坏的情况是,为不是迭代器的东西生成iterator_trait
)。
我对std::next
的问题是,第二个自变量(与difference_type
有关)对自变量施加了不必要的限制。但我滥用函数::next
可能是错的。
我刚刚将代码库更新为c++11和最新的boost。我将boost::next更新为std::next(与你想要的相反),没有负面影响。
所以可能的答案是肯定的。
相关文章:
- 对于set上的循环-获取next元素迭代器
- C++ equivalent to Java Map getOrDefault?
- 为什么 std::next 在以空地图开头馈送时卡住
- Equivalent of OpenCv c++ api Vec2f,norm, acos in emgucv csha
- Win32 equivalent of getgid
- 为什么gmp会在这里与"invalid next size"重新定位一起崩溃?
- vfprintf_unlocked() equivalent?
- "fast"或"normal"在"free(): invalid next size (fast)"中是什么意思?
- What is the std::chrono::time_point equivalent of std::numer
- AVX equivalent for _mm_movelh_ps
- python equivalent of std::chrono::steady_clock::now();
- curl_slist->next 永远不会为空,因此当循环卡住时
- C++ Equivalent of Java Map<String, Object>
- std::next 是否检查我们是否已经在容器的末尾?
- TrackPopupMenu equivalent in OS X
- Is strcpy equivalent to strcpy_s
- Clang, std::next, libstdc++ and constexpr-ness
- 错误 C2864:'element::next':只能在类 (STRUCT) 中初始化静态常量整数数据成员
- 在 c++ 程序中调试链表以添加两个数字: 有人可以解释为什么 l3=l3->next;导致错误?
- boost::next and std::next equivalent?