我可以只从迭代器访问结尾吗?

时间:2016-09-08 15:27:37

标签: c++ qt iterator

我在QByteArray中有一个迭代器,它被传递给一个函数:

MyData getNext(const QByteArray::const_iterator &it) {
    // calculate N
    if(end_of_array >= it + N)
        // process N bytes
}

我需要知道数组中是否还剩下至少N个字节。我可以从这个传递的迭代器访问数组对象或结尾吗?

2 个答案:

答案 0 :(得分:1)

由于QByteArray::const_iterator const char *来自QByteArray,因此如果没有更多上下文,则无法检索原始end()对象。

由于完全相同的原因,您无法重建\0迭代器,至少在没有更深入了解对象中包含的数据的情况下。例如,如果QByteArray中的数据是以空字符结尾的字符串,则可以查找QByteaArray::end(),例如使用just a typedef。请注意QByteArray将指向超出,因为空终止符是其包含的数据的一部分。

显然最好将const引用传递给&对象以及迭代器(或结束迭代器)。

答案 1 :(得分:0)

-2 API已损坏。你需要修复它来获取一对迭代器:一个范围。没有其他的解决办法。