繁体   English   中英

递减迭代器,直到向量的.begin()

[英]Decrementing an iterator until the .begin() of a vector

我需要从迭代器的某个位置向后读取向量,并在字典数组中放入n1个值。

我虽然要进行循环并减少迭代器,但是由于某些原因,我陷入了无限循环。

我认为条件是否存在问题?

//I read all the vSignal vector
while (vSignalIt != vSignal.end()) {

    i = 0;
    vSignalIt2 = vSignalIt;

    //Filling the dictionnary array
    if (vSignalIt != vSignal.begin()) {
        do 
        {
            dictionnary[i] = *vSignalIt2;
            vSignalIt2--;
            i++;
        } while (vSignalIt2 != vSignal.begin() || i < (uint8_t)n1);
    }

    //Do something with the value of dictionnary and increase vSignalIt to advance forward in the vSignal vector

}

更改“ ||” 至 '&&'

您为语句使用了错误的条件检查器。 当前是:

while (vSignalIt2 != vSignal.begin() || i < (uint8_t)n1);

但是应该是:

while (vSignalIt2 != vSignal.begin() && i < (uint8_t)n1); //<-- && means 'and'

另外,作为建议,您可能应该使用reverse_iterator因为它是为此目的而构建的。

您可能要考虑使用标准算法:

auto vSignalIt = vSignal.rbegin(); // or some other reverse iterator
auto n = std::min(n1, std::distance(vSignalIt, vSignal.rend());
std::copy_n(vSignalIt, n, std::back_inserter(dictionary));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM