我在试图理解创建另一个向量的子向量的行为。
例如,这段代码:https://godbolt.org/z/PYG34vnTr有一个2元素向量vec1
。我想创建第一个元素的向量。为了让它工作,我不得不使用:用途:
std::vector<int> vec2 = {vec1.begin(), vec1.begin() + 1};
我在试着理解为什么要这么做。原因是,我在做一个递归循环,在每次迭代中将向量减半。公式是:
std::vector<int> vec2 = {vec1.begin(), vec1.begin() + (vec1.size()-1)/2};
适用于除vec1
为2元素向量的迭代之外的所有迭代。
我应该使用什么替代代码?
1条答案
按热度按时间rta7y2nd1#
结束迭代器需要比你想要的最后一个元素多一个元素,这意味着必须删除
-1
。插图:
输出量:
Demo
一个非复制的版本,只使用迭代器可以看起来像这样,并给出相同的结果:
Demo