c++ - STL容器: iterating between two iterators

标签 c++ stl iterator

我将值存储在 std::map 中

我在 map 中找到两个值,并且我想在第一个值到最后一个值之间进行迭代 - 但是 <= 运算符没有实现,所以我不能做这样的事情:

    void foobar(const DatedRecordset& recs, const double startstamp, const double endtstamp)
    {
        DatedRecordsetConstIter start_iter = recs.lower_bound(startstamp), end_iter = recs.lower_bound(endtstamp);

        // Can't do this .... (<= not defined)
        //for (DatedRecordsetConstIter cit = start_iter; cit <= end_iter; cit++ )

        / So have to resort to a hack like this:
        for (DatedRecordsetConstIter cit = start_iter; cit != recs.end(); cit++ ) {
            if ((*cit).first <= (*end_iter).first){
               //do something;
            }
            else
               break;
            }
       }
}

是否有更优雅的方式在两个已知迭代器之间进行迭代?

最佳答案

使用!=而不是<=它会做你想做的事。

void foobar(const DatedRecordset& recs, const double startstamp, const double endtstamp)
{
    DatedRecordsetConstIter start_iter = recs.lower_bound(startstamp),
                            end_iter = recs.upper_bound(endtstamp);

    for (DatedRecordsetConstIter cit = start_iter; cit != end_iter; ++cit) {
    }
}

关于c++ - STL容器: iterating between two iterators,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4832692/

相关文章:

c++ - ipv4存储的数据结构+算法——高效的前缀搜索

c++ - std::map 中的内存分配

java - 如何重用使用相同支持迭代器的集合?

c++ - 如何强制链接器使用共享库而不是静态库?

c++ - 从 .txt 文件初始化对象 vector

c++ - unordered_map 中用户定义类型的运算符重载()

c++ - Visual Studio const_iterator 分配错误

c++ - 根据标志在最小堆和最大堆之间切换

python - 操纵数据以进行缩放

swift - 何时在 Swift 中使用序列、迭代器、集合等协议(protocol)