如何有效地将一系列连续整数插入 std::set?

2022-01-09 00:00:00 integer range insert c++ stdset

在 C++ 中,我有一个 std::set,我想插入一系列连续整数.我怎样才能有效地做到这一点,希望在 O(n) 时间内,其中 n 是范围的长度?

In C++, I have a std::set that I would like to insert a range of consecutive integers. How can I do this efficiently, hopefully in O(n) time where n is the length of the range?

我想我会使用 std::insert 的 inputIterator 版本,但不清楚如何构建输入迭代器.

I'm thinking I'd use the inputIterator version of std::insert, but am unclear on how to build the input iterator.

std::set<int> mySet;

// Insert [34 - 75):
mySet.insert(inputIteratorTo34, inputIteratorTo75);

我如何创建输入迭代器,这将是 O(n) 的范围大小吗?

How can I create the input iterator and will this be O(n) on the range size?

推荐答案

根据aksham提供的提示,我看到答案是:

Taking the hint provided by aksham, I see the answer is:

#include <boost/iterator/counting_iterator.hpp>

std::set<int> mySet;

// Insert [34 - 75):
mySet.insert(boost::counting_iterator<int>(34),
             boost::counting_iterator<int>(75));

相关文章