gpt4 book ai didi

c++ - 迭代 boost::icl::interval_set

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:07:09 26 4
gpt4 key购买 nike

我正在迭代 boost interval_set<unsigned_int> ,我期望每个迭代器都是一个 boost interval ,其值将通过 upper 访问和 lower方法:

boost::icl::interval_set<unsigned int> outages;
// ...
// Insert intervals into the database
for(boost::icl::interval_set<unsigned int>::iterator it =
outages.begin(); it != outages.end(); it++){

DATA_ACQUISITION::InsertInterval(db, it->lower(),
it->upper())
}

但我在两个 lower 都收到错误和 upper methods: Method ... could not be resolved,这表明迭代器没有指向 interval完全没有。

那么,我在这里真正迭代的是什么?如何遍历 intervals插入 interval _设置?

编辑:添加 SSCCE:

#include <boost/icl/interval_set.hpp>
#include <iostream>
#include <vector>


int main() {
boost::icl::interval_set<unsigned int> outages;
for(unsigned int i=0; i<5; i++){
outages += boost::icl::discrete_interval<unsigned int>::closed(
(i*10), ((i*10) + 5));
}

for(boost::icl::interval_set<unsigned int>::iterator it =
outages.begin(); it != outages.end(); it++){

std::cout << it->lower() << boost::icl::upper(*it);
}
return 0;
}

附加信息:

  • 我目前没有在链接器中添加任何库(直到现在,没有错误提示我需要它,而且还没有找到我应该添加到 -l 的哪个参数)
    • 编译器 g++ 4.8.1
    • boost 版本:1.46

最佳答案

至少在最新的 boost 中,这不是问题:

Live On Coliru

#include <boost/icl/interval_set.hpp>
#include <iostream>

int main() {
typedef boost::icl::interval_set<unsigned int> set_t;
typedef set_t::interval_type ival;
set_t outages;

outages.insert(ival::closed(1,1));
outages.insert(ival::open(7,10));
outages.insert(ival::open(8,11));
outages.insert(ival::open(90,120));

for(set_t::iterator it = outages.begin(); it != outages.end(); it++){
std::cout << it->lower() << ", " << it->upper() << "\n";
}
}

打印

1, 1
7, 11
90, 120

如果旧的 bo​​ost 版本不直接支持成员,请尝试免费功能:

std::cout << lower(*it) << ", " << upper(*it) << "\n";

在这里,ADL 找到在 boost::icl 命名空间中声明的重载

关于c++ - 迭代 boost::icl::interval_set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28217179/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com