std::vector
C ++入力イテレーターコンストラクターを使用して、次のような連続する整数の配列を作成したいと思います。
std::vector<unsigned> indexes(boost::counting_iterator<unsigned>(0U),
boost::counting_iterator<unsigned>(10000U));
ただし、イテレータ間の距離に比例する時間計算量があるのか、それともベクトルを大きくするためにサイズ変更を繰り返すことで追加の対数成分を持つことができるのか、疑問に思っています。言い換えると、コンストラクターは2つのイテレーター間の距離を調べますか?コンストラクター引数はランダムアクセスイテレーターではないので、距離を計算できるかどうかわかりませんか?
サイズが繰り返し変更される場合、それを回避するためのより良い解決策はありますか?
std::vector<unsigned> indexes;
indexes.reserve(10000U);
for (unsigned idx = 0; idx < 10000U; ++idx) {
indexes.push_back(idx);
}