我想使用 C++std::vector
输入迭代器构造函数来构建一个连续整数数组,如下所示:
std::vector<unsigned> indexes(boost::counting_iterator<unsigned>(0U),
boost::counting_iterator<unsigned>(10000U));
但是,我想知道它的时间复杂度是否与迭代器之间的距离成正比,或者由于重复调整大小以增加向量,它是否可能具有额外的对数分量?换句话说,构造函数是否查看两个迭代器之间的距离?由于构造函数参数不是随机访问迭代器,我不确定距离可以计算吗?
如果它会反复调整大小,是否有比这更好的解决方案来避免这种情况:
std::vector<unsigned> indexes;
indexes.reserve(10000U);
for (unsigned idx = 0; idx < 10000U; ++idx) {
indexes.push_back(idx);
}