作者:火柴没头518_410 | 来源:互联网 | 2023-02-06 15:06
在en.cppreference的这一页上,有一些可能实现词典比较的例子.这是基本的:
template
bool lexicographical_compare(InputIt1 first1, InputIt1 last1,
InputIt2 first2, InputIt2 last2)
{
for ( ; (first1 != last1) && (first2 != last2); first1++, (void) first2++ ) {
if (*first1 <*first2) return true;
if (*first2 <*first1) return false;
}
return (first1 == last1) && (first2 != last2);
}
类似于IIRC的行(void)some_argument;
通常用于抑制有关未使用参数的编译器警告.但是在这个函数中,使用了包括first2在内的所有参数 - 那么(void) first2++
在for语句中写入的重点是什么?
在InputIt1重载的情况下,它是一些语法解决方法operator,
吗?
1> Alan Stokes..:
它确保使用内置的逗号运算符 - 以防万一有用户定义的重载执行意外操作.void
类型的值永远不能传递给函数,因此这里不能选择这样的重载.
想象一下,如果存在这个功能会发生什么:
void operator , (InputIt1 const &, InputIt2 const &) { launch_missiles(); }
编辑:这实际上是在相关的cppreference讨论页面上提到的.