我似乎无法找到任何标准算法来证明默认构造a的要求ForwardIterator.
是否有任何实际原因,或者我可以安全地忽略它?
它可以为标准算法和客户端用户简化这些迭代器的使用。
例如(请记住,这RandomAccessIterator是 的子类型ForwardIterator):
template <class RandomAccessIterator>
void sort ( RandomAccessIterator first, RandomAccessIterator last )
{
RandomAccessIterator pivot, i, j;
//do your sorting algorithm
}
Run Code Online (Sandbox Code Playgroud)
如果它们不是默认可构造的,则需要将它们分配给first或last仅用于编译。
您不需要将其设置为默认值。这种未初始化的迭代器的任何使用都是未定义的。并不是说添加一些检查是不明智的,尤其是在调试版本中。
不,你不应该抛出默认构造函数。它在技术上是一致的,但许多算法会意外失败。
| 归档时间: |
|
| 查看次数: |
384 次 |
| 最近记录: |